@@ -58,45 +58,45 @@ ObjectUI is a **Universal Server-Driven UI (SDUI) Engine** built on React + Tail
5858
5959### Monorepo Topology
6060
61- ObjectUI ** PNPM Workspace** ** 25+ **
61+ ObjectUI uses ** PNPM Workspace** management, containing ** 25+ packages ** :
6262
6363```
6464objectui/
6565├── packages/
66- │ ├── types/ # - TypeScript
67- │ ├── core/ # -
68- │ ├── react/ # React
69- │ ├── components/ # UI (Shadcn)
70- │ ├── fields/ #
71- │ ├── layout/ # (Header, Sidebar, AppShell)
72- │ ├── data-objectstack/ # ObjectStack
73- │ ├── cli/ # CLI
74- │ ├── runner/ #
75- │ ├── create-plugin/ #
76- │ ├── vscode-extension/ # VS Code
66+ │ ├── types/ # Protocol layer - Pure TypeScript definitions
67+ │ ├── core/ # Engine layer - Validation, expressions, registries
68+ │ ├── react/ # React binding layer
69+ │ ├── components/ # UI component library (Shadcn)
70+ │ ├── fields/ # Field renderer registry
71+ │ ├── layout/ # Layout components (Header, Sidebar, AppShell)
72+ │ ├── data-objectstack/ # ObjectStack data adapter
73+ │ ├── cli/ # CLI tools
74+ │ ├── runner/ # Application runner
75+ │ ├── create-plugin/ # Plugin scaffolding tool
76+ │ ├── vscode-extension/ # VS Code extension
7777│ │
78- │ └── plugin-*/ # 13
79- │ ├── plugin-form # (react-hook-form)
80- │ ├── plugin-grid #
81- │ ├── plugin-kanban # (dnd-kit)
82- │ ├── plugin-charts # (Recharts)
83- │ ├── plugin-calendar #
84- │ ├── plugin-gantt #
85- │ ├── plugin-timeline #
86- │ ├── plugin-dashboard #
87- │ ├── plugin-map #
88- │ ├── plugin-markdown # Markdown
89- │ ├── plugin-editor # (Monaco)
90- │ ├── plugin-view # ObjectQL
91- │ ├── plugin-chatbot #
92- │ └── plugin-aggrid # AG Grid
78+ │ └── plugin-*/ # 13 data visualization plugins
79+ │ ├── plugin-form # Form plugin (react-hook-form)
80+ │ ├── plugin-grid # Data grid
81+ │ ├── plugin-kanban # Kanban board (dnd-kit)
82+ │ ├── plugin-charts # Charts (Recharts)
83+ │ ├── plugin-calendar # Calendar
84+ │ ├── plugin-gantt # Gantt chart
85+ │ ├── plugin-timeline # Timeline
86+ │ ├── plugin-dashboard # Dashboard
87+ │ ├── plugin-map # Map visualization
88+ │ ├── plugin-markdown # Markdown renderer
89+ │ ├── plugin-editor # Rich text editor (Monaco)
90+ │ ├── plugin-view # ObjectQL integration view
91+ │ ├── plugin-chatbot # Chatbot interface
92+ │ └── plugin-aggrid # AG Grid integration
9393│
9494├── apps/
95- │ ├── console/ #
96- │ └── site/ #
95+ │ ├── console/ # Development console app
96+ │ └── site/ # Documentation website
9797│
98- ├── examples/ #
99- └── docs/ #
98+ ├── examples/ # Example projects
99+ └── docs/ # Documentation
100100```
101101
102102### Dependency Graph
@@ -584,12 +584,12 @@ export interface DatasourceSchema {
584584 cd my-enterprise-app
585585 ```
586586
587- 3 . ** JSON Schema**
587+ 3 . ** Create JSON Schema**
588588 ``` json
589589 // app.schema.json
590590 {
591591 "type" : " app" ,
592- title: ,
592+ " title" : " Enterprise Management System " ,
593593 "routes" : [
594594 {
595595 "path" : " /" ,
@@ -598,13 +598,13 @@ export interface DatasourceSchema {
598598 "widgets" : [
599599 {
600600 "type" : " card" ,
601- title: ,
601+ " title" : " Total Users " ,
602602 "value" : " ${stats.users}" ,
603603 "icon" : " users"
604604 },
605605 {
606606 "type" : " card" ,
607- title: ,
607+ " title" : " Total Revenue " ,
608608 "value" : " ${stats.revenue}" ,
609609 "icon" : " dollar-sign"
610610 }
@@ -617,9 +617,9 @@ export interface DatasourceSchema {
617617 "type" : " crud" ,
618618 "api" : " /api/users" ,
619619 "columns" : [
620- { name: name, label: , type: text },
621- { name: email, label: , type: email },
622- { name: role, label: , type: select,
620+ { " name" : " name" , " label" : " Name " , " type" : " text" },
621+ { " name" : " email" , " label" : " Email " , " type" : " email" },
622+ { " name" : " role" , " label" : " Role " , " type" : " select" ,
623623 "options" : [" admin" , " user" , " guest" ] }
624624 ]
625625 }
@@ -822,29 +822,29 @@ export interface DatasourceSchema {
822822 "type" : " crud" ,
823823 "name" : " users" ,
824824 "api" : " /api/users" ,
825- title: ,
825+ " title" : " User Management " ,
826826 "columns" : [
827- { name: name, label: , type: text, required: true },
828- { name: email, label: , type: email, required: true,
827+ { " name" : " name" , " label" : " Full Name " , " type" : " text" , " required" : true },
828+ { " name" : " email" , " label" : " Email Address " , " type" : " email" , " required" : true ,
829829 "validation" : { "type" : " email" , "unique" : true } },
830- { name: role, label: , type: select,
830+ { " name" : " role" , " label" : " User Role " , " type" : " select" ,
831831 "options" : [
832- { label: , value: admin },
833- { label: , value: user },
834- { label: , value: guest }
832+ { " label" : " Administrator " , " value" : " admin" },
833+ { " label" : " Standard User " , " value" : " user" },
834+ { " label" : " Guest " , " value" : " guest" }
835835 ]
836836 },
837- { name: department, label: , type: lookup,
837+ { " name" : " department" , " label" : " Department " , " type" : " lookup" ,
838838 "lookupObject" : " departments" , "lookupField" : " name" },
839- { name: status, label: , type: select,
839+ { " name" : " status" , " label" : " Account Status " , " type" : " select" ,
840840 "options" : [" active" , " inactive" , " pending" ] },
841- { name: createdAt, label: , type: datetime, readonly: true }
841+ { " name" : " createdAt" , " label" : " Created At " , " type" : " datetime" , " readonly" : true }
842842 ],
843843 "actions" : [
844- { label: , type: create, icon: plus },
845- { label: , type: update, icon: edit },
846- { label: , type: delete, icon: trash,
847- confirm: }
844+ { " label" : " Create User " , " type" : " create" , " icon" : " plus" },
845+ { " label" : " Edit User " , " type" : " update" , " icon" : " edit" },
846+ { " label" : " Delete User " , " type" : " delete" , " icon" : " trash" ,
847+ " confirm" : " Are you sure you want to delete this user? " }
848848 ],
849849 "filters" : [
850850 { "field" : " role" , "operator" : " equals" },
@@ -865,37 +865,37 @@ export interface DatasourceSchema {
865865``` json
866866{
867867 "type" : " dashboard" ,
868- title: ,
868+ " title" : " Executive Dashboard " ,
869869 "layout" : " grid" ,
870870 "columns" : 3 ,
871871 "widgets" : [
872872 {
873873 "type" : " card" ,
874- title: ,
874+ " title" : " Total Users " ,
875875 "value" : " ${stats.totalUsers}" ,
876876 "icon" : " users" ,
877877 "trend" : { "value" : " ${stats.userGrowth}" , "direction" : " up" },
878878 "span" : 1
879879 },
880880 {
881881 "type" : " card" ,
882- title: ,
882+ " title" : " Monthly Revenue " ,
883883 "value" : " ${formatCurrency(stats.monthlyRevenue)}" ,
884884 "icon" : " dollar-sign" ,
885885 "trend" : { "value" : " ${stats.revenueGrowth}" , "direction" : " up" },
886886 "span" : 1
887887 },
888888 {
889889 "type" : " card" ,
890- title: ,
890+ " title" : " Pending Orders " ,
891891 "value" : " ${stats.pendingOrders}" ,
892892 "icon" : " shopping-cart" ,
893893 "trend" : { "value" : " ${stats.orderChange}" , "direction" : " down" },
894894 "span" : 1
895895 },
896896 {
897897 "type" : " chart" ,
898- title: ,
898+ " title" : " Sales Trend " ,
899899 "chartType" : " area" ,
900900 "dataSource" : { "api" : " /api/stats/sales-trend" },
901901 "xField" : " date" ,
@@ -905,7 +905,7 @@ export interface DatasourceSchema {
905905 },
906906 {
907907 "type" : " chart" ,
908- title: ,
908+ " title" : " Product Distribution " ,
909909 "chartType" : " pie" ,
910910 "dataSource" : { "api" : " /api/stats/product-distribution" },
911911 "nameField" : " product" ,
@@ -915,13 +915,13 @@ export interface DatasourceSchema {
915915 },
916916 {
917917 "type" : " grid" ,
918- title: ,
918+ " title" : " Recent Orders " ,
919919 "dataSource" : { "api" : " /api/orders/recent" },
920920 "columns" : [
921- { field: orderNo, label: },
922- { field: customer, label: },
923- { field: amount, label: , type: currency },
924- { field: status, label: , type: badge }
921+ { " field" : " orderNo" , " label" : " Order Number " },
922+ { " field" : " customer" , " label" : " Customer Name " },
923+ { " field" : " amount" , " label" : " Amount " , " type" : " currency" },
924+ { " field" : " status" , " label" : " Status " , " type" : " badge" }
925925 ],
926926 "span" : 3 ,
927927 "pagination" : false
@@ -936,14 +936,14 @@ export interface DatasourceSchema {
936936``` json
937937{
938938 "type" : " kanban" ,
939- title: ,
939+ " title" : " Project Tasks " ,
940940 "dataSource" : { "api" : " /api/tasks" },
941941 "groupByField" : " status" ,
942942 "columns" : [
943- { id: todo, title: , color: gray },
944- { id: in_progress, title: , color: blue },
945- { id: review, title: , color: yellow },
946- { id: done, title: , color: green }
943+ { "id" : " todo" , " title" : " To Do " , " color" : " gray" },
944+ { "id" : " in_progress" , " title" : " In Progress " , " color" : " blue" },
945+ { "id" : " review" , " title" : " Review " , " color" : " yellow" },
946+ { "id" : " done" , " title" : " Done " , " color" : " green" }
947947 ],
948948 "cardTemplate" : {
949949 "title" : " ${task.title}" ,
@@ -953,9 +953,9 @@ export interface DatasourceSchema {
953953 "priority" : " ${task.priority}"
954954 },
955955 "actions" : [
956- { label: , type: create, icon: plus },
957- { label: , type: update, icon: edit },
958- { label: , type: delete, icon: trash }
956+ { " label" : " Create Task " , " type" : " create" , " icon" : " plus" },
957+ { " label" : " Edit Task " , " type" : " update" , " icon" : " edit" },
958+ { " label" : " Delete Task " , " type" : " delete" , " icon" : " trash" }
959959 ],
960960 "onCardMove" : {
961961 "type" : " ajax" ,
@@ -982,14 +982,14 @@ export interface DatasourceSchema {
982982``` json
983983{
984984 "type" : " report-builder" ,
985- title: ,
985+ " title" : " Sales Report Builder " ,
986986 "dataSources" : [" sales" , " products" , " customers" ],
987987 "fields" : [
988- { name: orderDate, label: , type: date },
989- { name: product, label: , type: lookup },
990- { name: customer, label: , type: lookup },
991- { name: amount, label: , type: currency },
992- { name: quantity, label: , type: number }
988+ { " name" : " orderDate" , " label" : " Order Date " , " type" : " date" },
989+ { " name" : " product" , " label" : " Product " , " type" : " lookup" },
990+ { " name" : " customer" , " label" : " Customer " , " type" : " lookup" },
991+ { " name" : " amount" , " label" : " Amount " , " type" : " currency" },
992+ { " name" : " quantity" , " label" : " Quantity " , " type" : " number" }
993993 ],
994994 "aggregations" : [" sum" , " avg" , " count" , " min" , " max" ],
995995 "groupBy" : [" orderDate" , " product" , " customer" ],
@@ -1014,7 +1014,7 @@ export interface DatasourceSchema {
10141014{
10151015 "type" : " crud" ,
10161016 "name" : " permissions" ,
1017- title: ,
1017+ " title" : " Permission Management " ,
10181018 "objectSchema" : {
10191019 "name" : " Task" ,
10201020 "fields" : [... ],
0 commit comments