create-lego-one 2.0.10 → 2.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/dist/index.cjs +179 -0
  2. package/dist/index.cjs.map +1 -1
  3. package/package.json +5 -3
  4. package/template/.cursor/rules/rules.mdc +639 -0
  5. package/template/.dockerignore +58 -0
  6. package/template/.env.example +18 -0
  7. package/template/.eslintignore +5 -0
  8. package/template/.eslintrc.js +28 -0
  9. package/template/.prettierignore +6 -0
  10. package/template/.prettierrc +11 -0
  11. package/template/CLAUDE.md +634 -0
  12. package/template/Dockerfile +67 -0
  13. package/template/PROMPT.md +457 -0
  14. package/template/README.md +325 -0
  15. package/template/docker-compose.yml +48 -0
  16. package/template/docker-entrypoint.sh +23 -0
  17. package/template/docs/checkpoints/.template.md +64 -0
  18. package/template/docs/checkpoints/framework/01-infrastructure-setup.md +132 -0
  19. package/template/docs/checkpoints/framework/02-pocketbase-setup.md +155 -0
  20. package/template/docs/checkpoints/framework/03-host-kernel.md +170 -0
  21. package/template/docs/checkpoints/framework/04-auth-system.md +163 -0
  22. package/template/docs/checkpoints/framework/phase-05-multitenancy-rbac.md +223 -0
  23. package/template/docs/checkpoints/framework/phase-06-ui-components.md +260 -0
  24. package/template/docs/checkpoints/framework/phase-07-communication-system.md +276 -0
  25. package/template/docs/checkpoints/framework/phase-08-plugin-system.md +91 -0
  26. package/template/docs/checkpoints/framework/phase-09-dashboard-plugin.md +111 -0
  27. package/template/docs/checkpoints/framework/phase-10-todo-plugin.md +169 -0
  28. package/template/docs/checkpoints/framework/phase-11-testing.md +264 -0
  29. package/template/docs/checkpoints/framework/phase-12-deployment.md +294 -0
  30. package/template/docs/checkpoints/framework/phase-13-documentation.md +312 -0
  31. package/template/docs/framework/plans/00-index.md +164 -0
  32. package/template/docs/framework/plans/01-infrastructure-setup.md +855 -0
  33. package/template/docs/framework/plans/02-pocketbase-setup.md +1374 -0
  34. package/template/docs/framework/plans/03-host-kernel.md +1518 -0
  35. package/template/docs/framework/plans/04-auth-system.md +1466 -0
  36. package/template/docs/framework/plans/05-multitenancy-rbac.md +1527 -0
  37. package/template/docs/framework/plans/06-ui-components.md +1478 -0
  38. package/template/docs/framework/plans/07-communication-system.md +1106 -0
  39. package/template/docs/framework/plans/08-plugin-system.md +1179 -0
  40. package/template/docs/framework/plans/09-dashboard-plugin.md +1137 -0
  41. package/template/docs/framework/plans/10-todo-plugin.md +1343 -0
  42. package/template/docs/framework/plans/11-testing.md +935 -0
  43. package/template/docs/framework/plans/12-deployment.md +896 -0
  44. package/template/docs/framework/prompts/0-boilerplate-modernjs.md +151 -0
  45. package/template/docs/framework/research/00-modernjs-audit.md +488 -0
  46. package/template/docs/framework/research/01-system-blueprint.md +721 -0
  47. package/template/docs/framework/research/02-data-migration-protocol.md +699 -0
  48. package/template/docs/framework/research/03-host-setup.md +714 -0
  49. package/template/docs/framework/research/04-plugin-architecture.md +645 -0
  50. package/template/docs/framework/research/05-slot-injection-pattern.md +671 -0
  51. package/template/docs/framework/research/06-cli-strategy.md +615 -0
  52. package/template/docs/framework/research/07-deployment.md +629 -0
  53. package/template/docs/framework/research/README.md +282 -0
  54. package/template/docs/framework/setup/00-index.md +210 -0
  55. package/template/docs/framework/setup/01-framework-structure.md +308 -0
  56. package/template/docs/framework/setup/02-development-workflow.md +405 -0
  57. package/template/docs/framework/setup/03-environment-setup.md +215 -0
  58. package/template/docs/framework/setup/04-kernel-architecture.md +499 -0
  59. package/template/docs/framework/setup/05-plugin-system.md +620 -0
  60. package/template/docs/framework/setup/06-communication-patterns.md +451 -0
  61. package/template/docs/framework/setup/07-plugin-development.md +582 -0
  62. package/template/docs/framework/setup/08-component-library.md +658 -0
  63. package/template/docs/framework/setup/09-data-integration.md +609 -0
  64. package/template/docs/framework/setup/10-auth-rbac.md +497 -0
  65. package/template/docs/framework/setup/11-hooks-api.md +393 -0
  66. package/template/docs/framework/setup/12-components-api.md +665 -0
  67. package/template/docs/framework/setup/13-deployment-guide.md +566 -0
  68. package/template/docs/framework/setup/README.md +548 -0
  69. package/template/host/e2e/auth.spec.ts +38 -0
  70. package/template/host/e2e/layout.spec.ts +38 -0
  71. package/template/host/modern.config.ts +19 -0
  72. package/template/host/package.json +71 -0
  73. package/template/host/playwright.config.ts +34 -0
  74. package/template/host/postcss.config.mjs +6 -0
  75. package/template/host/src/App.tsx +6 -0
  76. package/template/host/src/bootstrap.tsx +74 -0
  77. package/template/host/src/global.css +59 -0
  78. package/template/host/src/index.ts +2 -0
  79. package/template/host/src/kernel/__tests__/lib-utils.test.ts +32 -0
  80. package/template/host/src/kernel/__tests__/rbac-hooks.test.tsx +114 -0
  81. package/template/host/src/kernel/__tests__/rbac-utils.test.ts +108 -0
  82. package/template/host/src/kernel/auth/ProtectedRoute.tsx +41 -0
  83. package/template/host/src/kernel/auth/components/LoginForm.tsx +97 -0
  84. package/template/host/src/kernel/auth/components/LogoutButton.tsx +79 -0
  85. package/template/host/src/kernel/auth/hooks.ts +174 -0
  86. package/template/host/src/kernel/auth/index.ts +5 -0
  87. package/template/host/src/kernel/auth/schemas.ts +27 -0
  88. package/template/host/src/kernel/auth/service.ts +197 -0
  89. package/template/host/src/kernel/auth/types.ts +36 -0
  90. package/template/host/src/kernel/channels/ChannelBus.ts +181 -0
  91. package/template/host/src/kernel/channels/ChannelProvider.tsx +57 -0
  92. package/template/host/src/kernel/channels/events.ts +27 -0
  93. package/template/host/src/kernel/channels/hooks.ts +168 -0
  94. package/template/host/src/kernel/channels/index.ts +6 -0
  95. package/template/host/src/kernel/channels/integrations/ToastIntegration.tsx +60 -0
  96. package/template/host/src/kernel/channels/plugin-hooks.ts +72 -0
  97. package/template/host/src/kernel/channels/types.ts +112 -0
  98. package/template/host/src/kernel/components/__tests__/Badge.test.tsx +35 -0
  99. package/template/host/src/kernel/components/__tests__/Button.test.tsx +63 -0
  100. package/template/host/src/kernel/components/__tests__/Input.test.tsx +64 -0
  101. package/template/host/src/kernel/components/index.ts +32 -0
  102. package/template/host/src/kernel/components/ui/alert.tsx +58 -0
  103. package/template/host/src/kernel/components/ui/avatar.tsx +47 -0
  104. package/template/host/src/kernel/components/ui/badge.tsx +35 -0
  105. package/template/host/src/kernel/components/ui/button.tsx +50 -0
  106. package/template/host/src/kernel/components/ui/card.tsx +78 -0
  107. package/template/host/src/kernel/components/ui/dialog.tsx +116 -0
  108. package/template/host/src/kernel/components/ui/dropdown-menu.tsx +192 -0
  109. package/template/host/src/kernel/components/ui/index.ts +7 -0
  110. package/template/host/src/kernel/components/ui/input.tsx +24 -0
  111. package/template/host/src/kernel/components/ui/label.tsx +21 -0
  112. package/template/host/src/kernel/components/ui/popover.tsx +28 -0
  113. package/template/host/src/kernel/components/ui/progress.tsx +25 -0
  114. package/template/host/src/kernel/components/ui/scroll-area.tsx +45 -0
  115. package/template/host/src/kernel/components/ui/select.tsx +155 -0
  116. package/template/host/src/kernel/components/ui/separator.tsx +28 -0
  117. package/template/host/src/kernel/components/ui/skeleton.tsx +15 -0
  118. package/template/host/src/kernel/components/ui/switch.tsx +26 -0
  119. package/template/host/src/kernel/components/ui/table.tsx +116 -0
  120. package/template/host/src/kernel/components/ui/tabs.tsx +52 -0
  121. package/template/host/src/kernel/components/ui/toast.tsx +126 -0
  122. package/template/host/src/kernel/components/ui/toaster.tsx +34 -0
  123. package/template/host/src/kernel/components/ui/tooltip.tsx +27 -0
  124. package/template/host/src/kernel/components/ui/use-toast.ts +183 -0
  125. package/template/host/src/kernel/index.ts +48 -0
  126. package/template/host/src/kernel/lib/cn.ts +1 -0
  127. package/template/host/src/kernel/lib/utils.ts +36 -0
  128. package/template/host/src/kernel/plugins/Slot.tsx +41 -0
  129. package/template/host/src/kernel/plugins/SlotProvider.tsx +88 -0
  130. package/template/host/src/kernel/plugins/index.ts +23 -0
  131. package/template/host/src/kernel/plugins/loader.ts +122 -0
  132. package/template/host/src/kernel/plugins/schemas.ts +54 -0
  133. package/template/host/src/kernel/plugins/store.ts +185 -0
  134. package/template/host/src/kernel/plugins/types.ts +103 -0
  135. package/template/host/src/kernel/providers/PocketBaseProvider.tsx +70 -0
  136. package/template/host/src/kernel/providers/QueryProvider.tsx +28 -0
  137. package/template/host/src/kernel/providers/ThemeProvider.tsx +25 -0
  138. package/template/host/src/kernel/providers/index.ts +3 -0
  139. package/template/host/src/kernel/rbac/components/OrganizationSelector.tsx +69 -0
  140. package/template/host/src/kernel/rbac/components/PermissionGate.tsx +43 -0
  141. package/template/host/src/kernel/rbac/hooks.ts +379 -0
  142. package/template/host/src/kernel/rbac/index.ts +6 -0
  143. package/template/host/src/kernel/rbac/service.ts +504 -0
  144. package/template/host/src/kernel/rbac/types.ts +164 -0
  145. package/template/host/src/kernel/rbac/utils.ts +34 -0
  146. package/template/host/src/kernel/shared-state/bridge.ts +31 -0
  147. package/template/host/src/kernel/shared-state/index.ts +3 -0
  148. package/template/host/src/kernel/shared-state/store.ts +62 -0
  149. package/template/host/src/kernel/shared-state/types.ts +60 -0
  150. package/template/host/src/kernel/use-migrations.ts +72 -0
  151. package/template/host/src/layout/MobileMenu.tsx +61 -0
  152. package/template/host/src/layout/Shell.tsx +42 -0
  153. package/template/host/src/layout/Sidebar.tsx +178 -0
  154. package/template/host/src/layout/Topbar.tsx +50 -0
  155. package/template/host/src/layout/index.ts +4 -0
  156. package/template/host/src/lib/pocketbase/client.ts +38 -0
  157. package/template/host/src/lib/pocketbase/collections/audit_logs.ts +87 -0
  158. package/template/host/src/lib/pocketbase/collections/index.ts +19 -0
  159. package/template/host/src/lib/pocketbase/collections/organizations.ts +63 -0
  160. package/template/host/src/lib/pocketbase/collections/permissions.ts +57 -0
  161. package/template/host/src/lib/pocketbase/collections/roles.ts +55 -0
  162. package/template/host/src/lib/pocketbase/collections/todos.ts +74 -0
  163. package/template/host/src/lib/pocketbase/collections/user_roles.ts +57 -0
  164. package/template/host/src/lib/pocketbase/collections/users.ts +43 -0
  165. package/template/host/src/lib/pocketbase/index.ts +5 -0
  166. package/template/host/src/lib/pocketbase/migrations.ts +44 -0
  167. package/template/host/src/lib/pocketbase/seed/permissions.ts +8 -0
  168. package/template/host/src/lib/pocketbase/seed/roles.ts +22 -0
  169. package/template/host/src/lib/pocketbase/seed.ts +113 -0
  170. package/template/host/src/lib/pocketbase/types.ts +102 -0
  171. package/template/host/src/modern.runtime.ts +26 -0
  172. package/template/host/src/plugins.d.ts +9 -0
  173. package/template/host/src/providers/PocketBaseProvider.tsx +30 -0
  174. package/template/host/src/routes/_.tsx +6 -0
  175. package/template/host/src/routes/dashboard._.tsx +41 -0
  176. package/template/host/src/routes/index.tsx +93 -0
  177. package/template/host/src/routes/login.tsx +36 -0
  178. package/template/host/src/saas.config.ts +52 -0
  179. package/template/host/src/test/setup.ts +65 -0
  180. package/template/host/src/test/utils.tsx +69 -0
  181. package/template/host/src/test/vitest-globals.d.ts +19 -0
  182. package/template/host/src/vite-env.d.ts +16 -0
  183. package/template/host/tailwind.config.ts +77 -0
  184. package/template/host/tsconfig.json +19 -0
  185. package/template/host/vitest.config.ts +30 -0
  186. package/template/nginx.conf +72 -0
  187. package/template/package.json +44 -0
  188. package/template/packages/plugins/@lego/plugin-dashboard/modern.config.ts +19 -0
  189. package/template/packages/plugins/@lego/plugin-dashboard/package.json +35 -0
  190. package/template/packages/plugins/@lego/plugin-dashboard/postcss.config.mjs +6 -0
  191. package/template/packages/plugins/@lego/plugin-dashboard/src/App.tsx +27 -0
  192. package/template/packages/plugins/@lego/plugin-dashboard/src/components/ActivityFeed.tsx +63 -0
  193. package/template/packages/plugins/@lego/plugin-dashboard/src/components/QuickActionSlot.tsx +11 -0
  194. package/template/packages/plugins/@lego/plugin-dashboard/src/components/QuickActions.tsx +68 -0
  195. package/template/packages/plugins/@lego/plugin-dashboard/src/components/SidebarWidget.tsx +35 -0
  196. package/template/packages/plugins/@lego/plugin-dashboard/src/components/StatCard.tsx +47 -0
  197. package/template/packages/plugins/@lego/plugin-dashboard/src/global.css +24 -0
  198. package/template/packages/plugins/@lego/plugin-dashboard/src/hooks/useChannelIntegration.ts +43 -0
  199. package/template/packages/plugins/@lego/plugin-dashboard/src/hooks/useDashboardStats.ts +65 -0
  200. package/template/packages/plugins/@lego/plugin-dashboard/src/hooks/usePocketBase.ts +47 -0
  201. package/template/packages/plugins/@lego/plugin-dashboard/src/hooks/useRecentActivity.ts +55 -0
  202. package/template/packages/plugins/@lego/plugin-dashboard/src/lib/utils.ts +6 -0
  203. package/template/packages/plugins/@lego/plugin-dashboard/src/pages/DashboardPage.tsx +105 -0
  204. package/template/packages/plugins/@lego/plugin-dashboard/src/plugin.config.ts +121 -0
  205. package/template/packages/plugins/@lego/plugin-dashboard/src/plugin.ts +18 -0
  206. package/template/packages/plugins/@lego/plugin-dashboard/src/vite-env.d.ts +32 -0
  207. package/template/packages/plugins/@lego/plugin-dashboard/tailwind.config.ts +35 -0
  208. package/template/packages/plugins/@lego/plugin-dashboard/tsconfig.json +18 -0
  209. package/template/packages/plugins/@lego/plugin-todo/modern.config.ts +18 -0
  210. package/template/packages/plugins/@lego/plugin-todo/package.json +41 -0
  211. package/template/packages/plugins/@lego/plugin-todo/postcss.config.mjs +6 -0
  212. package/template/packages/plugins/@lego/plugin-todo/src/App.tsx +12 -0
  213. package/template/packages/plugins/@lego/plugin-todo/src/components/SidebarWidget.tsx +16 -0
  214. package/template/packages/plugins/@lego/plugin-todo/src/components/TodoDialog.tsx +55 -0
  215. package/template/packages/plugins/@lego/plugin-todo/src/components/TodoFilters.tsx +79 -0
  216. package/template/packages/plugins/@lego/plugin-todo/src/components/TodoForm.tsx +94 -0
  217. package/template/packages/plugins/@lego/plugin-todo/src/components/TodoItem.tsx +121 -0
  218. package/template/packages/plugins/@lego/plugin-todo/src/components/TodoList.tsx +41 -0
  219. package/template/packages/plugins/@lego/plugin-todo/src/components/index.ts +6 -0
  220. package/template/packages/plugins/@lego/plugin-todo/src/global.css +59 -0
  221. package/template/packages/plugins/@lego/plugin-todo/src/hooks/useCreateTodo.ts +62 -0
  222. package/template/packages/plugins/@lego/plugin-todo/src/hooks/useDeleteTodo.ts +46 -0
  223. package/template/packages/plugins/@lego/plugin-todo/src/hooks/usePocketBase.ts +38 -0
  224. package/template/packages/plugins/@lego/plugin-todo/src/hooks/useTodos.ts +64 -0
  225. package/template/packages/plugins/@lego/plugin-todo/src/hooks/useUpdateTodo.ts +35 -0
  226. package/template/packages/plugins/@lego/plugin-todo/src/index.tsx +5 -0
  227. package/template/packages/plugins/@lego/plugin-todo/src/lib/utils.ts +20 -0
  228. package/template/packages/plugins/@lego/plugin-todo/src/pages/TodoPage.tsx +89 -0
  229. package/template/packages/plugins/@lego/plugin-todo/src/plugin.config.ts +104 -0
  230. package/template/packages/plugins/@lego/plugin-todo/src/plugin.ts +13 -0
  231. package/template/packages/plugins/@lego/plugin-todo/src/schemas.ts +37 -0
  232. package/template/packages/plugins/@lego/plugin-todo/src/types.ts +42 -0
  233. package/template/packages/plugins/@lego/plugin-todo/src/vite-env.d.ts +31 -0
  234. package/template/packages/plugins/@lego/plugin-todo/tailwind.config.ts +51 -0
  235. package/template/packages/plugins/@lego/plugin-todo/tsconfig.json +18 -0
  236. package/template/pnpm-workspace.yaml +4 -0
  237. package/template/pocketbase/CHANGELOG.md +911 -0
  238. package/template/pocketbase/LICENSE.md +17 -0
  239. package/template/scripts/create-plugin.js +221 -0
  240. package/template/scripts/deploy.sh +56 -0
  241. package/template/tsconfig.base.json +26 -0
  242. package/template/tsconfig.json +8 -0
@@ -0,0 +1,282 @@
1
+ # Lego-One Research Documentation
2
+
3
+ **Project:** Lego-One (Modern.js SaaS OS)
4
+ **Status:** Research & Implementation Complete
5
+
6
+ ## Overview
7
+
8
+ This directory contains comprehensive architectural research for building a **Microkernel SaaS Boilerplate** using Modern.js, Garfish (micro-frontends), PocketBase, and modern React tooling.
9
+
10
+ ---
11
+
12
+ ## Document Index
13
+
14
+ ### Phase 0: Architecture & Research
15
+
16
+ | Document | Description | Status |
17
+ |----------|-------------|--------|
18
+ | [`00-modernjs-audit.md`](./00-modernjs-audit.md) | Modern.js + Garfish configuration, shared dependencies, externals | ✅ |
19
+ | [`01-system-blueprint.md`](./01-system-blueprint.md) | High-level Host/Consumer architecture, communication patterns | ✅ |
20
+ | [`02-data-migration-protocol.md`](./02-data-migration-protocol.md) | PocketBase auto-schema synchronization on startup | ✅ |
21
+
22
+ ### Phase 1: Implementation Plan
23
+
24
+ | Document | Description | Status |
25
+ |----------|-------------|--------|
26
+ | [`03-host-setup.md`](./03-host-setup.md) | Initialize Modern.js host with Tailwind + Shadcn UI | ✅ |
27
+ | [`04-plugin-architecture.md`](./04-plugin-architecture.md) | Create "Hello World" plugin and register with host | ✅ |
28
+ | [`05-slot-injection-pattern.md`](./05-slot-injection-pattern.md) | UI extension system for plugins to inject into host layout | ✅ |
29
+
30
+ ### Phase 2: DevOps
31
+
32
+ | Document | Description | Status |
33
+ |----------|-------------|--------|
34
+ | [`06-cli-strategy.md`](./06-cli-strategy.md) | `pnpm create lego-one` CLI tool implementation | ✅ |
35
+ | [`07-deployment.md`](./07-deployment.md) | Deploy host and plugins (Monorepo vs Polyrepo) | ✅ |
36
+
37
+ ---
38
+
39
+ ## Key Architectural Decisions
40
+
41
+ | Decision | Choice | Rationale |
42
+ |----------|--------|-----------|
43
+ | **Framework** | Modern.js | Native Garfish support, Rspack performance |
44
+ | **Micro-Frontends** | Garfish | Built into Modern.js, mature ecosystem |
45
+ | **State Management** | Zustand | Lightweight, works across MFE boundaries |
46
+ | **Backend** | PocketBase | Single binary, multi-tenancy via API Rules |
47
+ | **Distribution** | npm CLI + Git Template | Easy project creation, user control over updates |
48
+ | **Repo Structure** | Monorepo | Shared deps, coordinated changes, easier onboarding |
49
+ | **Dev Deployment** | Separate servers per plugin | Independent plugin development |
50
+ | **Prod Deployment** | Single server (plugins bundled) | One app, one deployment, simpler operations |
51
+ | **Version Management** | Automated semantic versioning | Patch/minor/major releases with git tags |
52
+
53
+ ---
54
+
55
+ ## Technology Stack
56
+
57
+ | Layer | Technology |
58
+ |-------|-----------|
59
+ | **Framework** | Modern.js + Rspack |
60
+ | **MFE Engine** | Garfish |
61
+ | **UI** | React 18 + Tailwind CSS + Shadcn UI + Radix Primitives |
62
+ | **State** | Zustand + TanStack Query v5 |
63
+ | **Backend** | PocketBase |
64
+ | **Language** | TypeScript (strict) |
65
+ | **CLI** | Commander + Prompts + Chalk |
66
+ | **Distribution** | npm registry |
67
+ | **Versioning** | Automated scripts (patch/minor/major) |
68
+
69
+ ---
70
+
71
+ ## Distribution & Publishing
72
+
73
+ ### CLI Distribution
74
+
75
+ Lego-One is distributed via npm as a create CLI:
76
+
77
+ ```bash
78
+ # Create a new Lego-One application
79
+ pnpm create lego-one my-saas-app
80
+
81
+ # Or using npx
82
+ npx create-lego-one my-saas-app
83
+ ```
84
+
85
+ **CLI Package:** `create-lego-one`
86
+ - **Location:** `packages/create-lego-one/`
87
+ - **Entry Point:** `dist/index.js` (built from `src/index.ts`)
88
+ - **Template:** Copied from monorepo root during CLI execution
89
+ - **Dependencies:** prompts, commander, chalk, ora, fs-extra, validate-npm-package-name
90
+
91
+ ### Version Management
92
+
93
+ Automated version bumping scripts:
94
+
95
+ ```bash
96
+ # Patch release (bug fixes)
97
+ pnpm run version:patch
98
+
99
+ # Minor release (new features)
100
+ pnpm run version:minor
101
+
102
+ # Major release (breaking changes)
103
+ pnpm run version:major
104
+
105
+ # Pre-release (beta/alpha)
106
+ pnpm run version:pre
107
+
108
+ # Full release workflow (build, test, version, publish, push)
109
+ pnpm run release
110
+ ```
111
+
112
+ **Script:** `scripts/version.js`
113
+ - Updates root `package.json`
114
+ - Updates `host/package.json`
115
+ - Updates all plugin `package.json` files
116
+ - Creates git tag automatically
117
+ - Follows semantic versioning
118
+
119
+ ### Publishing to npm
120
+
121
+ ```bash
122
+ # Build CLI package
123
+ cd packages/create-lego-one
124
+ pnpm run build
125
+
126
+ # Publish to npm (from root)
127
+ pnpm run publish:cli
128
+
129
+ # Or manually
130
+ cd packages/create-lego-one
131
+ npm publish --access public
132
+ ```
133
+
134
+ **Configuration:** `.npmrc`
135
+ - `access=public` - Public scope packages
136
+ - `provenance=true` - Cryptographic proof of publisher identity
137
+ - `engine-strict=true` - Enforce Node.js version requirements
138
+
139
+ ### Update Strategy for Users
140
+
141
+ Users of Lego-One can update their framework installation:
142
+
143
+ ```bash
144
+ # Update Lego-One to latest version
145
+ pnpm update lego-one
146
+
147
+ # Or update create-lego-one CLI
148
+ pnpm update create-lego-one
149
+
150
+ # Or specific version
151
+ pnpm update lego-one@latest
152
+ ```
153
+
154
+ **Plugin Isolation:**
155
+ - Custom plugins in `packages/plugins/@custom/` are never overwritten
156
+ - Framework updates only affect `@lego/*` packages
157
+ - Users maintain full control over custom code
158
+
159
+ ---
160
+
161
+ ## Architecture Summary
162
+
163
+ ### Microkernel Pattern
164
+
165
+ ```
166
+ ┌─────────────────────────────────────────────────────────┐
167
+ │ Host (Kernel) │
168
+ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
169
+ │ │ Auth │ │ RBAC │ │ State │ │
170
+ │ │ System │ │ System │ │ Management │ │
171
+ │ └─────────────┘ └─────────────┘ └─────────────┘ │
172
+ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
173
+ │ │ UI │ │ Channels │ │ Slot │ │
174
+ │ │ Layout │ │ Bus │ │ Injection │ │
175
+ │ └─────────────┘ └─────────────┘ └─────────────┘ │
176
+ └─────────────────────────────────────────────────────────┘
177
+
178
+ │ via Garfish + Window Bridge
179
+
180
+ ┌──────────────────┼──────────────────┐
181
+ │ │ │
182
+ ┌───────▼────────┐ ┌───────▼────────┐ ┌───────▼────────┐
183
+ │ Dashboard │ │ Todo │ │ Custom │
184
+ │ Plugin │ │ Plugin │ │ Plugins │
185
+ └────────────────┘ └────────────────┘ └────────────────┘
186
+ ```
187
+
188
+ ### Communication Patterns
189
+
190
+ **Host → Plugin:**
191
+ - Window bridge state (`window.__LEGO_KERNEL_STATE__`)
192
+ - Channel bus for events (`window.__LEGO_CHANNEL_BUS__`)
193
+ - Slot injection for UI components
194
+
195
+ **Plugin → Host:**
196
+ - Read kernel state via window bridge
197
+ - Publish events via channel bus
198
+ - Inject UI into predefined slots
199
+
200
+ **Plugin ↔ Plugin:**
201
+ - Via channel bus events
202
+ - No direct dependencies
203
+
204
+ ---
205
+
206
+ ## Development Workflow
207
+
208
+ ### For Framework Maintainers
209
+
210
+ 1. **Make changes** to host, kernel, or built-in plugins
211
+ 2. **Bump version** using `pnpm run version:patch/minor/major`
212
+ 3. **Build and test** using `pnpm run build && pnpm test`
213
+ 4. **Publish CLI** using `pnpm run publish:cli`
214
+ 5. **Push to git** with tag for version tracking
215
+
216
+ ### For End Users
217
+
218
+ 1. **Create new project:** `pnpm create lego-one my-app`
219
+ 2. **Develop custom plugins** in `packages/plugins/@custom/`
220
+ 3. **Update framework:** `pnpm update lego-one` (custom plugins preserved)
221
+ 4. **Build for production:** `pnpm run build`
222
+ 5. **Deploy:** Use provided Dockerfile or custom deployment
223
+
224
+ ---
225
+
226
+ ## File Structure
227
+
228
+ ```
229
+ lego-one/
230
+ ├── host/ # Kernel application
231
+ │ ├── src/
232
+ │ │ ├── kernel/ # Core systems
233
+ │ │ ├── layout/ # UI layout
234
+ │ │ ├── routes/ # Page routes
235
+ │ │ └── providers/ # Context providers
236
+ │ └── package.json
237
+
238
+ ├── packages/
239
+ │ ├── plugins/
240
+ │ │ └── @lego/
241
+ │ │ ├── plugin-dashboard/ # Built-in plugins
242
+ │ │ └── plugin-todo/
243
+ │ │
244
+ │ └── create-lego-one/ # CLI for `pnpm create`
245
+ │ ├── src/ # CLI source
246
+ │ ├── template/ # (Optional) bundled template
247
+ │ └── package.json
248
+
249
+ ├── scripts/
250
+ │ ├── version.js # Version management
251
+ │ └── create-plugin.js # Plugin scaffolding
252
+
253
+ ├── docs/
254
+ │ ├── framework/ # Architecture docs
255
+ │ ├── api/ # API references
256
+ │ ├── guides/ # User guides
257
+ │ └── checkpoints/ # Phase completion tracking
258
+
259
+ ├── .npmrc # npm publishing config
260
+ ├── pnpm-workspace.yaml # Monorepo config
261
+ └── package.json # Root package config
262
+ ```
263
+
264
+ ---
265
+
266
+ ## Next Steps
267
+
268
+ 1. **Review:** Review all research documents
269
+ 2. **Setup:** Follow the setup guide in `/docs/framework/setup/README.md`
270
+ 3. **Develop:** Create custom plugins using AI instructions
271
+ 4. **Deploy:** Use the deployment guide for production
272
+
273
+ ---
274
+
275
+ ## Sources
276
+
277
+ - [Modern.js Documentation](https://modernjs.dev/)
278
+ - [Garfish Documentation](https://www.garfishjs.org/)
279
+ - [PocketBase Documentation](https://pocketbase.io/docs/)
280
+ - [npm Publishing](https://docs.npmjs.com/cli/v9/commands/npm-publish)
281
+ - [Semantic Versioning](https://semver.org/)
282
+ - [pnpm Workspaces](https://pnpm.io/workspaces)
@@ -0,0 +1,210 @@
1
+ # AI Development Documentation
2
+
3
+ **Lego-One Framework - AI "Vibe Coding" Reference**
4
+
5
+ > This documentation is optimized for AI agents working on the Lego-One framework. Read sequentially for complete context.
6
+
7
+ ---
8
+
9
+ ## Documentation Index
10
+
11
+ Read these files in order for complete framework understanding:
12
+
13
+ ### Getting Started
14
+
15
+ | # | File | Description |
16
+ |---|------|-------------|
17
+ | 01 | [`01-framework-structure.md`](./01-framework-structure.md) | Project structure, architecture, file locations |
18
+ | 02 | [`02-development-workflow.md`](./02-development-workflow.md) | How to work on this framework (dev, build, test) |
19
+ | 03 | [`03-environment-setup.md`](./03-environment-setup.md) | Environment variables, dependencies, prerequisites |
20
+
21
+ ### Core Concepts
22
+
23
+ | # | File | Description |
24
+ |---|------|-------------|
25
+ | 04 | [`04-kernel-architecture.md`](./04-kernel-architecture.md) | Host/Kernel system, core infrastructure |
26
+ | 05 | [`05-plugin-system.md`](./05-plugin-system.md) | Plugin architecture, Garfish, micro-frontends |
27
+ | 06 | [`06-communication-patterns.md`](./06-communication-patterns.md) | Window bridge, channel bus, plugin-host communication |
28
+
29
+ ### Development Patterns
30
+
31
+ | # | File | Description |
32
+ |---|------|-------------|
33
+ | 07 | [`07-plugin-development.md`](./07-plugin-development.md) | Complete guide to creating plugins |
34
+ | 08 | `08-component-library.md` | UI components, styling, design system *(TODO)* |
35
+ | 09 | `09-data-integration.md` | PocketBase, multi-tenancy, data fetching *(TODO)* |
36
+ | 10 | `10-auth-rbac.md` | Authentication, authorization, permissions *(TODO)* |
37
+
38
+ ### API Reference
39
+
40
+ | # | File | Description |
41
+ |---|------|-------------|
42
+ | 11 | [`11-hooks-api.md`](./11-hooks-api.md) | All kernel hooks (auth, RBAC, state, channels) |
43
+ | 12 | [`12-components-api.md`](./12-components-api.md) | UI component library reference |
44
+ | 13 | [`13-deployment-guide.md`](./13-deployment-guide.md) | Production deployment instructions |
45
+
46
+ ### Core Concepts (TODO)
47
+
48
+ | # | File | Description |
49
+ |---|------|-------------|
50
+ | 04 | `04-kernel-architecture.md` | Host/Kernel system, core infrastructure |
51
+ | 05 | `05-plugin-system.md` | Plugin architecture, Garfish, micro-frontends |
52
+ | 06 | `06-communication-patterns.md` | Window bridge, channel bus, plugin-host communication |
53
+
54
+ ---
55
+
56
+ ## Quick Reference for AI Agents
57
+
58
+ ### When Starting Any Task
59
+
60
+ 1. **ALWAYS read `/docs/framework/setup/00-index.md` first** (this file)
61
+ 2. **Read relevant files** from the index above based on your task
62
+ 3. **Follow established patterns** - consistency is critical
63
+ 4. **Write checkpoints** for every task/bugfix/feature in `/docs/checkpoints/`
64
+
65
+ ### Task → Documentation Mapping
66
+
67
+ | Task Type | Read First | Reference |
68
+ |-----------|-----------|----------|
69
+ | Create new plugin | `07-plugin-development.md` | Dashboard/Todo plugins |
70
+ | Add UI components | `08-component-library.md` | Existing components |
71
+ | Fix auth issues | `10-auth-rbac.md` | Kernel auth system |
72
+ | Add data features | `09-data-integration.md` | Todo plugin patterns |
73
+ | Debug issues | `02-development-workflow.md` | Troubleshooting section |
74
+
75
+ ### Critical Constraints
76
+
77
+ **DO NOT:**
78
+ - Skip reading documentation before coding
79
+ - Create circular dependencies between host and plugins
80
+ - Import directly from host kernel in plugins (use window bridge)
81
+ - Skip TypeScript strict mode compliance
82
+ - Forget to write checkpoints for your work
83
+
84
+ **ALWAYS:**
85
+ - Read relevant documentation first
86
+ - Follow existing file structures and naming conventions
87
+ - Use window bridge for host-plugin communication
88
+ - Implement proper error handling
89
+ - Test in both dev and production modes
90
+ - Document your work in checkpoints
91
+
92
+ ---
93
+
94
+ ## File Location Conventions
95
+
96
+ ```
97
+ lego-one/
98
+ ├── host/src/kernel/ # Core systems (auth, RBAC, state, channels)
99
+ ├── host/src/layout/ # Layout components (Sidebar, Topbar, Shell)
100
+ ├── host/src/routes/ # Page routes
101
+ ├── host/src/providers/ # Context providers
102
+ └── packages/plugins/@lego/ # Feature modules
103
+ ```
104
+
105
+ ### Kernel Structure
106
+
107
+ ```
108
+ host/src/kernel/
109
+ ├── shared-state/ # Zustand store + window bridge
110
+ ├── providers/ # PocketBase, Query, Theme providers
111
+ ├── plugins/ # Plugin system, slot injection
112
+ ├── channels/ # Garfish channel bus
113
+ ├── auth/ # Authentication logic
114
+ ├── rbac/ # Multitenancy, permissions
115
+ ├── lib/ # Utilities (cn, formatDate)
116
+ └── components/ # Shared UI components
117
+ ```
118
+
119
+ ### Plugin Structure
120
+
121
+ ```
122
+ packages/plugins/@lego/plugin-<name>/
123
+ ├── src/
124
+ │ ├── components/ # Plugin components
125
+ │ ├── hooks/ # Data fetching hooks
126
+ │ ├── pages/ # Plugin pages
127
+ │ ├── plugin.config.ts # Plugin configuration
128
+ │ └── plugin.ts # Entry point
129
+ ```
130
+
131
+ ---
132
+
133
+ ## Key Hooks and APIs
134
+
135
+ | Hook/Api | Purpose | Location |
136
+ |----------|---------|----------|
137
+ | `usePocketBase()` | Access PocketBase client | `host/src/kernel/providers/` |
138
+ | `useCurrentOrganization()` | Get current organization context | `host/src/kernel/hooks/` |
139
+ | `useUserPermissions()` | Get user permissions | `host/src/kernel/hooks/` |
140
+ | `useGlobalKernelState()` | Access kernel state | `host/src/kernel/shared-state/` |
141
+ | `window.__LEGO_KERNEL_STATE__` | Read-only kernel state access | Global window object |
142
+ | `window.__LEGO_CHANNEL_BUS__` | Event publishing/subscribing | Global window object |
143
+
144
+ ---
145
+
146
+ ## Import Path Conventions
147
+
148
+ ```typescript
149
+ // From host kernel
150
+ import { usePocketBase } from '@/kernel/providers/PocketBaseProvider';
151
+ import { useCurrentOrganization } from '@/kernel/hooks/useCurrentOrganization';
152
+ import { Button } from '@/kernel/components/ui/Button';
153
+
154
+ // Window bridge (in plugins)
155
+ const kernelState = window.__LEGO_KERNEL_STATE__;
156
+ const channelBus = window.__LEGO_CHANNEL_BUS__;
157
+ ```
158
+
159
+ ---
160
+
161
+ ## Testing Commands
162
+
163
+ ```bash
164
+ # Unit and component tests
165
+ pnpm --filter './host' test
166
+
167
+ # E2E tests (requires dev server running)
168
+ pnpm test:e2e
169
+
170
+ # Coverage report
171
+ pnpm test:coverage
172
+ ```
173
+
174
+ ## Build Commands
175
+
176
+ ```bash
177
+ # Build all
178
+ pnpm run build
179
+
180
+ # Build host only
181
+ pnpm --filter './host' build
182
+
183
+ # Build specific plugin
184
+ pnpm --filter './packages/plugins/@lego/plugin-dashboard' build
185
+ ```
186
+
187
+ ---
188
+
189
+ ## Before You Code
190
+
191
+ Use this decision tree:
192
+
193
+ ```
194
+ Task: Create a new feature
195
+ ├─ Is it a CRUD feature? → Follow Todo Plugin pattern (file 07)
196
+ ├─ Is it display only? → Follow Dashboard Plugin pattern (file 07)
197
+ ├─ Does it need backend storage? → Read file 09 (Data Integration)
198
+ ├─ Does it need authentication? → Read file 10 (Auth/RBAC)
199
+ └─ Is it a calculation? → Create hook with pure functions
200
+
201
+ Task: Fix a bug
202
+ ├─ In host kernel? → Edit files in host/src/kernel/
203
+ ├─ In plugin? → Edit files in packages/plugins/@lego/plugin-<name>/
204
+ ├─ UI related? → Check components and layout (file 08)
205
+ └─ Data related? → Check hooks and PocketBase queries (file 09)
206
+ ```
207
+
208
+ ---
209
+
210
+ **Next:** Read [`01-framework-structure.md`](./01-framework-structure.md) to understand the project layout.