create-fluxstack 1.10.1 → 1.12.1

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 +161 -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 +127 -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
@@ -1,48 +1,28 @@
1
1
  /**
2
- * Backward Compatibility Layer for FluxStack Configuration
3
- * This file maintains compatibility with existing imports while redirecting to the new system
4
- * @deprecated Use the configuration from the root fluxstack.config.ts instead
2
+ * FluxStack Configuration - Main Entry Point
3
+ * Re-exports the complete FluxStack configuration from system/
4
+ *
5
+ * ✨ 100% modular configuration using defineConfig
6
+ * ✨ No composer needed - direct config composition
7
+ * ✨ All configs are type-safe with automatic validation
8
+ *
9
+ * To customize configuration, edit the individual config files:
10
+ * - system/app.config.ts - Application metadata
11
+ * - system/server.config.ts - Server and CORS settings
12
+ * - system/client.config.ts - Vite, proxy, and client build
13
+ * - system/build.config.ts - Server build and optimization
14
+ * - system/logger.config.ts - Logging configuration
15
+ * - system/plugins.config.ts - Plugin management
16
+ * - system/monitoring.config.ts - Monitoring and metrics
17
+ * - system/runtime.config.ts - Runtime-reloadable settings
18
+ * - system/system.config.ts - System information
19
+ * - database.config.ts - Database connection (optional)
20
+ * - services.config.ts - JWT, Email, Storage (optional)
5
21
  */
6
22
 
7
- import { getConfigSync, createLegacyConfig } from '@/core/config'
8
- import type { FluxStackConfig } from '@/core/config'
9
-
10
- // Load the new configuration
11
- const newConfig = getConfigSync()
12
-
13
- // Create legacy configuration format for backward compatibility
14
- const legacyConfig = createLegacyConfig(newConfig)
15
-
16
- // Export in the old format
17
- export const config = legacyConfig
18
-
19
- // Also export the environment config for backward compatibility
20
- export const envConfig = {
21
- NODE_ENV: process.env.NODE_ENV || 'development',
22
- HOST: newConfig.server.host,
23
- PORT: newConfig.server.port,
24
- FRONTEND_PORT: newConfig.client.port,
25
- BACKEND_PORT: newConfig.server.port,
26
- VITE_API_URL: newConfig.client.proxy.target,
27
- API_URL: newConfig.client.proxy.target,
28
- CORS_ORIGINS: newConfig.server.cors.origins,
29
- CORS_METHODS: newConfig.server.cors.methods,
30
- CORS_HEADERS: newConfig.server.cors.headers,
31
- LOG_LEVEL: newConfig.logging.level,
32
- BUILD_TARGET: newConfig.build.target,
33
- BUILD_OUTDIR: newConfig.build.outDir,
34
- // Add other legacy environment variables as needed
35
- }
36
-
37
- // Warn about deprecated usage in development
38
- if (process.env.NODE_ENV === 'development') {
39
- console.warn(
40
- '⚠️ DEPRECATED: Importing from config/fluxstack.config.ts is deprecated.\n' +
41
- ' Please update your imports to use the new configuration system:\n' +
42
- ' import { getConfig } from "./core/config"\n' +
43
- ' or import config from "./fluxstack.config.ts"'
44
- )
45
- }
46
-
47
- // Export types for backward compatibility
48
- export type { FluxStackConfig }
23
+ export {
24
+ fluxStackConfig,
25
+ fluxStackConfig as config,
26
+ fluxStackConfig as default,
27
+ type FluxStackConfig
28
+ } from './system/fluxstack.config'
package/config/index.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * @example
7
7
  * ```ts
8
- * import { appConfig, serverConfig, databaseConfig } from '@/config'
8
+ * import { appConfig, serverConfig, databaseConfig } from '@config'
9
9
  *
10
10
  * // All configs are type-safe and validated!
11
11
  * console.log(appConfig.name) // string
@@ -16,22 +16,33 @@
16
16
  * console.log(servicesConfig.email.host) // string
17
17
  * console.log(monitoringConfig.metrics.enabled) // boolean
18
18
  * ```
19
+ *
20
+ * ✨ For type safety with optional features (database, auth, email, storage):
21
+ * Import types from this file instead of core:
22
+ * ```ts
23
+ * import type { DatabaseConfig, JWTConfig, EmailConfig, StorageConfig } from '@config'
24
+ * ```
19
25
  */
20
26
 
21
27
  // ============================================================================
22
28
  // 📦 CONFIG EXPORTS
23
29
  // ============================================================================
24
30
 
25
- export { appConfig } from './app.config'
26
- export { serverConfig } from './server.config'
27
- export { clientConfig } from './client.config'
28
- export { databaseConfig } from './database.config'
29
- export { servicesConfig } from './services.config'
30
- export { loggerConfig } from './logger.config'
31
- export { pluginsConfig } from './plugins.config'
32
- export { monitoringConfig } from './monitoring.config'
33
- export { appRuntimeConfig } from './runtime.config'
34
- export { systemConfig, systemRuntimeInfo } from './system.config'
31
+ // System configs (from config/system/)
32
+ export { appConfig } from './system/app.config'
33
+ export { serverConfig } from './system/server.config'
34
+ export { clientConfig } from './system/client.config'
35
+ export { buildConfig } from './system/build.config'
36
+ export { loggerConfig } from './system/logger.config'
37
+ export { pluginsConfig } from './system/plugins.config'
38
+ export { monitoringConfig } from './system/monitoring.config'
39
+ export { appRuntimeConfig } from './system/runtime.config'
40
+ export { systemConfig, systemRuntimeInfo } from './system/system.config'
41
+ export { databaseConfig } from './system/database.config'
42
+ export { servicesConfig } from './system/services.config'
43
+
44
+ // Main FluxStack config (composed)
45
+ export { fluxStackConfig, config as fluxConfig, type FluxStackConfig } from './fluxstack.config'
35
46
 
36
47
  // Plugin configs (re-exported for convenience)
37
48
  export { cryptoAuthConfig } from '../plugins/crypto-auth/config'
@@ -40,35 +51,35 @@ export { cryptoAuthConfig } from '../plugins/crypto-auth/config'
40
51
  // 📝 TYPE EXPORTS
41
52
  // ============================================================================
42
53
 
43
- // Core types
44
- export type { AppConfig, Environment } from './app.config'
54
+ // System config types
55
+ export type { AppConfig } from './system/app.config'
45
56
  export type {
46
57
  ServerConfig,
47
58
  CorsConfig,
48
59
  ServerFullConfig
49
- } from './server.config'
60
+ } from './system/server.config'
50
61
  export type {
51
62
  ClientConfig,
52
63
  ViteConfig,
53
- ProxyConfig,
54
64
  ClientBuildConfig
55
- } from './client.config'
56
- export type { DatabaseConfig } from './database.config'
65
+ } from './system/client.config'
57
66
  export type {
58
- EmailConfig,
59
- JWTConfig,
60
- StorageConfig,
61
- RedisConfig
62
- } from './services.config'
63
- export type { LoggerConfig } from './logger.config'
64
- export type { PluginsConfig } from './plugins.config'
67
+ BuildConfig,
68
+ OptimizationConfig,
69
+ BuildFullConfig
70
+ } from './system/build.config'
71
+ export type { LoggerConfig } from './system/logger.config'
72
+ export type { PluginsConfig } from './system/plugins.config'
65
73
  export type {
66
74
  MonitoringConfig,
67
75
  MetricsConfig,
68
76
  ProfilingConfig,
69
77
  MonitoringFullConfig
70
- } from './monitoring.config'
71
- export type { SystemConfig, SystemRuntimeInfo } from './system.config'
78
+ } from './system/monitoring.config'
79
+ export type { SystemConfig, SystemRuntimeInfo } from './system/system.config'
80
+ export type { AppRuntimeConfig } from './system/runtime.config'
81
+ export type { DatabaseConfig } from './system/database.config'
82
+ export type { ServicesConfig } from './system/services.config'
72
83
 
73
84
  // Plugin types
74
85
  export type { CryptoAuthConfig } from '../plugins/crypto-auth/config'
@@ -77,34 +88,42 @@ export type { CryptoAuthConfig } from '../plugins/crypto-auth/config'
77
88
  // 🎯 UNIFIED CONFIG OBJECT
78
89
  // ============================================================================
79
90
 
80
- import { appConfig } from './app.config'
81
- import { serverConfig } from './server.config'
82
- import { clientConfig } from './client.config'
83
- import { databaseConfig } from './database.config'
84
- import { servicesConfig } from './services.config'
85
- import { loggerConfig } from './logger.config'
86
- import { pluginsConfig } from './plugins.config'
87
- import { monitoringConfig } from './monitoring.config'
88
- import { appRuntimeConfig } from './runtime.config'
89
- import { systemConfig, systemRuntimeInfo } from './system.config'
91
+ import { appConfig } from './system/app.config'
92
+ import { serverConfig } from './system/server.config'
93
+ import { clientConfig } from './system/client.config'
94
+ import { buildConfig } from './system/build.config'
95
+ import { loggerConfig } from './system/logger.config'
96
+ import { pluginsConfig } from './system/plugins.config'
97
+ import { monitoringConfig } from './system/monitoring.config'
98
+ import { appRuntimeConfig } from './system/runtime.config'
99
+ import { systemConfig, systemRuntimeInfo } from './system/system.config'
100
+ import { databaseConfig } from './system/database.config'
101
+ import { servicesConfig } from './system/services.config'
90
102
  import { cryptoAuthConfig } from '../plugins/crypto-auth/config'
91
103
 
92
104
  /**
93
105
  * All configs in one object
94
106
  * Use this when you need access to multiple configs at once
107
+ *
108
+ * For the complete FluxStack configuration with proper structure,
109
+ * use `fluxStackConfig` from './fluxstack.config'
95
110
  */
96
111
  export const config = {
112
+ // System configs
97
113
  app: appConfig,
98
114
  server: serverConfig,
99
115
  client: clientConfig,
100
- database: databaseConfig,
101
- services: servicesConfig,
116
+ build: buildConfig,
102
117
  logger: loggerConfig,
103
118
  plugins: pluginsConfig,
104
119
  monitoring: monitoringConfig,
105
120
  runtime: appRuntimeConfig,
106
121
  system: systemConfig,
107
122
  systemRuntime: systemRuntimeInfo,
123
+ database: databaseConfig,
124
+ services: servicesConfig,
125
+
126
+ // Plugin configs
108
127
  cryptoAuth: cryptoAuthConfig
109
128
  } as const
110
129
 
@@ -1,114 +1,2 @@
1
- /**
2
- * Monitoring Configuration
3
- * Declarative monitoring, metrics and profiling configuration
4
- */
5
-
6
- import { defineConfig, defineNestedConfig, config } from '@/core/utils/config-schema'
7
- import { helpers } from '@/core/utils/env'
8
-
9
- /**
10
- * Metrics Configuration Schema
11
- */
12
- const metricsSchema = {
13
- enabled: config.boolean('ENABLE_METRICS', false),
14
-
15
- collectInterval: {
16
- type: 'number' as const,
17
- env: 'METRICS_INTERVAL',
18
- default: 5000,
19
- validate: (value: number) => {
20
- if (value < 1000) {
21
- return 'Metrics interval must be at least 1000ms'
22
- }
23
- return true
24
- }
25
- },
26
-
27
- httpMetrics: config.boolean('HTTP_METRICS', true),
28
-
29
- systemMetrics: config.boolean('SYSTEM_METRICS', true),
30
-
31
- customMetrics: config.boolean('CUSTOM_METRICS', false),
32
-
33
- // Metric exporters
34
- exportToConsole: config.boolean('METRICS_EXPORT_CONSOLE', helpers.isDevelopment()),
35
-
36
- exportToFile: config.boolean('METRICS_EXPORT_FILE', false),
37
-
38
- exportToHttp: config.boolean('METRICS_EXPORT_HTTP', false),
39
-
40
- exportHttpUrl: config.string('METRICS_EXPORT_URL'),
41
-
42
- // Metric storage
43
- retentionPeriod: config.number('METRICS_RETENTION_PERIOD', 3600000), // 1 hour in ms
44
-
45
- maxDataPoints: config.number('METRICS_MAX_DATA_POINTS', 1000)
46
- } as const
47
-
48
- /**
49
- * Profiling Configuration Schema
50
- */
51
- const profilingSchema = {
52
- enabled: config.boolean('PROFILING_ENABLED', false),
53
-
54
- sampleRate: {
55
- type: 'number' as const,
56
- env: 'PROFILING_SAMPLE_RATE',
57
- default: helpers.isProduction() ? 0.01 : 0.1,
58
- validate: (value: number) => {
59
- if (value < 0 || value > 1) {
60
- return 'Sample rate must be between 0 and 1'
61
- }
62
- return true
63
- }
64
- },
65
-
66
- memoryProfiling: config.boolean('MEMORY_PROFILING', false),
67
-
68
- cpuProfiling: config.boolean('CPU_PROFILING', false),
69
-
70
- heapSnapshot: config.boolean('HEAP_SNAPSHOT', false),
71
-
72
- // Profiling output
73
- outputDir: config.string('PROFILING_OUTPUT_DIR', 'profiling'),
74
-
75
- maxProfiles: config.number('PROFILING_MAX_PROFILES', 10)
76
- } as const
77
-
78
- /**
79
- * Monitoring Configuration Schema
80
- */
81
- const monitoringSchema = {
82
- enabled: config.boolean('ENABLE_MONITORING', false),
83
-
84
- // Exporters
85
- exporters: config.array('MONITORING_EXPORTERS', []),
86
-
87
- // Health checks
88
- enableHealthChecks: config.boolean('ENABLE_HEALTH_CHECKS', true),
89
-
90
- healthCheckInterval: config.number('HEALTH_CHECK_INTERVAL', 30000), // 30s
91
-
92
- // Alerting
93
- enableAlerts: config.boolean('ENABLE_ALERTS', false),
94
-
95
- alertWebhook: config.string('ALERT_WEBHOOK')
96
- } as const
97
-
98
- /**
99
- * Export monitoring config (nested)
100
- */
101
- export const monitoringConfig = defineNestedConfig({
102
- monitoring: monitoringSchema,
103
- metrics: metricsSchema,
104
- profiling: profilingSchema
105
- })
106
-
107
- // Export types
108
- export type MonitoringConfig = typeof monitoringConfig.monitoring
109
- export type MetricsConfig = typeof monitoringConfig.metrics
110
- export type ProfilingConfig = typeof monitoringConfig.profiling
111
- export type MonitoringFullConfig = typeof monitoringConfig
112
-
113
- // Export default
114
- export default monitoringConfig
1
+ export { monitoringConfig as default, monitoringConfig } from './system/monitoring.config'
2
+ export type { MonitoringConfig, MetricsConfig, ProfilingConfig, MonitoringFullConfig } from './system/monitoring.config'
@@ -1,80 +1,2 @@
1
- /**
2
- * Plugins Configuration
3
- * Declarative plugin management configuration
4
- */
5
-
6
- import { defineConfig, config } from '@/core/utils/config-schema'
7
- import { env } from '@/core/utils/env'
8
- import { FLUXSTACK_VERSION } from '@/core/utils/version'
9
-
10
- /**
11
- * Plugins configuration schema
12
- */
13
- const pluginsConfigSchema = {
14
- // Plugin management
15
- enabled: config.array(
16
- 'FLUXSTACK_PLUGINS_ENABLED',
17
- ['logger', 'swagger', 'vite', 'cors', 'static-files', 'crypto-auth']
18
- ),
19
-
20
- disabled: config.array('FLUXSTACK_PLUGINS_DISABLED', []),
21
-
22
- // Auto-discovery
23
- autoDiscover: config.boolean('PLUGINS_AUTO_DISCOVER', true),
24
-
25
- pluginsDir: config.string('PLUGINS_DIR', 'plugins'),
26
-
27
- // Plugin-specific configurations
28
- // Logger plugin (handled by logger.config.ts)
29
- loggerEnabled: config.boolean('LOGGER_PLUGIN_ENABLED', true),
30
-
31
- // Swagger plugin
32
- swaggerEnabled: config.boolean('SWAGGER_ENABLED', true),
33
- swaggerTitle: config.string('SWAGGER_TITLE', 'FluxStack API'),
34
- swaggerVersion: config.string('SWAGGER_VERSION', FLUXSTACK_VERSION),
35
- swaggerDescription: config.string(
36
- 'SWAGGER_DESCRIPTION',
37
- 'API documentation for FluxStack application'
38
- ),
39
- swaggerPath: config.string('SWAGGER_PATH', '/swagger'),
40
-
41
- // Swagger advanced options
42
- swaggerExcludePaths: config.array('SWAGGER_EXCLUDE_PATHS', []),
43
-
44
- // Swagger servers (comma-separated list of URLs)
45
- // Format: "url1|description1,url2|description2"
46
- // Example: "https://api.prod.com|Production,https://api.staging.com|Staging"
47
- swaggerServers: config.string('SWAGGER_SERVERS', ''),
48
-
49
- // Swagger UI options
50
- swaggerPersistAuthorization: config.boolean('SWAGGER_PERSIST_AUTH', true),
51
- swaggerDisplayRequestDuration: config.boolean('SWAGGER_DISPLAY_DURATION', true),
52
- swaggerEnableFilter: config.boolean('SWAGGER_ENABLE_FILTER', true),
53
- swaggerShowExtensions: config.boolean('SWAGGER_SHOW_EXTENSIONS', true),
54
- swaggerTryItOutEnabled: config.boolean('SWAGGER_TRY_IT_OUT', true),
55
-
56
- // Swagger authentication (Basic Auth)
57
- swaggerAuthEnabled: config.boolean('SWAGGER_AUTH_ENABLED', false),
58
- swaggerAuthUsername: config.string('SWAGGER_AUTH_USERNAME', 'admin'),
59
- swaggerAuthPassword: config.string('SWAGGER_AUTH_PASSWORD', ''),
60
-
61
- // Static files plugin
62
- staticFilesEnabled: config.boolean('STATIC_FILES_ENABLED', true),
63
- staticPublicDir: config.string('STATIC_PUBLIC_DIR', 'public'),
64
- staticUploadsDir: config.string('STATIC_UPLOADS_DIR', 'uploads'),
65
- staticCacheMaxAge: config.number('STATIC_CACHE_MAX_AGE', 31536000), // 1 year
66
- staticEnableUploads: config.boolean('STATIC_ENABLE_UPLOADS', true),
67
- staticEnablePublic: config.boolean('STATIC_ENABLE_PUBLIC', true),
68
-
69
- // CORS plugin (configuration via server.config.ts)
70
- // Vite plugin
71
- viteEnabled: config.boolean('VITE_PLUGIN_ENABLED', true)
72
- } as const
73
-
74
- export const pluginsConfig = defineConfig(pluginsConfigSchema)
75
-
76
- // Export type
77
- export type PluginsConfig = typeof pluginsConfig
78
-
79
- // Export default
80
- export default pluginsConfig
1
+ export { pluginsConfig as default, pluginsConfig } from './system/plugins.config'
2
+ export type { PluginsConfig } from './system/plugins.config'
@@ -1,68 +1,2 @@
1
- /**
2
- * Server Configuration
3
- * Server-specific settings (port, host, CORS, middleware)
4
- */
5
-
6
- import { defineConfig, defineNestedConfig, config } from '@/core/utils/config-schema'
7
-
8
- /**
9
- * CORS configuration schema
10
- */
11
- const corsSchema = {
12
- origins: config.array('CORS_ORIGINS', ['http://localhost:3000', 'http://localhost:5173']),
13
- methods: config.array('CORS_METHODS', ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS']),
14
- headers: config.array('CORS_HEADERS', ['Content-Type', 'Authorization']),
15
- credentials: config.boolean('CORS_CREDENTIALS', false),
16
- maxAge: config.number('CORS_MAX_AGE', 86400)
17
- } as const
18
-
19
- /**
20
- * Server configuration schema
21
- */
22
- const serverSchema = {
23
- // Server basics
24
- port: {
25
- type: 'number' as const,
26
- env: 'PORT',
27
- default: 3000,
28
- required: true,
29
- validate: (value: number) => {
30
- if (value < 1 || value > 65535) {
31
- return 'Port must be between 1 and 65535'
32
- }
33
- return true
34
- }
35
- },
36
-
37
- host: config.string('HOST', 'localhost', true),
38
-
39
- apiPrefix: {
40
- type: 'string' as const,
41
- env: 'API_PREFIX',
42
- default: '/api',
43
- validate: (value: string) => value.startsWith('/') || 'API prefix must start with /'
44
- },
45
-
46
- // Backend-only mode
47
- backendPort: config.number('BACKEND_PORT', 3001),
48
-
49
- // Features
50
- enableRequestLogging: config.boolean('ENABLE_REQUEST_LOGGING', true),
51
- showBanner: config.boolean('SHOW_SERVER_BANNER', true)
52
- } as const
53
-
54
- /**
55
- * Export server config (nested with CORS)
56
- */
57
- export const serverConfig = defineNestedConfig({
58
- server: serverSchema,
59
- cors: corsSchema
60
- })
61
-
62
- // Export types
63
- export type ServerConfig = typeof serverConfig.server
64
- export type CorsConfig = typeof serverConfig.cors
65
- export type ServerFullConfig = typeof serverConfig
66
-
67
- // Export default
68
- export default serverConfig
1
+ export { serverConfig as default, serverConfig } from './system/server.config'
2
+ export type { ServerConfig, CorsConfig, ServerFullConfig } from './system/server.config'
@@ -1,130 +1,2 @@
1
- /**
2
- * External Services Configuration
3
- * Laravel-style declarative config for third-party services
4
- */
5
-
6
- import { defineConfig, defineNestedConfig, config } from '@/core/utils/config-schema'
7
-
8
- /**
9
- * Email service configuration
10
- */
11
- const emailSchema = {
12
- // SMTP
13
- host: config.string('SMTP_HOST'),
14
-
15
- port: {
16
- type: 'number' as const,
17
- env: 'SMTP_PORT',
18
- default: 587,
19
- validate: (value: number) => value > 0 || 'SMTP port must be positive'
20
- },
21
-
22
- user: config.string('SMTP_USER'),
23
- password: config.string('SMTP_PASSWORD'),
24
-
25
- secure: config.boolean('SMTP_SECURE', false),
26
-
27
- from: {
28
- type: 'string' as const,
29
- env: 'SMTP_FROM',
30
- default: 'noreply@example.com',
31
- validate: (value: string) => {
32
- const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
33
- return emailRegex.test(value) || 'From email must be valid'
34
- }
35
- },
36
-
37
- replyTo: config.string('SMTP_REPLY_TO')
38
- }
39
-
40
- /**
41
- * JWT authentication configuration
42
- */
43
- const jwtSchema = {
44
- secret: {
45
- type: 'string' as const,
46
- env: 'JWT_SECRET',
47
- default: undefined,
48
- required: false,
49
- validate: (value: string) => {
50
- if (!value) return true // Optional
51
- if (value.length < 32) {
52
- return 'JWT secret must be at least 32 characters for security'
53
- }
54
- return true
55
- }
56
- },
57
-
58
- expiresIn: config.string('JWT_EXPIRES_IN', '24h'),
59
-
60
- algorithm: config.enum(
61
- 'JWT_ALGORITHM',
62
- ['HS256', 'HS384', 'HS512', 'RS256', 'RS384', 'RS512'] as const,
63
- 'HS256'
64
- ),
65
-
66
- issuer: config.string('JWT_ISSUER', 'fluxstack'),
67
-
68
- audience: config.string('JWT_AUDIENCE')
69
- }
70
-
71
- /**
72
- * Storage configuration
73
- */
74
- const storageSchema = {
75
- provider: config.enum(
76
- 'STORAGE_PROVIDER',
77
- ['local', 's3', 'gcs', 'azure'] as const,
78
- 'local'
79
- ),
80
-
81
- uploadPath: config.string('UPLOAD_PATH', './uploads'),
82
-
83
- maxFileSize: {
84
- type: 'number' as const,
85
- env: 'MAX_FILE_SIZE',
86
- default: 10485760, // 10MB
87
- validate: (value: number) => value > 0 || 'Max file size must be positive'
88
- },
89
-
90
- allowedTypes: config.array('ALLOWED_FILE_TYPES', ['image/*', 'application/pdf']),
91
-
92
- // S3 specific
93
- s3Bucket: config.string('S3_BUCKET'),
94
- s3Region: config.string('S3_REGION', 'us-east-1'),
95
- s3AccessKey: config.string('S3_ACCESS_KEY'),
96
- s3SecretKey: config.string('S3_SECRET_KEY')
97
- }
98
-
99
- /**
100
- * Redis configuration
101
- */
102
- const redisSchema = {
103
- host: config.string('REDIS_HOST', 'localhost'),
104
- port: config.number('REDIS_PORT', 6379),
105
- password: config.string('REDIS_PASSWORD'),
106
- db: config.number('REDIS_DB', 0),
107
-
108
- keyPrefix: config.string('REDIS_KEY_PREFIX', 'fluxstack:'),
109
-
110
- enableTls: config.boolean('REDIS_TLS', false)
111
- }
112
-
113
- /**
114
- * Export all service configs as nested object
115
- */
116
- export const servicesConfig = defineNestedConfig({
117
- email: emailSchema,
118
- jwt: jwtSchema,
119
- storage: storageSchema,
120
- redis: redisSchema
121
- })
122
-
123
- // Export types
124
- export type EmailConfig = typeof servicesConfig.email
125
- export type JWTConfig = typeof servicesConfig.jwt
126
- export type StorageConfig = typeof servicesConfig.storage
127
- export type RedisConfig = typeof servicesConfig.redis
128
-
129
- // Export default
130
- export default servicesConfig
1
+ export { servicesConfig as default, servicesConfig } from './system/services.config'
2
+ export type { ServicesConfig } from './system/services.config'
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Application Configuration
3
+ * Core application settings and metadata
4
+ */
5
+
6
+ import { defineConfig, config } from '@core/utils/config-schema'
7
+
8
+ /**
9
+ * App configuration schema
10
+ */
11
+ export const appConfig = defineConfig({
12
+ // Application metadata
13
+ name: config.string('APP_NAME', 'fluxstack-app', true),
14
+ version: config.string('APP_VERSION', '1.0.0', true),
15
+ description: config.string('APP_DESCRIPTION', 'A FluxStack application', false),
16
+ env: config.enum('NODE_ENV', ['development', 'production', 'test'] as const, 'development', false),
17
+
18
+ // Runtime mode (set by CLI: --backend-only, --frontend-only)
19
+ mode: config.enum('FLUXSTACK_MODE', ['full-stack', 'backend-only', 'frontend-only'] as const, 'full-stack', false),
20
+
21
+ // Security
22
+ trustProxy: config.boolean('APP_TRUST_PROXY', false),
23
+ sessionSecret: config.string('APP_SESSION_SECRET', '')
24
+ })
25
+
26
+ // Export type
27
+ export type AppConfig = typeof appConfig
28
+
29
+ export default appConfig