Skip to content

Commit 0650f85

Browse files
author
FalkWolsky
committed
Enterprise Edition Promotion Pages - introduction.
1 parent 8f15921 commit 0650f85

File tree

9 files changed

+9592
-11967
lines changed

9 files changed

+9592
-11967
lines changed

client/packages/lowcoder/src/i18n/locales/en.ts

Lines changed: 103 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2444,7 +2444,108 @@ export const en = {
24442444
"usageLogAnonymousKNown" : "Anonymous/Known Users",
24452445
"usageLogDevices" : "Device/OS Breakdown",
24462446
"usageLogBrowsers" : "Browser/Layout Engine Breakdown",
2447-
2447+
"premiumFeaturesNotice" : "All Premium Features are avilable in the Enterprise Edition of Lowcoder.",
2448+
"requestLicense" : "Request Enterprise Edition Licenses",
2449+
"requestLicensesBtton" : "Request Enterprise Access",
2450+
"AuditLogsTitle": "Audit Logs",
2451+
"AuditLogsIntroTitle": "Powerful visibility into your workspace activity",
2452+
"AuditLogsIntro1": "Audit Logs enable administrators to track exactly what happens across the entire Lowcoder platform. From user sign-ins to app modifications, every relevant action is captured and stored.",
2453+
"AuditLogsIntro2": "We include detailed metadata such as geolocation, device type, browser, and operating system for each event.",
2454+
"AuditLogsIntro3": "This transparency allows you to monitor activity across all connected environments, providing a robust audit trail to support compliance, security, and operational insight.",
2455+
"AuditLogsEventsTitle": "What events are tracked?",
2456+
"AuditLogsEventsIntro": "The following user actions are logged in real time:",
2457+
"SignIn": "Sign in",
2458+
"Logout": "Logout",
2459+
"ViewApp": "View app",
2460+
"CreateApp": "Create new app",
2461+
"DeleteApp": "Delete app",
2462+
"UpdateApp": "Update app",
2463+
"MoveToFolder": "Move to folder",
2464+
"MoveToTrash": "Move to Trash",
2465+
"RestoreApp": "Restore app",
2466+
"CreateFolder": "Create new folder",
2467+
"DeleteFolder": "Delete folder",
2468+
"UpdateFolder": "Update folder",
2469+
"ExecuteDataQuery": "Execute data query",
2470+
"CreateUserGroup": "Create new user-group",
2471+
"UpdateUserGroup": "Update user-group",
2472+
"DeleteUserGroup": "Delete user-group",
2473+
"AddGroupMember": "Add user-group member",
2474+
"UpdateGroupMemberRole": "Update user-group member's role",
2475+
"LeaveUserGroup": "Leave user-group",
2476+
"RemoveGroupMember": "Remove user-group member",
2477+
"ServerStartup": "Server startup",
2478+
"CreateDataSource": "Create data source",
2479+
"UpdateDataSource": "Update data source",
2480+
"DeleteDataSource": "Delete data source",
2481+
"GrantUpdateDeletePermission": "Grant or update permissions",
2482+
"LibraryQueryActions": "Create / Update / Delete library queries",
2483+
"PublishLibraryQuery": "Publish library query",
2484+
"AuditLogsPreviewTitle": "Preview the Audit Log in action",
2485+
"ScreenshotPlaceholder1": "[ Screenshot 1 Placeholder ]",
2486+
"ScreenshotPlaceholder2": "[ Screenshot 2 Placeholder ]",
2487+
"ScreenshotPlaceholder3": "[ Screenshot 3 Placeholder ]",
2488+
"PricingTitle": "Enterprise Edition Pricing",
2489+
"PricingIntro": "We offer flexible pricing for organizations of any size, tailored to your usage model:",
2490+
"FlatRateTitle": "Option 1: Flat-rate per instance — $169 / month",
2491+
"FlatRateDesc": "An instance is a full Lowcoder environment (metadata database + runtime) that can be independently deployed. This includes:",
2492+
"FlatRatePoint1": "A dedicated MongoDB metadata store",
2493+
"FlatRatePoint2": "One or more app runtimes (\"Api-Service\" and / or \"Node-Service\" containers)",
2494+
"UsagePricingTitle": "Option 2: Usage-based pricing — $0.001 per API Call",
2495+
"UsagePricingDesc": "Each instance can alternatively be licensed based on API usage. We offer prepaid packages:",
2496+
"API100k": "100,000 API Calls — $100",
2497+
"API1M": "1,000,000 API Calls — $1,000",
2498+
"API10M": "10,000,000 API Calls — $10,000",
2499+
"UsageOverrunDesc": "When your API package runs low, we’ll alert you. Once the package is consumed, your instance remains functional but will operate at a reduced speed to prevent abuse and maintain fairness.",
2500+
"UsageTopUpInfo": "You can seamlessly add additional packages anytime to ensure continuous, fast access — no service interruptions.",
2501+
"AppUsageTitle": "App Usage Logs",
2502+
"AppUsageIntroTitle": "Understand how your apps are used",
2503+
"AppUsageIntro1": "App Usage Logs give you deep insights into how your published Lowcoder apps are consumed.",
2504+
"AppUsageIntro2": "This functionality works like a built-in, simplified version of Google Analytics — but fully private and scoped to your Lowcoder instance.",
2505+
"AppUsageIntro3": "Admins can analyze how apps are accessed over time, which ones are most used, and from where users are connecting.",
2506+
2507+
"AppUsageMetricsTitle": "Metrics we track",
2508+
"AppUsageMetricsIntro": "These analytics help you make informed decisions about engagement and platform usage:",
2509+
"MetricActiveUsers": "App Views per day / week / month (based on time filter)",
2510+
"MetricViewsPerApp": "Top 10 Apps",
2511+
"MetricDevices": "Access by device (desktop, tablet, mobile)",
2512+
"MetricBrowsers": "Access by browser and OS",
2513+
"MetricCountries": "Geographic origin of users",
2514+
"AppUsageScreenshotsTitle": "App Usage Analytics in action",
2515+
"AppUsageScreenshot1": "[ App Usage Dashboard Screenshot ]",
2516+
"AppUsageScreenshot2": "[ Per-App Views Chart ]",
2517+
"AppUsageScreenshot3": "[ Geo Distribution Map ]",
2518+
2519+
"BrandingIntroTitle": "Custom Branding & White-Labeling",
2520+
"BrandingIntro1": "With Lowcoders Branding settings, you can elevate product experience for your users by offering fully customizable branding.",
2521+
"BrandingIntro2": "Empower your customers or internal teams to use the platform as if it were their own — logo, colors, fonts, and custom pages included.",
2522+
"BrandingIntro3": "Or you need a fully white-label solution and reinforce your brand identity at every touchpoint.",
2523+
"BrandingColorsIntro1": "You can set your own color scheme to match your corporate identity, including primary UI elements and navigation bars.",
2524+
"BrandingColorsIntro2": "Customize sidebar highlights, header sections, and even text contrast to enhance user experience and accessibility.",
2525+
"BrandingFontsIntro": "Select from curated Google Fonts to make your application truly yours in both style and readability.",
2526+
"BrandingLogosIntro": "Naturally, you also can upload your own logos — rectangular and square — to appear in headers, dashboards, and login screens. Maintain brand consistency across devices and screens.",
2527+
"BrandingPagesIntro1": "Add personalized text and visuals to your error pages, signup flows, and logout messages.",
2528+
"BrandingPagesIntro2": "These touchpoints help deliver a fully branded experience even during unexpected scenarios or account transitions.",
2529+
"BrandingMetaIntro": "Define standard metadata like page title and description to improve your SEO presence and brand messaging.",
2530+
"BrandingHelpLinksIntro": "Add context-sensitive documentation links directly inside the app, providing just-in-time help to your users.",
2531+
"BrandingWhatsNewIntro": "Activate the 'What’s New' section to highlight updates and product announcements in a branded and visible manner.",
2532+
2533+
"EnvironmentsIntroTitle": "Lowcoder Staging",
2534+
"EnvironmentsTitle" : "Multi-Environment Infrastructure",
2535+
"EnvironmentsIntro1": "Lowcoder Environments allow you to separate your Dev, Test, and Prod stages cleanly and safely.",
2536+
"EnvironmentsIntro2": "Enterprise teams benefit from structured release workflows, approval processes, and version stability across stages.",
2537+
"EnvironmentsIntro3": "With the Environments feature, admins can control what gets deployed, when, and where — all from a single interface.",
2538+
2539+
"EnvironmentsUseCasesTitle": "Why Use Environments?",
2540+
"EnvironmentsUseCase1": "Prevent unintended changes in production by testing apps in dedicated Dev or QA environments.",
2541+
"EnvironmentsUseCase2": "Align with corporate IT governance by implementing staged deployments with audit-ready tracking.",
2542+
"EnvironmentsUseCase3": "Empower teams to build confidently with environment-specific configurations, data, and integrations.",
2543+
2544+
"EnvironmentsFeaturesTitle": "What You Get",
2545+
"EnvironmentsFeature1": "Centralized dashboard to view and manage all Lowcoder environments.",
2546+
"EnvironmentsFeature2": "Deployment of applications, data sources, and configurations between environments, directly from the UI.",
2547+
"EnvironmentsFeature3": "Environment-specific access controls and visibility rules.",
2548+
"EnvironmentsFeature5": "Clear separation of concerns for staging, sandbox, and production operations.",
24482549
},
24492550

24502551
"subscription": {
@@ -2941,7 +3042,7 @@ export const en = {
29413042

29423043
"branding": {
29433044
"title": "Branding Settings",
2944-
"general": "General",
3045+
"general": "General Settings",
29453046
"selectWorkspace": "Select Workspace",
29463047
"brandingName": "Branding Name",
29473048
"brandingNamePlaceholder": "Enter branding name",

client/packages/lowcoder/src/pages/setting/appUsage/index.tsx

Lines changed: 85 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,93 @@ import { APP_USAGE_DASHBOARD, APP_USAGE_DETAIL } from "@lowcoder-ee/constants/ro
22
import { Route, Switch } from "react-router-dom";
33
import { AppUsageDashboard } from "./dashboard";
44
import { AppUsageDetail } from "./detail";
5+
import { useSelector } from "react-redux";
6+
import { selectIsLicenseActive } from "redux/selectors/enterpriseSelectors";
7+
import styled from "styled-components";
8+
import { Card, Row, Col, Typography } from "antd";
9+
import { Level1SettingPageContent, Level1SettingPageTitle } from "../styled";
10+
import { trans } from "i18n";
11+
12+
const { Paragraph, Text } = Typography;
13+
14+
const StyledSection = styled.div`
15+
margin-bottom: 32px;
16+
17+
.ant-card {
18+
border-radius: 8px;
19+
}
20+
21+
.image-placeholder {
22+
background: #f5f5f5;
23+
border: 1px dashed #ccc;
24+
height: 200px;
25+
display: flex;
26+
align-items: center;
27+
justify-content: center;
28+
color: #999;
29+
font-size: 14px;
30+
}
31+
`;
532

633
export const AppUsage = () => {
34+
const isLicenseActive = useSelector(selectIsLicenseActive);
35+
return isLicenseActive ? <AppUsageRoutes /> : <AppUsageDoc />;
36+
};
37+
38+
const AppUsageRoutes = () => (
39+
<Switch>
40+
<Route path={APP_USAGE_DASHBOARD} component={AppUsageDashboard} exact />
41+
<Route path={APP_USAGE_DETAIL} component={AppUsageDetail} exact />
42+
</Switch>
43+
);
44+
45+
const AppUsageDoc = () => {
746
return (
8-
<Switch>
9-
<Route path={APP_USAGE_DASHBOARD} component={AppUsageDashboard} exact />
10-
<Route path={APP_USAGE_DETAIL} component={AppUsageDetail} exact />
11-
</Switch>
47+
<Level1SettingPageContent>
48+
<Level1SettingPageTitle>{trans("enterprise.AppUsageTitle")}</Level1SettingPageTitle>
49+
50+
<StyledSection>
51+
<Card title={trans("enterprise.AppUsageIntroTitle")}>
52+
<Paragraph>{trans("enterprise.AppUsageIntro1")}</Paragraph>
53+
<Paragraph>{trans("enterprise.AppUsageIntro2")}</Paragraph>
54+
<Paragraph>{trans("enterprise.AppUsageIntro3")}</Paragraph>
55+
</Card>
56+
</StyledSection>
57+
58+
<StyledSection>
59+
<Card title={trans("enterprise.AppUsageMetricsTitle")}>
60+
<Paragraph>{trans("enterprise.AppUsageMetricsIntro")}</Paragraph>
61+
<ul>
62+
<li>{trans("enterprise.MetricActiveUsers")}</li>
63+
<li>{trans("enterprise.MetricViewsPerApp")}</li>
64+
<li>{trans("enterprise.MetricDevices")}</li>
65+
<li>{trans("enterprise.MetricBrowsers")}</li>
66+
<li>{trans("enterprise.MetricCountries")}</li>
67+
</ul>
68+
</Card>
69+
</StyledSection>
70+
71+
<StyledSection>
72+
<Card title={trans("enterprise.AppUsageScreenshotsTitle")}>
73+
<Row gutter={[24, 24]}>
74+
<Col span={8}>
75+
<div className="image-placeholder">
76+
<Text type="secondary">{trans("enterprise.AppUsageScreenshot1")}</Text>
77+
</div>
78+
</Col>
79+
<Col span={8}>
80+
<div className="image-placeholder">
81+
<Text type="secondary">{trans("enterprise.AppUsageScreenshot2")}</Text>
82+
</div>
83+
</Col>
84+
<Col span={8}>
85+
<div className="image-placeholder">
86+
<Text type="secondary">{trans("enterprise.AppUsageScreenshot3")}</Text>
87+
</div>
88+
</Col>
89+
</Row>
90+
</Card>
91+
</StyledSection>
92+
</Level1SettingPageContent>
1293
);
1394
};

0 commit comments

Comments
 (0)