create-fluxstack 1.10.1 → 1.12.0

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 (257) hide show
  1. package/.dockerignore +1 -2
  2. package/Dockerfile +8 -8
  3. package/LLMD/INDEX.md +64 -0
  4. package/LLMD/MAINTENANCE.md +197 -0
  5. package/LLMD/MIGRATION.md +156 -0
  6. package/LLMD/config/.gitkeep +1 -0
  7. package/LLMD/config/declarative-system.md +268 -0
  8. package/LLMD/config/environment-vars.md +327 -0
  9. package/LLMD/config/runtime-reload.md +401 -0
  10. package/LLMD/core/.gitkeep +1 -0
  11. package/LLMD/core/build-system.md +599 -0
  12. package/LLMD/core/framework-lifecycle.md +229 -0
  13. package/LLMD/core/plugin-system.md +451 -0
  14. package/LLMD/patterns/.gitkeep +1 -0
  15. package/LLMD/patterns/anti-patterns.md +297 -0
  16. package/LLMD/patterns/project-structure.md +264 -0
  17. package/LLMD/patterns/type-safety.md +440 -0
  18. package/LLMD/reference/.gitkeep +1 -0
  19. package/LLMD/reference/cli-commands.md +250 -0
  20. package/LLMD/reference/plugin-hooks.md +357 -0
  21. package/LLMD/reference/routing.md +39 -0
  22. package/LLMD/reference/troubleshooting.md +364 -0
  23. package/LLMD/resources/.gitkeep +1 -0
  24. package/LLMD/resources/controllers.md +465 -0
  25. package/LLMD/resources/live-components.md +703 -0
  26. package/LLMD/resources/live-rooms.md +482 -0
  27. package/LLMD/resources/live-upload.md +130 -0
  28. package/LLMD/resources/plugins-external.md +617 -0
  29. package/LLMD/resources/routes-eden.md +254 -0
  30. package/README.md +37 -17
  31. package/app/client/index.html +0 -1
  32. package/app/client/src/App.tsx +107 -150
  33. package/app/client/src/components/AppLayout.tsx +68 -0
  34. package/app/client/src/components/BackButton.tsx +13 -0
  35. package/app/client/src/components/DemoPage.tsx +20 -0
  36. package/app/client/src/components/LiveUploadWidget.tsx +204 -0
  37. package/app/client/src/lib/eden-api.ts +85 -60
  38. package/app/client/src/live/ChatDemo.tsx +107 -0
  39. package/app/client/src/live/CounterDemo.tsx +206 -0
  40. package/app/client/src/live/FormDemo.tsx +119 -0
  41. package/app/client/src/live/RoomChatDemo.tsx +242 -0
  42. package/app/client/src/live/UploadDemo.tsx +21 -0
  43. package/app/client/src/main.tsx +4 -1
  44. package/app/client/src/pages/ApiTestPage.tsx +108 -0
  45. package/app/client/src/pages/HomePage.tsx +76 -0
  46. package/app/server/app.ts +1 -4
  47. package/app/server/controllers/users.controller.ts +36 -44
  48. package/app/server/index.ts +25 -35
  49. package/app/server/live/LiveChat.ts +77 -0
  50. package/app/server/live/LiveCounter.ts +67 -0
  51. package/app/server/live/LiveForm.ts +63 -0
  52. package/app/server/live/LiveLocalCounter.ts +32 -0
  53. package/app/server/live/LiveRoomChat.ts +285 -0
  54. package/app/server/live/LiveUpload.ts +81 -0
  55. package/app/server/routes/index.ts +3 -1
  56. package/app/server/routes/room.routes.ts +117 -0
  57. package/app/server/routes/users.routes.ts +35 -27
  58. package/app/shared/types/index.ts +14 -2
  59. package/config/app.config.ts +2 -62
  60. package/config/client.config.ts +2 -95
  61. package/config/database.config.ts +2 -99
  62. package/config/fluxstack.config.ts +25 -45
  63. package/config/index.ts +57 -38
  64. package/config/monitoring.config.ts +2 -114
  65. package/config/plugins.config.ts +2 -80
  66. package/config/server.config.ts +2 -68
  67. package/config/services.config.ts +2 -130
  68. package/config/system/app.config.ts +29 -0
  69. package/config/system/build.config.ts +49 -0
  70. package/config/system/client.config.ts +68 -0
  71. package/config/system/database.config.ts +17 -0
  72. package/config/system/fluxstack.config.ts +114 -0
  73. package/config/{logger.config.ts → system/logger.config.ts} +3 -1
  74. package/config/system/monitoring.config.ts +114 -0
  75. package/config/system/plugins.config.ts +84 -0
  76. package/config/{runtime.config.ts → system/runtime.config.ts} +1 -1
  77. package/config/system/server.config.ts +68 -0
  78. package/config/system/services.config.ts +46 -0
  79. package/config/{system.config.ts → system/system.config.ts} +1 -1
  80. package/core/build/flux-plugins-generator.ts +325 -325
  81. package/core/build/index.ts +39 -27
  82. package/core/build/live-components-generator.ts +3 -3
  83. package/core/build/optimizer.ts +235 -235
  84. package/core/cli/command-registry.ts +6 -4
  85. package/core/cli/commands/build.ts +79 -0
  86. package/core/cli/commands/create.ts +54 -0
  87. package/core/cli/commands/dev.ts +101 -0
  88. package/core/cli/commands/help.ts +34 -0
  89. package/core/cli/commands/index.ts +34 -0
  90. package/core/cli/commands/make-plugin.ts +90 -0
  91. package/core/cli/commands/plugin-add.ts +197 -0
  92. package/core/cli/commands/plugin-deps.ts +2 -2
  93. package/core/cli/commands/plugin-list.ts +208 -0
  94. package/core/cli/commands/plugin-remove.ts +170 -0
  95. package/core/cli/generators/component.ts +769 -769
  96. package/core/cli/generators/controller.ts +1 -1
  97. package/core/cli/generators/index.ts +146 -146
  98. package/core/cli/generators/interactive.ts +227 -227
  99. package/core/cli/generators/plugin.ts +2 -2
  100. package/core/cli/generators/prompts.ts +82 -82
  101. package/core/cli/generators/route.ts +6 -6
  102. package/core/cli/generators/service.ts +2 -2
  103. package/core/cli/generators/template-engine.ts +4 -3
  104. package/core/cli/generators/types.ts +2 -2
  105. package/core/cli/generators/utils.ts +191 -191
  106. package/core/cli/index.ts +115 -686
  107. package/core/cli/plugin-discovery.ts +2 -2
  108. package/core/client/LiveComponentsProvider.tsx +60 -8
  109. package/core/client/api/eden.ts +183 -0
  110. package/core/client/api/index.ts +11 -0
  111. package/core/client/components/Live.tsx +104 -0
  112. package/core/client/fluxstack.ts +1 -9
  113. package/core/client/hooks/AdaptiveChunkSizer.ts +215 -215
  114. package/core/client/hooks/state-validator.ts +1 -1
  115. package/core/client/hooks/useAuth.ts +48 -48
  116. package/core/client/hooks/useChunkedUpload.ts +85 -35
  117. package/core/client/hooks/useLiveChunkedUpload.ts +87 -0
  118. package/core/client/hooks/useLiveComponent.ts +800 -0
  119. package/core/client/hooks/useLiveUpload.ts +71 -0
  120. package/core/client/hooks/useRoom.ts +409 -0
  121. package/core/client/hooks/useRoomProxy.ts +382 -0
  122. package/core/client/index.ts +17 -68
  123. package/core/client/standalone-entry.ts +8 -0
  124. package/core/client/standalone.ts +74 -53
  125. package/core/client/state/createStore.ts +192 -192
  126. package/core/client/state/index.ts +14 -14
  127. package/core/config/index.ts +70 -291
  128. package/core/config/schema.ts +42 -723
  129. package/core/framework/client.ts +131 -131
  130. package/core/framework/index.ts +7 -7
  131. package/core/framework/server.ts +47 -40
  132. package/core/framework/types.ts +2 -2
  133. package/core/index.ts +23 -4
  134. package/core/live/ComponentRegistry.ts +3 -3
  135. package/core/live/types.ts +77 -0
  136. package/core/plugins/built-in/index.ts +134 -134
  137. package/core/plugins/built-in/live-components/commands/create-live-component.ts +242 -1066
  138. package/core/plugins/built-in/live-components/index.ts +1 -1
  139. package/core/plugins/built-in/monitoring/index.ts +111 -47
  140. package/core/plugins/built-in/static/index.ts +1 -1
  141. package/core/plugins/built-in/swagger/index.ts +68 -265
  142. package/core/plugins/built-in/vite/index.ts +85 -185
  143. package/core/plugins/built-in/vite/vite-dev.ts +10 -16
  144. package/core/plugins/config.ts +9 -7
  145. package/core/plugins/dependency-manager.ts +31 -1
  146. package/core/plugins/discovery.ts +19 -7
  147. package/core/plugins/executor.ts +2 -2
  148. package/core/plugins/index.ts +203 -203
  149. package/core/plugins/manager.ts +27 -39
  150. package/core/plugins/module-resolver.ts +19 -8
  151. package/core/plugins/registry.ts +255 -19
  152. package/core/plugins/types.ts +20 -53
  153. package/core/server/framework.ts +66 -43
  154. package/core/server/index.ts +15 -15
  155. package/core/server/live/ComponentRegistry.ts +78 -71
  156. package/core/server/live/FileUploadManager.ts +23 -10
  157. package/core/server/live/LiveComponentPerformanceMonitor.ts +1 -1
  158. package/core/server/live/LiveRoomManager.ts +261 -0
  159. package/core/server/live/RoomEventBus.ts +234 -0
  160. package/core/server/live/RoomStateManager.ts +172 -0
  161. package/core/server/live/StateSignature.ts +643 -643
  162. package/core/server/live/WebSocketConnectionManager.ts +30 -19
  163. package/core/server/live/auto-generated-components.ts +21 -9
  164. package/core/server/live/index.ts +14 -0
  165. package/core/server/live/websocket-plugin.ts +214 -67
  166. package/core/server/middleware/elysia-helpers.ts +7 -2
  167. package/core/server/middleware/errorHandling.ts +1 -1
  168. package/core/server/middleware/index.ts +31 -31
  169. package/core/server/plugins/database.ts +180 -180
  170. package/core/server/plugins/static-files-plugin.ts +69 -69
  171. package/core/server/plugins/swagger.ts +1 -1
  172. package/core/server/rooms/RoomBroadcaster.ts +357 -0
  173. package/core/server/rooms/RoomSystem.ts +463 -0
  174. package/core/server/rooms/index.ts +13 -0
  175. package/core/server/services/BaseService.ts +1 -1
  176. package/core/server/services/ServiceContainer.ts +1 -1
  177. package/core/server/services/index.ts +8 -8
  178. package/core/templates/create-project.ts +12 -12
  179. package/core/testing/index.ts +9 -9
  180. package/core/testing/setup.ts +73 -73
  181. package/core/types/api.ts +168 -168
  182. package/core/types/build.ts +219 -219
  183. package/core/types/config.ts +56 -26
  184. package/core/types/index.ts +4 -4
  185. package/core/types/plugin.ts +107 -107
  186. package/core/types/types.ts +353 -14
  187. package/core/utils/build-logger.ts +324 -324
  188. package/core/utils/config-schema.ts +480 -480
  189. package/core/utils/env.ts +2 -8
  190. package/core/utils/errors/codes.ts +114 -114
  191. package/core/utils/errors/handlers.ts +36 -1
  192. package/core/utils/errors/index.ts +49 -5
  193. package/core/utils/errors/middleware.ts +113 -113
  194. package/core/utils/helpers.ts +6 -16
  195. package/core/utils/index.ts +17 -17
  196. package/core/utils/logger/colors.ts +114 -114
  197. package/core/utils/logger/config.ts +13 -9
  198. package/core/utils/logger/formatter.ts +82 -82
  199. package/core/utils/logger/group-logger.ts +101 -101
  200. package/core/utils/logger/index.ts +6 -1
  201. package/core/utils/logger/stack-trace.ts +3 -1
  202. package/core/utils/logger/startup-banner.ts +82 -82
  203. package/core/utils/logger/winston-logger.ts +152 -152
  204. package/core/utils/monitoring/index.ts +211 -211
  205. package/core/utils/sync-version.ts +66 -66
  206. package/core/utils/version.ts +1 -1
  207. package/create-fluxstack.ts +8 -7
  208. package/package.json +12 -13
  209. package/plugins/crypto-auth/cli/make-protected-route.command.ts +1 -1
  210. package/plugins/crypto-auth/client/CryptoAuthClient.ts +302 -302
  211. package/plugins/crypto-auth/client/components/index.ts +11 -11
  212. package/plugins/crypto-auth/client/index.ts +11 -11
  213. package/plugins/crypto-auth/config/index.ts +1 -1
  214. package/plugins/crypto-auth/index.ts +4 -4
  215. package/plugins/crypto-auth/package.json +65 -65
  216. package/plugins/crypto-auth/server/AuthMiddleware.ts +1 -1
  217. package/plugins/crypto-auth/server/CryptoAuthService.ts +185 -185
  218. package/plugins/crypto-auth/server/index.ts +21 -21
  219. package/plugins/crypto-auth/server/middlewares/cryptoAuthAdmin.ts +3 -3
  220. package/plugins/crypto-auth/server/middlewares/cryptoAuthOptional.ts +1 -1
  221. package/plugins/crypto-auth/server/middlewares/cryptoAuthPermissions.ts +2 -2
  222. package/plugins/crypto-auth/server/middlewares/cryptoAuthRequired.ts +2 -2
  223. package/plugins/crypto-auth/server/middlewares/helpers.ts +1 -1
  224. package/plugins/crypto-auth/server/middlewares/index.ts +22 -22
  225. package/tsconfig.api-strict.json +16 -0
  226. package/tsconfig.json +48 -52
  227. package/{app/client/tsconfig.node.json → tsconfig.node.json} +25 -25
  228. package/types/global.d.ts +29 -29
  229. package/types/vitest.d.ts +8 -8
  230. package/vite.config.ts +38 -62
  231. package/vitest.config.live.ts +10 -9
  232. package/vitest.config.ts +29 -17
  233. package/app/client/README.md +0 -69
  234. package/app/client/SIMPLIFICATION.md +0 -140
  235. package/app/client/frontend-only.ts +0 -12
  236. package/app/client/src/live/FileUploadExample.tsx +0 -359
  237. package/app/client/src/live/MinimalLiveClock.tsx +0 -47
  238. package/app/client/src/live/QuickUploadTest.tsx +0 -193
  239. package/app/client/tsconfig.app.json +0 -45
  240. package/app/client/tsconfig.json +0 -7
  241. package/app/client/zustand-setup.md +0 -65
  242. package/app/server/backend-only.ts +0 -18
  243. package/app/server/live/LiveClockComponent.ts +0 -215
  244. package/app/server/live/LiveFileUploadComponent.ts +0 -77
  245. package/app/server/routes/env-test.ts +0 -110
  246. package/core/client/hooks/index.ts +0 -7
  247. package/core/client/hooks/useHybridLiveComponent.ts +0 -685
  248. package/core/client/hooks/useTypedLiveComponent.ts +0 -133
  249. package/core/client/hooks/useWebSocket.ts +0 -361
  250. package/core/config/env.ts +0 -546
  251. package/core/config/loader.ts +0 -522
  252. package/core/config/runtime-config.ts +0 -327
  253. package/core/config/validator.ts +0 -540
  254. package/core/server/backend-entry.ts +0 -51
  255. package/core/server/standalone.ts +0 -106
  256. package/core/utils/regenerate-files.ts +0 -69
  257. package/fluxstack.config.ts +0 -354
@@ -0,0 +1,599 @@
1
+ # Build System
2
+
3
+ **Version:** 1.11.0 | **Updated:** 2025-02-08
4
+
5
+ ## Quick Facts
6
+
7
+ - Builder class: `FluxStackBuilder` in `core/build/index.ts`
8
+ - Dev command: `bun run dev` (hot reload with `--watch`)
9
+ - Build command: `bun run build` (production optimized)
10
+ - Modes: Full-stack, Frontend-only, Backend-only
11
+ - Bundler: Bun native bundler
12
+ - Frontend: Vite for React development
13
+ - Docker: Multi-stage production images
14
+
15
+ ## Development Mode
16
+
17
+ ### Full-Stack Development
18
+
19
+ ```bash
20
+ bun run dev
21
+ # or
22
+ bun run core/cli/index.ts dev
23
+ ```
24
+
25
+ **What Happens**:
26
+ 1. Spawns `bun --watch app/server/index.ts`
27
+ 2. Bun watches for file changes (hot reload)
28
+ 3. Server starts on `BACKEND_PORT` (default: 3000)
29
+ 4. Vite plugin starts frontend on `VITE_PORT` (default: 5173)
30
+ 5. Backend proxies frontend requests to Vite
31
+
32
+ **Environment Variables**:
33
+ ```bash
34
+ FLUXSTACK_MODE=full-stack
35
+ BACKEND_PORT=3000
36
+ FRONTEND_PORT=5173
37
+ NODE_ENV=development
38
+ ```
39
+
40
+ **File Watching**:
41
+ - Bun's `--watch` flag monitors all imported files
42
+ - Changes trigger automatic restart
43
+ - Fast reload (< 1 second typically)
44
+ - Preserves process state where possible
45
+
46
+ ### Frontend-Only Mode
47
+
48
+ ```bash
49
+ bun run dev --frontend-only
50
+ # or
51
+ bun run dev:frontend
52
+ ```
53
+
54
+ **What Happens**:
55
+ 1. Spawns `bun --watch core/client/standalone-entry.ts`
56
+ 2. Starts Vite dev server only
57
+ 3. No backend server running
58
+ 4. Useful for UI development
59
+
60
+ **Use Cases**:
61
+ - Pure frontend development
62
+ - Working with mock data
63
+ - UI component development
64
+ - Faster startup when backend not needed
65
+
66
+ ### Backend-Only Mode
67
+
68
+ ```bash
69
+ bun run dev --backend-only
70
+ # or
71
+ bun run dev:backend
72
+ ```
73
+
74
+ **What Happens**:
75
+ 1. Spawns `bun --watch app/server/index.ts`
76
+ 2. Starts Elysia server only
77
+ 3. No Vite dev server
78
+ 4. Vite plugin disabled
79
+
80
+ **Environment Variables**:
81
+ ```bash
82
+ FLUXSTACK_MODE=backend-only
83
+ ```
84
+
85
+ **Use Cases**:
86
+ - API development
87
+ - Testing backend logic
88
+ - Working with external frontend
89
+ - Faster startup when frontend not needed
90
+
91
+ ### Custom Ports
92
+
93
+ ```bash
94
+ bun run dev --port 4000 --frontend-port 8080
95
+ ```
96
+
97
+ ## Production Build
98
+
99
+ ### Full Build
100
+
101
+ ```bash
102
+ bun run build
103
+ # or
104
+ cross-env NODE_ENV=production bun run core/cli/index.ts build
105
+ ```
106
+
107
+ **Build Process**:
108
+
109
+ ```mermaid
110
+ graph TD
111
+ A[Start Build] --> B[Load Plugins]
112
+ B --> C[Execute onBeforeBuild hooks]
113
+ C --> D[Run Pre-build Checks]
114
+ D --> E[Validate Configuration]
115
+ E --> F{Clean Output?}
116
+ F -->|Yes| G[Clean dist/]
117
+ F -->|No| H[Execute onBuild hooks]
118
+ G --> H
119
+ H --> I[Build Client - Vite]
120
+ I --> J[Build Server - Bun]
121
+ J --> K{Build Success?}
122
+ K -->|No| L[Execute onBuildError hooks]
123
+ K -->|Yes| M[Process Assets]
124
+ M --> N[Execute onBuildAsset hooks]
125
+ N --> O{Optimize?}
126
+ O -->|Yes| P[Run Optimizer]
127
+ O -->|No| Q[Create Docker Files]
128
+ P --> Q
129
+ Q --> R[Generate Build Manifest]
130
+ R --> S[Execute onBuildComplete hooks]
131
+ S --> T[Print Build Summary]
132
+ L --> U[Return Build Error]
133
+ T --> V[Return Build Success]
134
+ ```
135
+
136
+ **Output Structure**:
137
+ ```
138
+ dist/
139
+ ├── client/ # Vite build output
140
+ │ ├── assets/ # JS, CSS, images
141
+ │ ├── index.html # Entry HTML
142
+ │ └── ...
143
+ ├── index.js # Bundled server
144
+ ├── package.json # Dependencies for Docker
145
+ ├── .env # Production environment
146
+ ├── Dockerfile # Production Docker image
147
+ ├── docker-compose.yml # Docker Compose config
148
+ └── .dockerignore # Docker ignore rules
149
+ ```
150
+
151
+ ### Frontend-Only Build
152
+
153
+ ```bash
154
+ bun run build --frontend-only
155
+ # or
156
+ bun run build:frontend
157
+ ```
158
+
159
+ **What Happens**:
160
+ 1. Runs Vite build only
161
+ 2. Outputs to `dist/client/`
162
+ 3. Optimized for production (minified, tree-shaken)
163
+ 4. No server bundle created
164
+
165
+ **Use Cases**:
166
+ - Static site deployment
167
+ - CDN hosting
168
+ - Separate frontend deployment
169
+
170
+ ### Backend-Only Build
171
+
172
+ ```bash
173
+ bun run build --backend-only
174
+ # or
175
+ bun run build:backend
176
+ ```
177
+
178
+ **What Happens**:
179
+ 1. Runs Bun bundler only
180
+ 2. Bundles `app/server/index.ts` to `dist/index.js`
181
+ 3. No frontend build
182
+ 4. Includes all server dependencies
183
+
184
+ **Use Cases**:
185
+ - API-only deployment
186
+ - Microservice deployment
187
+ - Separate backend deployment
188
+
189
+ ## Build Configuration
190
+
191
+ ### Build Options
192
+
193
+ From `config/system/build.config.ts`:
194
+
195
+ ```typescript
196
+ {
197
+ target: 'bun', // Build target (bun, node)
198
+ outDir: 'dist', // Output directory
199
+ mode: 'production', // Build mode
200
+ sourceMaps: false, // Generate source maps
201
+ minify: true, // Minify output
202
+ clean: true, // Clean output before build
203
+ optimize: true, // Run optimizer
204
+ external: [] // External dependencies
205
+ }
206
+ ```
207
+
208
+ ### Client Build Options
209
+
210
+ From `config/system/client.config.ts`:
211
+
212
+ ```typescript
213
+ {
214
+ outDir: 'dist/client', // Client output directory
215
+ sourceMaps: false, // Generate source maps
216
+ minify: true, // Minify output
217
+ treeshake: true, // Remove unused code
218
+ compress: true // Compress assets
219
+ }
220
+ ```
221
+
222
+ ### Optimization Options
223
+
224
+ From `config/system/optimization.config.ts`:
225
+
226
+ ```typescript
227
+ {
228
+ minify: true, // Minify JS/CSS
229
+ treeshake: true, // Remove dead code
230
+ compress: true, // Compress output
231
+ removeUnusedCSS: false, // Remove unused CSS
232
+ optimizeImages: false, // Optimize images
233
+ bundleAnalyzer: false // Generate bundle analysis
234
+ }
235
+ ```
236
+
237
+ ## Bundler
238
+
239
+ ### Bun Bundler
240
+
241
+ **Features**:
242
+ - Native Bun bundler (fast)
243
+ - Supports TypeScript natively
244
+ - Tree-shaking enabled
245
+ - Minification built-in
246
+ - Source maps optional
247
+
248
+ **Server Bundling**:
249
+ ```typescript
250
+ await bundler.bundleServer("app/server/index.ts")
251
+ ```
252
+
253
+ **Output**:
254
+ - Single `dist/index.js` file
255
+ - All dependencies bundled
256
+ - External packages excluded (if configured)
257
+
258
+ ### Vite Bundler
259
+
260
+ **Features**:
261
+ - React Fast Refresh
262
+ - Hot Module Replacement (HMR)
263
+ - CSS preprocessing
264
+ - Asset optimization
265
+ - Code splitting
266
+
267
+ **Client Bundling**:
268
+ ```typescript
269
+ await bundler.bundleClient({
270
+ env: {
271
+ VITE_BUILD_OUTDIR: 'dist/client',
272
+ VITE_BUILD_SOURCEMAPS: 'false'
273
+ }
274
+ })
275
+ ```
276
+
277
+ **Output**:
278
+ - `dist/client/index.html`
279
+ - `dist/client/assets/*.js` (code-split chunks)
280
+ - `dist/client/assets/*.css`
281
+ - Optimized images and fonts
282
+
283
+ ## Optimizer
284
+
285
+ ### Optimization Process
286
+
287
+ When `optimize: true`:
288
+
289
+ 1. **Minification**: Compress JS/CSS
290
+ 2. **Tree-shaking**: Remove unused code
291
+ 3. **Compression**: Gzip/Brotli compression
292
+ 4. **CSS Optimization**: Remove unused CSS (if enabled)
293
+ 5. **Image Optimization**: Compress images (if enabled)
294
+
295
+ **Metrics Tracked**:
296
+ ```typescript
297
+ {
298
+ originalSize: number, // Size before optimization
299
+ optimizedSize: number, // Size after optimization
300
+ compressionRatio: number, // Percentage saved
301
+ duration: number // Time taken
302
+ }
303
+ ```
304
+
305
+ ## Docker Configuration
306
+
307
+ ### Dockerfile
308
+
309
+ Generated in `dist/Dockerfile`:
310
+
311
+ ```dockerfile
312
+ FROM oven/bun:1.3-alpine AS production
313
+
314
+ WORKDIR /app
315
+
316
+ # Copy package.json first for better caching
317
+ COPY package.json ./
318
+
319
+ # Install dependencies
320
+ RUN bun install --frozen-lockfile
321
+
322
+ # Copy built application
323
+ COPY . .
324
+
325
+ # Create non-root user
326
+ RUN addgroup -g 1001 -S fluxstack && \
327
+ adduser -S fluxstack -u 1001
328
+
329
+ # Set permissions
330
+ RUN chown -R fluxstack:fluxstack /app
331
+ USER fluxstack
332
+
333
+ # Environment variables
334
+ ENV NODE_ENV=production
335
+ ENV PORT=3000
336
+
337
+ # Health check
338
+ HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
339
+ CMD bun run -e "fetch('http://localhost:3000/api/health').then(r => r.ok ? process.exit(0) : process.exit(1))" || exit 1
340
+
341
+ # Expose port
342
+ EXPOSE 3000
343
+
344
+ # Start the application
345
+ CMD ["bun", "run", "index.js"]
346
+ ```
347
+
348
+ **Features**:
349
+ - Multi-stage build (production only)
350
+ - Alpine Linux (small image size)
351
+ - Non-root user (security)
352
+ - Health check (container orchestration)
353
+ - Frozen lockfile (reproducible builds)
354
+
355
+ ### docker-compose.yml
356
+
357
+ Generated in `dist/docker-compose.yml`:
358
+
359
+ ```yaml
360
+ version: '3.8'
361
+
362
+ services:
363
+ fluxstack:
364
+ build: .
365
+ ports:
366
+ - "3000:3000"
367
+ environment:
368
+ - NODE_ENV=production
369
+ - PORT=3000
370
+ restart: unless-stopped
371
+ healthcheck:
372
+ test: ["CMD", "bun", "run", "-e", "fetch('http://localhost:3000/api/health').then(r => r.ok ? process.exit(0) : process.exit(1))"]
373
+ interval: 30s
374
+ timeout: 3s
375
+ retries: 3
376
+ deploy:
377
+ resources:
378
+ limits:
379
+ memory: 512M
380
+ reservations:
381
+ memory: 256M
382
+ ```
383
+
384
+ **Features**:
385
+ - Resource limits (memory)
386
+ - Health checks
387
+ - Restart policy
388
+ - Port mapping
389
+
390
+ ### .dockerignore
391
+
392
+ Generated in `dist/.dockerignore`:
393
+
394
+ ```
395
+ node_modules
396
+ .git
397
+ .gitignore
398
+ README.md
399
+ .env.local
400
+ .env.*.local
401
+ *.log
402
+ coverage
403
+ .vscode
404
+ .idea
405
+ ```
406
+
407
+ **Purpose**: Reduce Docker context size and build time
408
+
409
+ ## Build Hooks
410
+
411
+ Plugins can hook into build process:
412
+
413
+ ### onBeforeBuild
414
+
415
+ Execute before build starts:
416
+ ```typescript
417
+ onBeforeBuild: async (context: BuildContext) => {
418
+ // Validate environment
419
+ // Generate code
420
+ // Clean directories
421
+ }
422
+ ```
423
+
424
+ ### onBuild
425
+
426
+ Execute during build:
427
+ ```typescript
428
+ onBuild: async (context: BuildContext) => {
429
+ // Custom build steps
430
+ // Generate assets
431
+ // Transform code
432
+ }
433
+ ```
434
+
435
+ ### onBuildAsset
436
+
437
+ Execute for each built asset:
438
+ ```typescript
439
+ onBuildAsset: async (context: BuildAssetContext) => {
440
+ // context.assetPath - file path
441
+ // context.assetType - 'js' | 'css' | 'html' | 'image' | 'font' | 'other'
442
+ // context.size - file size
443
+
444
+ // Optimize asset
445
+ // Upload to CDN
446
+ // Generate metadata
447
+ }
448
+ ```
449
+
450
+ ### onBuildComplete
451
+
452
+ Execute after successful build:
453
+ ```typescript
454
+ onBuildComplete: async (context: BuildContext) => {
455
+ // Upload artifacts
456
+ // Send notifications
457
+ // Update deployment
458
+ }
459
+ ```
460
+
461
+ ### onBuildError
462
+
463
+ Execute on build failure:
464
+ ```typescript
465
+ onBuildError: async (context: BuildErrorContext) => {
466
+ // context.error - the error
467
+ // context.file - file that caused error (if known)
468
+ // context.line - line number (if known)
469
+
470
+ // Log error
471
+ // Send alert
472
+ // Cleanup
473
+ }
474
+ ```
475
+
476
+ ## Build Manifest
477
+
478
+ Generated in `dist/manifest.json`:
479
+
480
+ ```json
481
+ {
482
+ "version": "1.11.0",
483
+ "timestamp": "2025-02-08T12:00:00.000Z",
484
+ "target": "bun",
485
+ "mode": "production",
486
+ "client": {
487
+ "entryPoints": [],
488
+ "chunks": [],
489
+ "assets": ["index.html", "assets/index-abc123.js"],
490
+ "publicPath": "/"
491
+ },
492
+ "server": {
493
+ "entryPoint": "index.js",
494
+ "dependencies": [],
495
+ "externals": []
496
+ },
497
+ "optimization": {
498
+ "minified": true,
499
+ "treeshaken": true,
500
+ "compressed": true,
501
+ "originalSize": 1048576,
502
+ "optimizedSize": 524288,
503
+ "compressionRatio": 50.0
504
+ },
505
+ "metrics": {
506
+ "buildTime": 5000,
507
+ "bundleTime": 3000,
508
+ "optimizationTime": 1000,
509
+ "totalSize": 524288,
510
+ "gzippedSize": 262144,
511
+ "chunkCount": 5,
512
+ "assetCount": 10
513
+ }
514
+ }
515
+ ```
516
+
517
+ ## Pre-build Checks
518
+
519
+ Automatic checks before build:
520
+
521
+ 1. **Version Sync**: Sync version across package.json files
522
+ 2. **Configuration Validation**: Ensure valid build config
523
+ 3. **Dependency Check**: Verify all dependencies installed
524
+
525
+ ## Build Summary
526
+
527
+ After successful build, displays:
528
+
529
+ ```
530
+ ✓ Build Completed Successfully
531
+
532
+ Build Time: 5.2s
533
+ Output Directory: dist
534
+ Client Assets: 10
535
+ Total Size: 512 KB
536
+ Compression: 50.00%
537
+ Docker Ready: ✓
538
+ ```
539
+
540
+ ## Deployment
541
+
542
+ ### Docker Deployment
543
+
544
+ ```bash
545
+ cd dist
546
+ docker build -t fluxstack-app .
547
+ docker run -p 3000:3000 fluxstack-app
548
+ ```
549
+
550
+ Or with Docker Compose:
551
+ ```bash
552
+ cd dist
553
+ docker-compose up -d
554
+ ```
555
+
556
+ ### Direct Deployment
557
+
558
+ ```bash
559
+ cd dist
560
+ bun install --production
561
+ bun run index.js
562
+ ```
563
+
564
+ ## Performance Tips
565
+
566
+ 1. **Use --frontend-only**: Faster builds when backend unchanged
567
+ 2. **Use --backend-only**: Faster builds when frontend unchanged
568
+ 3. **Disable Source Maps**: Faster production builds
569
+ 4. **Enable Optimization**: Smaller bundle sizes
570
+ 5. **Use Docker**: Consistent deployment environment
571
+
572
+ ## Troubleshooting
573
+
574
+ ### Build Fails
575
+
576
+ - Check `onBuildError` hook logs
577
+ - Verify all dependencies installed
578
+ - Check TypeScript errors
579
+ - Validate configuration
580
+
581
+ ### Large Bundle Size
582
+
583
+ - Enable tree-shaking
584
+ - Check for duplicate dependencies
585
+ - Use bundle analyzer
586
+ - Externalize large dependencies
587
+
588
+ ### Slow Builds
589
+
590
+ - Disable source maps
591
+ - Use incremental builds
592
+ - Check plugin hooks (may be slow)
593
+ - Reduce optimization level
594
+
595
+ ## Related
596
+
597
+ - [Framework Lifecycle](./framework-lifecycle.md) - Build hooks integration
598
+ - [Plugin System](./plugin-system.md) - Build hook details
599
+ - [CLI Commands](../reference/cli-commands.md) - Build command options