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,364 @@
1
+ # Troubleshooting
2
+
3
+ **Version:** 1.11.0 | **Updated:** 2025-02-08
4
+
5
+ ## Quick Facts
6
+
7
+ - Most issues: missing response schemas, wrong imports, or port conflicts
8
+ - Always run `bunx tsc --noEmit` to check types first
9
+ - Development URLs: Backend :3000, Frontend :5173, Swagger :3000/swagger
10
+
11
+ ## Diagnostic Commands
12
+
13
+ ```bash
14
+ # Check APIs
15
+ curl http://localhost:3000/api/health
16
+
17
+ # Check TypeScript
18
+ bunx tsc --noEmit
19
+
20
+ # Check tests
21
+ bun run test
22
+
23
+ # Check build
24
+ bun run build
25
+ ```
26
+
27
+ ## Type Inference Issues
28
+
29
+ ### Problem: Eden Treaty Returns `unknown`
30
+
31
+ **Symptom:**
32
+ ```typescript
33
+ const { data, error } = await api.users.get()
34
+ // data is 'unknown' instead of { users: User[] }
35
+ ```
36
+
37
+ **Cause:** Missing response schema in route definition.
38
+
39
+ **Solution:**
40
+ ```typescript
41
+ // Add response schema to route
42
+ export const usersRoutes = new Elysia()
43
+ .get("/", handler, {
44
+ response: t.Object({
45
+ users: t.Array(t.Object({
46
+ id: t.Number(),
47
+ name: t.String(),
48
+ email: t.String()
49
+ }))
50
+ })
51
+ })
52
+ ```
53
+
54
+ ### Problem: TypeScript Doesn't See Type Changes
55
+
56
+ **Solution:**
57
+ ```bash
58
+ # 1. Restart TS Server (VS Code)
59
+ Ctrl+Shift+P → "TypeScript: Restart TS Server"
60
+
61
+ # 2. Or clear cache
62
+ rm -rf node_modules/.cache
63
+ bun install
64
+ ```
65
+
66
+ ## Server Issues
67
+
68
+ ### Problem: Port Already in Use
69
+
70
+ **Symptom:** `Error: EADDRINUSE: address already in use :::3000`
71
+
72
+ **Solution:**
73
+ ```bash
74
+ # Find process (Linux/Mac)
75
+ lsof -i :3000
76
+ kill -9 <PID>
77
+
78
+ # Find process (Windows)
79
+ netstat -ano | findstr :3000
80
+ taskkill /F /PID <PID>
81
+
82
+ # Or use different port
83
+ PORT=3001 bun run dev
84
+ ```
85
+
86
+ ### Problem: Hot Reload Not Working
87
+
88
+ **Solution:**
89
+ ```bash
90
+ # Kill all node/bun processes
91
+ pkill -f bun # Mac/Linux
92
+ taskkill /F /IM bun.exe # Windows
93
+
94
+ # Restart
95
+ bun run dev
96
+ ```
97
+
98
+ ### Problem: Vite Module Runner Error
99
+
100
+ **Symptom:** `Cannot find module 'vite/module-runner'`
101
+
102
+ **Cause:** Vite being imported in production mode.
103
+
104
+ **Solution:**
105
+ ```bash
106
+ # Ensure NODE_ENV is set correctly
107
+ export NODE_ENV=development
108
+ bun run dev
109
+ ```
110
+
111
+ ## API/Request Issues
112
+
113
+ ### Problem: CORS Errors
114
+
115
+ **Symptom:** Browser console shows CORS policy errors.
116
+
117
+ **Note:** CORS is expected when frontend (5173) calls backend (3000).
118
+
119
+ **Verify API works:**
120
+ ```bash
121
+ curl http://localhost:3000/api/health
122
+ ```
123
+
124
+ **If CORS config needed:**
125
+ ```typescript
126
+ // config/server.config.ts
127
+ export const serverConfig = defineConfig({
128
+ cors: {
129
+ origins: config.array('CORS_ORIGINS', ['http://localhost:5173']),
130
+ credentials: config.boolean('CORS_CREDENTIALS', true)
131
+ }
132
+ })
133
+ ```
134
+
135
+ ### Problem: 404 Not Found
136
+
137
+ **Check 1:** Route registration
138
+ ```typescript
139
+ // Ensure route is registered in app/server/routes/index.ts
140
+ export const apiRoutes = new Elysia({ prefix: "/api" })
141
+ .use(usersRoutes) // ← Must be registered
142
+ ```
143
+
144
+ **Check 2:** Prefix stacking
145
+ ```typescript
146
+ // If usersRoutes has prefix "/users"
147
+ // And apiRoutes has prefix "/api"
148
+ // Final URL is: /api/users
149
+ ```
150
+
151
+ ### Problem: Validation Errors
152
+
153
+ **Symptom:** `Body validation failed`
154
+
155
+ **Solution:** Verify request matches schema:
156
+ ```typescript
157
+ // Route expects:
158
+ body: t.Object({
159
+ name: t.String({ minLength: 2 }),
160
+ email: t.String({ format: "email" })
161
+ })
162
+
163
+ // Request must provide:
164
+ await api.users.post({
165
+ name: "Jo", // ← At least 2 chars
166
+ email: "jo@x.com" // ← Valid email format
167
+ })
168
+ ```
169
+
170
+ ## Build Issues
171
+
172
+ ### Problem: Build Fails with Import Errors
173
+
174
+ **Symptom:** `Cannot resolve './../../something'`
175
+
176
+ **Solution:** Use path aliases:
177
+ ```typescript
178
+ // ❌ Wrong
179
+ import { api } from '../../../lib/eden-api'
180
+
181
+ // ✅ Correct
182
+ import { api } from '@client/lib/eden-api'
183
+ ```
184
+
185
+ ### Problem: Build Type Errors
186
+
187
+ **Solution:**
188
+ ```bash
189
+ # Check types before build
190
+ bunx tsc --noEmit
191
+
192
+ # Clear and rebuild
193
+ rm -rf dist/
194
+ bun run build
195
+ ```
196
+
197
+ ### Problem: Assets Not Loading in Production
198
+
199
+ **Solution:** Use public/ folder for static assets:
200
+ ```typescript
201
+ // ❌ Wrong - bundler might not include
202
+ import logo from '../assets/logo.png'
203
+
204
+ // ✅ Correct - serve from public/
205
+ <img src="/logo.png" /> // File at public/logo.png
206
+ ```
207
+
208
+ ## Plugin Issues
209
+
210
+ ### Problem: Plugin Not Loading
211
+
212
+ **Check 1:** NPM plugins require whitelist
213
+ ```bash
214
+ # .env
215
+ PLUGINS_DISCOVER_NPM=true
216
+ PLUGINS_ALLOWED=plugin-name
217
+ ```
218
+
219
+ **Check 2:** Project plugins auto-discover
220
+ ```bash
221
+ # Must be in plugins/ directory
222
+ plugins/my-plugin/index.ts
223
+ ```
224
+
225
+ **Check 3:** Plugin exports correctly
226
+ ```typescript
227
+ // plugins/my-plugin/index.ts
228
+ export default {
229
+ name: 'my-plugin',
230
+ setup: async (ctx) => { /* ... */ }
231
+ } satisfies FluxStack.Plugin
232
+ ```
233
+
234
+ ### Problem: Plugin Blocked by Security
235
+
236
+ **Symptom:** Log shows `Plugin blocked: not in whitelist`
237
+
238
+ **Solution:**
239
+ ```bash
240
+ # Add to whitelist
241
+ bun run flux plugin:add plugin-name
242
+
243
+ # Or manually in .env
244
+ PLUGINS_ALLOWED=existing-plugins,new-plugin
245
+ ```
246
+
247
+ ## Frontend/React Issues
248
+
249
+ ### Problem: State Not Updating After API Call
250
+
251
+ **Solution:** Ensure state setter is called:
252
+ ```typescript
253
+ const createUser = async (userData) => {
254
+ const { data, error } = await api.users.post(userData)
255
+
256
+ if (!error && data.success) {
257
+ setUsers(prev => [...prev, data.user]) // ← Don't forget!
258
+ }
259
+ }
260
+ ```
261
+
262
+ ### Problem: Infinite Re-renders
263
+
264
+ **Cause:** useEffect without dependency array.
265
+
266
+ **Solution:**
267
+ ```typescript
268
+ // ❌ Wrong - runs every render
269
+ useEffect(() => {
270
+ loadUsers()
271
+ })
272
+
273
+ // ✅ Correct - runs once
274
+ useEffect(() => {
275
+ loadUsers()
276
+ }, [])
277
+ ```
278
+
279
+ ### Problem: Memory Leak Warning
280
+
281
+ **Symptom:** `Can't perform state update on unmounted component`
282
+
283
+ **Solution:** Add cleanup:
284
+ ```typescript
285
+ useEffect(() => {
286
+ let mounted = true
287
+
288
+ const loadData = async () => {
289
+ const { data, error } = await api.users.get()
290
+ if (mounted && !error) {
291
+ setUsers(data.users)
292
+ }
293
+ }
294
+
295
+ loadData()
296
+ return () => { mounted = false }
297
+ }, [])
298
+ ```
299
+
300
+ ## Docker Issues
301
+
302
+ ### Problem: Container Won't Start
303
+
304
+ **Check logs:**
305
+ ```bash
306
+ docker logs <container-id>
307
+ ```
308
+
309
+ **Common causes:**
310
+ 1. Missing env vars → Check docker-compose.yml
311
+ 2. Port conflict → Change exposed ports
312
+ 3. Build failure → Rebuild image
313
+
314
+ ### Problem: Docker Build Fails
315
+
316
+ **Check .dockerignore doesn't exclude:**
317
+ - `package.json`
318
+ - `bun.lockb`
319
+ - `tsconfig.json`
320
+
321
+ ## Testing Issues
322
+
323
+ ### Problem: Tests Can't Find Module
324
+
325
+ **Solution:** Ensure test config matches main tsconfig paths:
326
+ ```typescript
327
+ // vitest.config.ts
328
+ export default defineConfig({
329
+ resolve: {
330
+ alias: {
331
+ '@client': './app/client/src',
332
+ '@server': './app/server',
333
+ '@shared': './app/shared'
334
+ }
335
+ }
336
+ })
337
+ ```
338
+
339
+ ### Problem: Mocks Not Applied
340
+
341
+ **Solution:** Import order matters:
342
+ ```typescript
343
+ // ✅ Correct order
344
+ import { vi } from 'vitest'
345
+ vi.mock('@client/lib/eden-api')
346
+ import { Component } from './Component'
347
+ ```
348
+
349
+ ## Quick Checklist
350
+
351
+ When something breaks:
352
+
353
+ 1. **Check types:** `bunx tsc --noEmit`
354
+ 2. **Check ports:** Are 3000/5173 free?
355
+ 3. **Check schemas:** Response schemas defined?
356
+ 4. **Check imports:** Using path aliases?
357
+ 5. **Restart:** `bun run dev` fresh
358
+ 6. **Clean:** `rm -rf node_modules && bun install`
359
+
360
+ ## Related
361
+
362
+ - [Type Safety](../patterns/type-safety.md)
363
+ - [Anti-Patterns](../patterns/anti-patterns.md)
364
+ - [Routes with Eden Treaty](../resources/routes-eden.md)
@@ -0,0 +1 @@
1
+ # Resources documentation directory