claude-code-orchestrator-kit 1.4.1 → 1.4.16

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 (240) hide show
  1. package/.claude/agents/business/workers/lead-research-assistant.md +199 -0
  2. package/.claude/agents/database/workers/api-builder.md +8 -0
  3. package/.claude/agents/database/workers/database-architect.md +11 -3
  4. package/.claude/agents/database/workers/supabase-auditor.md +7 -7
  5. package/.claude/agents/database/workers/supabase-fixer.md +825 -0
  6. package/.claude/agents/database/workers/supabase-realtime-optimizer.md +1086 -0
  7. package/.claude/agents/database/workers/supabase-storage-optimizer.md +1187 -0
  8. package/.claude/agents/development/workers/code-reviewer.md +17 -2
  9. package/.claude/agents/development/workers/code-structure-refactorer.md +771 -0
  10. package/.claude/agents/development/workers/judge-specialist.md +3275 -0
  11. package/.claude/agents/development/workers/langgraph-specialist.md +1343 -0
  12. package/.claude/agents/development/workers/stage-pipeline-specialist.md +1173 -0
  13. package/.claude/agents/frontend/workers/fullstack-nextjs-specialist.md +10 -0
  14. package/.claude/agents/frontend/workers/nextjs-ui-designer.md +30 -0
  15. package/.claude/agents/health/workers/bug-fixer.md +31 -3
  16. package/.claude/agents/health/workers/bug-hunter.md +0 -1
  17. package/.claude/agents/health/workers/dead-code-hunter.md +167 -75
  18. package/.claude/agents/health/workers/dead-code-remover.md +217 -66
  19. package/.claude/agents/health/workers/dependency-auditor.md +83 -24
  20. package/.claude/agents/health/workers/dependency-updater.md +0 -1
  21. package/.claude/agents/health/workers/security-scanner.md +0 -1
  22. package/.claude/agents/infrastructure/workers/bullmq-worker-specialist.md +748 -0
  23. package/.claude/agents/infrastructure/workers/deployment-engineer.md +446 -0
  24. package/.claude/agents/infrastructure/workers/infrastructure-specialist.md +2 -2
  25. package/.claude/agents/infrastructure/workers/rag-specialist.md +799 -0
  26. package/.claude/agents/infrastructure/workers/server-hardening-specialist.md +1128 -0
  27. package/.claude/agents/integrations/workers/lms-integration-specialist.md +866 -0
  28. package/.claude/agents/meta/workers/meta-agent-v3.md +22 -0
  29. package/.claude/agents/testing/workers/integration-tester.md +1 -1
  30. package/.claude/agents/testing/workers/test-writer.md +16 -0
  31. package/.claude/commands/health-bugs.md +14 -281
  32. package/.claude/commands/health-cleanup.md +14 -281
  33. package/.claude/commands/health-deps.md +14 -281
  34. package/.claude/commands/health-metrics.md +51 -709
  35. package/.claude/commands/health-reuse.md +14 -311
  36. package/.claude/commands/health-security.md +14 -281
  37. package/.claude/commands/push.md +17 -3
  38. package/.claude/commands/speckit.implement.md +0 -11
  39. package/.claude/commands/supabase-performance-optimizer.md +73 -0
  40. package/.claude/commands/ultra-think.md +158 -0
  41. package/.claude/commands/worktree.md +150 -0
  42. package/.claude/scripts/gates/check-bundle-size.sh +0 -0
  43. package/.claude/scripts/gates/check-coverage.sh +0 -0
  44. package/.claude/scripts/gates/check-security.sh +0 -0
  45. package/.claude/scripts/release.sh +469 -94
  46. package/.claude/skills/algorithmic-art/LICENSE.txt +202 -0
  47. package/.claude/skills/algorithmic-art/SKILL.md +405 -0
  48. package/.claude/skills/algorithmic-art/templates/generator_template.js +223 -0
  49. package/.claude/skills/algorithmic-art/templates/viewer.html +599 -0
  50. package/.claude/skills/artifacts-builder/LICENSE.txt +202 -0
  51. package/.claude/skills/artifacts-builder/SKILL.md +74 -0
  52. package/.claude/skills/artifacts-builder/scripts/bundle-artifact.sh +54 -0
  53. package/.claude/skills/artifacts-builder/scripts/init-artifact.sh +322 -0
  54. package/.claude/skills/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  55. package/.claude/skills/bug-health-inline/SKILL.md +221 -0
  56. package/.claude/skills/bug-health-inline/references/worker-prompts.md +182 -0
  57. package/.claude/skills/canvas-design/LICENSE.txt +202 -0
  58. package/.claude/skills/canvas-design/SKILL.md +130 -0
  59. package/.claude/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  60. package/.claude/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  61. package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  62. package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  63. package/.claude/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  64. package/.claude/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  65. package/.claude/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  66. package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  67. package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  68. package/.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  69. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  70. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  71. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  72. package/.claude/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  73. package/.claude/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  74. package/.claude/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  75. package/.claude/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  76. package/.claude/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  77. package/.claude/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  78. package/.claude/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  79. package/.claude/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  80. package/.claude/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  81. package/.claude/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  82. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  83. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  84. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  85. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  86. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  87. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  88. package/.claude/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  89. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  90. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  91. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  92. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  93. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  94. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  95. package/.claude/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  96. package/.claude/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  97. package/.claude/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  98. package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  99. package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  100. package/.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  101. package/.claude/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  102. package/.claude/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  103. package/.claude/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  104. package/.claude/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  105. package/.claude/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  106. package/.claude/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  107. package/.claude/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  108. package/.claude/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  109. package/.claude/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  110. package/.claude/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  111. package/.claude/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  112. package/.claude/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  113. package/.claude/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  114. package/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  115. package/.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  116. package/.claude/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  117. package/.claude/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  118. package/.claude/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  119. package/.claude/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  120. package/.claude/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  121. package/.claude/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  122. package/.claude/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  123. package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  124. package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  125. package/.claude/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  126. package/.claude/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  127. package/.claude/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  128. package/.claude/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  129. package/.claude/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  130. package/.claude/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  131. package/.claude/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  132. package/.claude/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  133. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  134. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  135. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  136. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  137. package/.claude/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  138. package/.claude/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  139. package/.claude/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  140. package/.claude/skills/changelog-generator/SKILL.md +104 -0
  141. package/.claude/skills/cleanup-health-inline/SKILL.md +224 -0
  142. package/.claude/skills/code-reviewer/SKILL.md +209 -0
  143. package/.claude/skills/code-reviewer/references/code_review_checklist.md +103 -0
  144. package/.claude/skills/code-reviewer/references/coding_standards.md +103 -0
  145. package/.claude/skills/code-reviewer/references/common_antipatterns.md +103 -0
  146. package/.claude/skills/code-reviewer/scripts/code_quality_checker.py +114 -0
  147. package/.claude/skills/code-reviewer/scripts/pr_analyzer.py +114 -0
  148. package/.claude/skills/code-reviewer/scripts/review_report_generator.py +114 -0
  149. package/.claude/skills/content-research-writer/SKILL.md +538 -0
  150. package/.claude/skills/deps-health-inline/SKILL.md +227 -0
  151. package/.claude/skills/frontend-aesthetics/SKILL.md +51 -396
  152. package/.claude/skills/git-commit-helper/SKILL.md +203 -0
  153. package/.claude/skills/lead-research-assistant/SKILL.md +199 -0
  154. package/.claude/skills/reuse-health-inline/SKILL.md +248 -0
  155. package/.claude/skills/rollback-changes/SKILL.md +50 -524
  156. package/.claude/skills/run-quality-gate/SKILL.md +36 -346
  157. package/.claude/skills/security-health-inline/SKILL.md +224 -0
  158. package/.claude/skills/senior-architect/SKILL.md +209 -0
  159. package/.claude/skills/senior-architect/references/architecture_patterns.md +755 -0
  160. package/.claude/skills/senior-architect/references/system_design_workflows.md +749 -0
  161. package/.claude/skills/senior-architect/references/tech_decision_guide.md +612 -0
  162. package/.claude/skills/senior-architect/scripts/architecture_diagram_generator.py +114 -0
  163. package/.claude/skills/senior-architect/scripts/dependency_analyzer.py +114 -0
  164. package/.claude/skills/senior-architect/scripts/project_architect.py +114 -0
  165. package/.claude/skills/senior-devops/SKILL.md +209 -0
  166. package/.claude/skills/senior-devops/references/cicd_pipeline_guide.md +103 -0
  167. package/.claude/skills/senior-devops/references/deployment_strategies.md +103 -0
  168. package/.claude/skills/senior-devops/references/infrastructure_as_code.md +103 -0
  169. package/.claude/skills/senior-devops/scripts/deployment_manager.py +114 -0
  170. package/.claude/skills/senior-devops/scripts/pipeline_generator.py +114 -0
  171. package/.claude/skills/senior-devops/scripts/terraform_scaffolder.py +114 -0
  172. package/.claude/skills/senior-prompt-engineer/SKILL.md +226 -0
  173. package/.claude/skills/senior-prompt-engineer/references/agentic_system_design.md +80 -0
  174. package/.claude/skills/senior-prompt-engineer/references/llm_evaluation_frameworks.md +80 -0
  175. package/.claude/skills/senior-prompt-engineer/references/prompt_engineering_patterns.md +80 -0
  176. package/.claude/skills/senior-prompt-engineer/scripts/agent_orchestrator.py +100 -0
  177. package/.claude/skills/senior-prompt-engineer/scripts/prompt_optimizer.py +100 -0
  178. package/.claude/skills/senior-prompt-engineer/scripts/rag_evaluator.py +100 -0
  179. package/.claude/skills/setup-knip/SKILL.md +372 -0
  180. package/.claude/skills/systematic-debugging/CREATION-LOG.md +119 -0
  181. package/.claude/skills/systematic-debugging/SKILL.md +296 -0
  182. package/.claude/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  183. package/.claude/skills/systematic-debugging/condition-based-waiting.md +115 -0
  184. package/.claude/skills/systematic-debugging/defense-in-depth.md +122 -0
  185. package/.claude/skills/systematic-debugging/find-polluter.sh +63 -0
  186. package/.claude/skills/systematic-debugging/root-cause-tracing.md +169 -0
  187. package/.claude/skills/systematic-debugging/test-academic.md +14 -0
  188. package/.claude/skills/systematic-debugging/test-pressure-1.md +58 -0
  189. package/.claude/skills/systematic-debugging/test-pressure-2.md +68 -0
  190. package/.claude/skills/systematic-debugging/test-pressure-3.md +69 -0
  191. package/.claude/skills/theme-factory/LICENSE.txt +202 -0
  192. package/.claude/skills/theme-factory/SKILL.md +59 -0
  193. package/.claude/skills/theme-factory/theme-showcase.pdf +0 -0
  194. package/.claude/skills/theme-factory/themes/arctic-frost.md +19 -0
  195. package/.claude/skills/theme-factory/themes/botanical-garden.md +19 -0
  196. package/.claude/skills/theme-factory/themes/desert-rose.md +19 -0
  197. package/.claude/skills/theme-factory/themes/forest-canopy.md +19 -0
  198. package/.claude/skills/theme-factory/themes/golden-hour.md +19 -0
  199. package/.claude/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  200. package/.claude/skills/theme-factory/themes/modern-minimalist.md +19 -0
  201. package/.claude/skills/theme-factory/themes/ocean-depths.md +19 -0
  202. package/.claude/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  203. package/.claude/skills/theme-factory/themes/tech-innovation.md +19 -0
  204. package/.claude/skills/ui-design-system/SKILL.md +32 -0
  205. package/.claude/skills/ui-design-system/scripts/design_token_generator.py +529 -0
  206. package/.claude/skills/ux-researcher-designer/SKILL.md +30 -0
  207. package/.claude/skills/ux-researcher-designer/scripts/persona_generator.py +508 -0
  208. package/.claude/skills/webapp-testing/LICENSE.txt +202 -0
  209. package/.claude/skills/webapp-testing/SKILL.md +96 -0
  210. package/.claude/skills/webapp-testing/examples/console_logging.py +35 -0
  211. package/.claude/skills/webapp-testing/examples/element_discovery.py +40 -0
  212. package/.claude/skills/webapp-testing/examples/static_html_automation.py +33 -0
  213. package/.claude/skills/webapp-testing/scripts/with_server.py +106 -0
  214. package/.gitignore +4 -0
  215. package/README.md +492 -1093
  216. package/README.ru.md +719 -0
  217. package/docs/Agents Ecosystem/AGENT-ORCHESTRATION.md +2 -2
  218. package/docs/COMMANDS-GUIDE.md +0 -15
  219. package/docs/reports/skills/new-skills-analysis-2025-12.md +331 -0
  220. package/package.json +11 -3
  221. package/.claude/agents/health/orchestrators/bug-orchestrator.md +0 -1084
  222. package/.claude/agents/health/orchestrators/dead-code-orchestrator.md +0 -1064
  223. package/.claude/agents/health/orchestrators/dependency-orchestrator.md +0 -1064
  224. package/.claude/agents/health/orchestrators/reuse-orchestrator.md +0 -1112
  225. package/.claude/agents/health/orchestrators/security-orchestrator.md +0 -1064
  226. package/.claude/commands/worktree-cleanup.md +0 -382
  227. package/.claude/commands/worktree-create.md +0 -287
  228. package/.claude/commands/worktree-list.md +0 -239
  229. package/.claude/commands/worktree-remove.md +0 -339
  230. package/.claude/project-index.md +0 -75
  231. package/.claude/skills/load-project-context/SKILL.md +0 -89
  232. package/.claude/skills/resume-session/SKILL.md +0 -164
  233. package/.claude/skills/save-session-context/SKILL.md +0 -123
  234. package/.claude/templates/project-index.template.md +0 -67
  235. package/.claude/templates/session/context.template.md +0 -40
  236. package/.claude/templates/session/log.template.md +0 -72
  237. package/.github/BRANCH_PROTECTION.md +0 -137
  238. package/.github/workflows/build.yml +0 -70
  239. package/.github/workflows/deploy-staging.yml +0 -90
  240. package/.github/workflows/test.yml +0 -104
@@ -0,0 +1,612 @@
1
+ # Tech Decision Guide
2
+
3
+ Decision frameworks and comparison matrices for choosing technologies in the MegaCampusAI stack.
4
+
5
+ ## Database Selection
6
+
7
+ ### Comparison Matrix
8
+
9
+ | Criteria | PostgreSQL (Supabase) | MongoDB | Redis | SQLite |
10
+ |----------|----------------------|---------|-------|--------|
11
+ | **ACID compliance** | ✅ Full | ⚠️ Limited | ❌ No | ✅ Full |
12
+ | **Schema flexibility** | ⚠️ Rigid | ✅ Very flexible | ✅ Schemaless | ⚠️ Rigid |
13
+ | **Query performance** | ✅ Excellent | ✅ Good | ✅ Excellent | ✅ Good |
14
+ | **Scalability** | ✅ Vertical + Horizontal | ✅ Horizontal | ✅ Horizontal | ❌ Single file |
15
+ | **RLS (Row Level Security)** | ✅ Native | ❌ No | ❌ No | ❌ No |
16
+ | **Full-text search** | ✅ Built-in | ✅ Built-in | ❌ No | ✅ FTS5 |
17
+ | **JSON support** | ✅ JSONB | ✅ Native | ✅ JSON | ✅ JSON1 |
18
+ | **Real-time subscriptions** | ✅ Supabase | ✅ Change streams | ✅ Pub/Sub | ❌ No |
19
+ | **Cost (managed)** | $$ | $$ | $ | Free (self-hosted) |
20
+
21
+ ### Decision Tree
22
+
23
+ ```
24
+ Do you need ACID transactions?
25
+ ├─ YES → PostgreSQL or SQLite
26
+ │ └─ Do you need multi-tenant security (RLS)?
27
+ │ ├─ YES → PostgreSQL (Supabase)
28
+ │ └─ NO → SQLite (local) or PostgreSQL
29
+
30
+ └─ NO → MongoDB or Redis
31
+ └─ Do you need persistence?
32
+ ├─ YES → MongoDB
33
+ └─ NO → Redis (cache/sessions)
34
+ ```
35
+
36
+ ### Use Cases
37
+
38
+ **PostgreSQL (Supabase)** - Current choice ✅
39
+ - Multi-tenant applications
40
+ - Relational data (courses, lessons, organizations)
41
+ - Row-level security required
42
+ - ACID transactions needed
43
+ - Real-time subscriptions
44
+
45
+ **Redis** - For caching
46
+ - Session storage
47
+ - Rate limiting
48
+ - Caching API responses
49
+ - Pub/sub messaging
50
+ - Temporary data
51
+
52
+ **MongoDB** - Not recommended for this project
53
+ - Rapidly changing schema
54
+ - Document-oriented data
55
+ - No complex joins needed
56
+
57
+ **SQLite** - For local development
58
+ - Embedded databases
59
+ - Mobile apps
60
+ - Single-user applications
61
+
62
+ ## State Management (Frontend)
63
+
64
+ ### Comparison Matrix
65
+
66
+ | Criteria | Zustand | Redux Toolkit | React Context | Jotai | Valtio |
67
+ |----------|---------|---------------|---------------|-------|--------|
68
+ | **Bundle size** | 1.2 KB | 11 KB | 0 KB | 3 KB | 4 KB |
69
+ | **Learning curve** | Low | High | Low | Medium | Low |
70
+ | **DevTools** | ✅ Yes | ✅ Excellent | ❌ No | ✅ Yes | ✅ Yes |
71
+ | **TypeScript** | ✅ Excellent | ✅ Good | ✅ Good | ✅ Excellent | ✅ Good |
72
+ | **Boilerplate** | Minimal | High | Minimal | Minimal | Minimal |
73
+ | **Performance** | ✅ Excellent | ✅ Good | ⚠️ Re-render issues | ✅ Excellent | ✅ Good |
74
+ | **Middleware** | ✅ Yes | ✅ Yes | ❌ No | ⚠️ Limited | ⚠️ Limited |
75
+ | **Immer support** | ✅ Native | ✅ Built-in | ❌ Manual | ✅ Via plugin | ✅ Built-in |
76
+
77
+ ### Decision Tree
78
+
79
+ ```
80
+ What type of state are you managing?
81
+
82
+ ├─ Server state (API data)
83
+ │ └─ Use: TanStack Query (React Query) + Zustand for UI state
84
+
85
+ ├─ Form state
86
+ │ └─ Use: React Hook Form + Zod validation
87
+
88
+ ├─ Simple UI state (modals, toggles)
89
+ │ └─ Use: React Context or useState
90
+
91
+ └─ Complex UI state (navigation, multi-step)
92
+ └─ Use: Zustand + Immer
93
+ ```
94
+
95
+ ### Use Cases
96
+
97
+ **Zustand + Immer** - Current choice ✅
98
+ ```typescript
99
+ // When to use:
100
+ // - Complex nested state
101
+ // - Navigation stacks
102
+ // - Inspector panels
103
+ // - Multi-step forms
104
+
105
+ import { create } from 'zustand';
106
+ import { immer } from 'zustand/middleware/immer';
107
+
108
+ const useStore = create<State>()(
109
+ immer((set) => ({
110
+ history: [],
111
+ openDetail: (id) => set((state) => {
112
+ state.history.push(state.current);
113
+ state.current = { view: 'detail', id };
114
+ }),
115
+ }))
116
+ );
117
+ ```
118
+
119
+ **React Context** - For simple cases
120
+ ```typescript
121
+ // When to use:
122
+ // - Theme switching
123
+ // - i18n (internationalization)
124
+ // - User authentication state
125
+ // - Simple toggles/flags
126
+
127
+ const ThemeContext = createContext<Theme>('light');
128
+ ```
129
+
130
+ **TanStack Query** - For server state
131
+ ```typescript
132
+ // When to use:
133
+ // - API data fetching
134
+ // - Caching server responses
135
+ // - Optimistic updates
136
+ // - Pagination/infinite scroll
137
+
138
+ const { data } = useQuery({
139
+ queryKey: ['courses'],
140
+ queryFn: () => trpc.courses.list.query(),
141
+ });
142
+ ```
143
+
144
+ **Redux Toolkit** - Not recommended unless:
145
+ - Team already familiar
146
+ - Need time-travel debugging
147
+ - Complex state machine logic
148
+
149
+ ## API Architecture
150
+
151
+ ### Comparison Matrix
152
+
153
+ | Criteria | tRPC | GraphQL | REST | gRPC |
154
+ |----------|------|---------|------|------|
155
+ | **Type safety** | ✅ End-to-end | ⚠️ Codegen needed | ❌ Manual | ✅ Protobuf |
156
+ | **Learning curve** | Low | High | Low | High |
157
+ | **Tooling** | Good | Excellent | Excellent | Good |
158
+ | **Caching** | Manual | Built-in | Manual | Manual |
159
+ | **Batching** | ✅ Yes | ✅ Yes | ❌ No | ✅ Yes |
160
+ | **Real-time** | ⚠️ Via WebSocket | ✅ Subscriptions | ⚠️ SSE/WebSocket | ✅ Streaming |
161
+ | **Bundle size** | Small | Large | N/A | Medium |
162
+ | **Public API** | ❌ No | ✅ Yes | ✅ Yes | ⚠️ Limited |
163
+
164
+ ### Decision Tree
165
+
166
+ ```
167
+ Do you control both client and server?
168
+
169
+ ├─ YES (Full-stack TypeScript)
170
+ │ └─ Use: tRPC (current choice ✅)
171
+ │ - End-to-end type safety
172
+ │ - Zero code generation
173
+ │ - Minimal boilerplate
174
+
175
+ └─ NO (Public API or multiple clients)
176
+ └─ Do clients need flexible queries?
177
+ ├─ YES → GraphQL
178
+ │ - Mobile apps with limited bandwidth
179
+ │ - Complex data requirements
180
+
181
+ └─ NO → REST
182
+ - Simple CRUD operations
183
+ - Standard HTTP tooling
184
+ ```
185
+
186
+ ### Use Cases
187
+
188
+ **tRPC** - Current choice ✅
189
+ ```typescript
190
+ // When to use:
191
+ // - Monorepo with shared TypeScript
192
+ // - Internal APIs
193
+ // - Full control over client/server
194
+
195
+ // Backend
196
+ export const coursesRouter = router({
197
+ list: publicProcedure.query(async () => { ... }),
198
+ });
199
+
200
+ // Frontend (auto-typed)
201
+ const { data } = trpc.courses.list.useQuery();
202
+ ```
203
+
204
+ **REST** - For public APIs
205
+ ```typescript
206
+ // When to use:
207
+ // - Public API endpoints
208
+ // - Third-party integrations
209
+ // - Standard HTTP tooling needed
210
+
211
+ // Next.js API route
212
+ export async function GET(request: Request) {
213
+ return Response.json({ courses: [] });
214
+ }
215
+ ```
216
+
217
+ **GraphQL** - Not recommended unless:
218
+ - Complex nested data requirements
219
+ - Mobile clients with bandwidth constraints
220
+ - Need for real-time subscriptions
221
+
222
+ ## Package Manager
223
+
224
+ ### Comparison Matrix
225
+
226
+ | Criteria | pnpm | npm | yarn | bun |
227
+ |----------|------|-----|------|-----|
228
+ | **Disk usage** | ✅ Minimal | ❌ High | ⚠️ Medium | ✅ Minimal |
229
+ | **Install speed** | ✅ Fast | ⚠️ Slow | ✅ Fast | ✅ Very fast |
230
+ | **Monorepo** | ✅ Excellent | ⚠️ Workspaces | ✅ Good | ✅ Good |
231
+ | **Node compatibility** | ✅ Excellent | ✅ Excellent | ✅ Excellent | ⚠️ Good |
232
+ | **Lock file merge** | ✅ Easy | ⚠️ Conflicts | ⚠️ Conflicts | ✅ Easy |
233
+ | **Stability** | ✅ Stable | ✅ Stable | ✅ Stable | ⚠️ Beta |
234
+
235
+ ### Use Cases
236
+
237
+ **pnpm** - Current choice ✅
238
+ ```bash
239
+ # Why we chose pnpm:
240
+ # 1. Monorepo support (workspace:* protocol)
241
+ # 2. Fast installs (content-addressable storage)
242
+ # 3. Strict node_modules (prevents phantom dependencies)
243
+ # 4. Easy lock file merges
244
+
245
+ # Monorepo commands
246
+ pnpm --filter web add react
247
+ pnpm -r type-check
248
+ pnpm add -D -w prettier
249
+ ```
250
+
251
+ ## Validation Libraries
252
+
253
+ ### Comparison Matrix
254
+
255
+ | Criteria | Zod | Yup | Joi | io-ts |
256
+ |----------|-----|-----|-----|-------|
257
+ | **TypeScript** | ✅ Native | ⚠️ TS support | ⚠️ TS support | ✅ Native |
258
+ | **Type inference** | ✅ Excellent | ⚠️ Manual | ⚠️ Manual | ✅ Good |
259
+ | **Bundle size** | 8 KB | 16 KB | 160 KB | 12 KB |
260
+ | **Error messages** | ✅ Good | ✅ Good | ✅ Good | ⚠️ Verbose |
261
+ | **Schema composition** | ✅ Excellent | ✅ Good | ✅ Good | ✅ Good |
262
+ | **Runtime safety** | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
263
+
264
+ ### Use Cases
265
+
266
+ **Zod** - Current choice ✅
267
+ ```typescript
268
+ // Why we chose Zod:
269
+ // 1. TypeScript-first design
270
+ // 2. Type inference (no duplication)
271
+ // 3. Composable schemas
272
+ // 4. tRPC integration
273
+
274
+ import { z } from 'zod';
275
+
276
+ // Define schema
277
+ const CreateCourseSchema = z.object({
278
+ title: z.string().min(3).max(100),
279
+ organizationId: z.string().uuid(),
280
+ });
281
+
282
+ // Infer type (no duplication!)
283
+ type CreateCourseInput = z.infer<typeof CreateCourseSchema>;
284
+
285
+ // Use in tRPC
286
+ publicProcedure
287
+ .input(CreateCourseSchema)
288
+ .mutation(async ({ input }) => { ... });
289
+ ```
290
+
291
+ ## Styling Solutions
292
+
293
+ ### Comparison Matrix
294
+
295
+ | Criteria | Tailwind CSS | CSS Modules | Styled Components | Emotion | Vanilla CSS |
296
+ |----------|--------------|-------------|-------------------|---------|-------------|
297
+ | **Bundle size** | ⚠️ Medium | ✅ None | ❌ Large | ⚠️ Medium | ✅ None |
298
+ | **Runtime overhead** | ✅ None | ✅ None | ❌ Yes | ⚠️ Small | ✅ None |
299
+ | **Type safety** | ❌ No | ❌ No | ✅ Yes | ✅ Yes | ❌ No |
300
+ | **Themability** | ✅ Good | ⚠️ Manual | ✅ Excellent | ✅ Excellent | ⚠️ Manual |
301
+ | **Developer UX** | ✅ Excellent | ✅ Good | ✅ Good | ✅ Good | ⚠️ Verbose |
302
+ | **SSR support** | ✅ Yes | ✅ Yes | ⚠️ Config needed | ⚠️ Config needed | ✅ Yes |
303
+
304
+ ### Use Cases
305
+
306
+ **Tailwind CSS** - Current choice ✅
307
+ ```typescript
308
+ // Why we chose Tailwind:
309
+ // 1. Utility-first (fast development)
310
+ // 2. No runtime overhead
311
+ // 3. Built-in responsive design
312
+ // 4. Easy to purge unused styles
313
+
314
+ <div className="flex items-center gap-4 p-4 bg-white rounded-lg shadow">
315
+ <Image src="/logo.png" className="w-12 h-12" />
316
+ <h2 className="text-lg font-semibold">Course Title</h2>
317
+ </div>
318
+ ```
319
+
320
+ **CSS Modules** - For component-specific styles
321
+ ```css
322
+ /* CourseCard.module.css */
323
+ .card {
324
+ display: flex;
325
+ padding: 1rem;
326
+ }
327
+ ```
328
+
329
+ **Styled Components** - Not recommended unless:
330
+ - Need runtime theming
331
+ - Component library development
332
+
333
+ ## Testing Frameworks
334
+
335
+ ### Comparison Matrix
336
+
337
+ | Criteria | Vitest | Jest | Playwright | Cypress |
338
+ |----------|--------|------|------------|---------|
339
+ | **Speed** | ✅ Very fast | ⚠️ Slower | ✅ Fast | ⚠️ Slower |
340
+ | **Vite support** | ✅ Native | ❌ Config needed | N/A | N/A |
341
+ | **TypeScript** | ✅ Native | ⚠️ Config needed | ✅ Good | ✅ Good |
342
+ | **Watch mode** | ✅ Excellent | ✅ Good | ❌ No | ⚠️ Limited |
343
+ | **E2E testing** | ❌ No | ❌ No | ✅ Excellent | ✅ Good |
344
+ | **Parallel tests** | ✅ Yes | ✅ Yes | ✅ Yes | ⚠️ Limited |
345
+
346
+ ### Use Cases
347
+
348
+ **Vitest** - For unit/integration tests
349
+ ```typescript
350
+ // Why we chose Vitest:
351
+ // 1. Vite-native (no config)
352
+ // 2. Fast (ESM + HMR)
353
+ // 3. Jest-compatible API
354
+
355
+ import { describe, it, expect } from 'vitest';
356
+
357
+ describe('createCourse', () => {
358
+ it('should create course with valid input', async () => {
359
+ const result = await createCourse({ title: 'Test' });
360
+ expect(result).toHaveProperty('id');
361
+ });
362
+ });
363
+ ```
364
+
365
+ **Playwright** - For E2E tests
366
+ ```typescript
367
+ // Why we chose Playwright:
368
+ // 1. Multiple browser support
369
+ // 2. Parallel execution
370
+ // 3. Auto-waiting
371
+
372
+ import { test, expect } from '@playwright/test';
373
+
374
+ test('create course flow', async ({ page }) => {
375
+ await page.goto('/courses');
376
+ await page.click('button:text("New Course")');
377
+ await page.fill('input[name="title"]', 'Test Course');
378
+ await page.click('button:text("Create")');
379
+ await expect(page.locator('h1')).toHaveText('Test Course');
380
+ });
381
+ ```
382
+
383
+ ## Deployment Platforms
384
+
385
+ ### Comparison Matrix
386
+
387
+ | Criteria | Vercel | Netlify | AWS | Railway | Fly.io |
388
+ |----------|--------|---------|-----|---------|--------|
389
+ | **Next.js optimization** | ✅ Native | ✅ Good | ⚠️ Manual | ✅ Good | ✅ Good |
390
+ | **Edge functions** | ✅ Yes | ✅ Yes | ✅ Lambda@Edge | ⚠️ Limited | ✅ Yes |
391
+ | **Database hosting** | ❌ No | ❌ No | ✅ RDS | ✅ Postgres | ✅ Postgres |
392
+ | **Cost (hobby)** | Free | Free | Pay-as-go | Free tier | Free tier |
393
+ | **Automatic SSL** | ✅ Yes | ✅ Yes | ⚠️ ACM | ✅ Yes | ✅ Yes |
394
+ | **Preview deployments** | ✅ Excellent | ✅ Good | ⚠️ Manual | ✅ Good | ✅ Good |
395
+
396
+ ### Use Cases
397
+
398
+ **Vercel** - For Next.js frontend
399
+ ```bash
400
+ # Why Vercel:
401
+ # 1. Native Next.js support
402
+ # 2. Edge functions
403
+ # 3. Preview deployments
404
+ # 4. Automatic optimization
405
+
406
+ vercel --prod
407
+ ```
408
+
409
+ **Railway** - For Node.js backend
410
+ ```bash
411
+ # Why Railway:
412
+ # 1. Simple deployment
413
+ # 2. Postgres hosting
414
+ # 3. Environment variables
415
+ # 4. Good free tier
416
+
417
+ railway up
418
+ ```
419
+
420
+ **Supabase** - For database + auth
421
+ ```bash
422
+ # Why Supabase:
423
+ # 1. Managed Postgres
424
+ # 2. Built-in auth
425
+ # 3. Real-time subscriptions
426
+ # 4. RLS (Row Level Security)
427
+ ```
428
+
429
+ ## Caching Strategies
430
+
431
+ ### Comparison Matrix
432
+
433
+ | Strategy | Use Case | Invalidation | Complexity |
434
+ |----------|----------|--------------|------------|
435
+ | **Redis** | Session, rate limiting | TTL + manual | Medium |
436
+ | **CDN** | Static assets | Cache-Control headers | Low |
437
+ | **React Query** | API responses | Time-based + manual | Low |
438
+ | **Next.js ISR** | Static pages | Revalidate interval | Medium |
439
+ | **Service Worker** | Offline support | Version-based | High |
440
+
441
+ ### Decision Tree
442
+
443
+ ```
444
+ What are you caching?
445
+
446
+ ├─ API responses → React Query (5-10 min stale time)
447
+
448
+ ├─ Static assets (images, CSS) → CDN + long-lived headers
449
+
450
+ ├─ Session data → Redis (30 min TTL)
451
+
452
+ ├─ Rate limiting → Redis (1-60 min TTL)
453
+
454
+ └─ Static pages → Next.js ISR (60s revalidate)
455
+ ```
456
+
457
+ ## Authentication Strategies
458
+
459
+ ### Comparison Matrix
460
+
461
+ | Solution | Implementation | Security | Flexibility |
462
+ |----------|---------------|----------|-------------|
463
+ | **Supabase Auth** | Managed | ✅ Excellent | ⚠️ Limited |
464
+ | **NextAuth.js** | Self-hosted | ✅ Good | ✅ Excellent |
465
+ | **Auth0** | Managed | ✅ Excellent | ✅ Good |
466
+ | **Clerk** | Managed | ✅ Excellent | ⚠️ Limited |
467
+ | **Custom JWT** | Self-hosted | ⚠️ Complex | ✅ Full control |
468
+
469
+ ### Use Cases
470
+
471
+ **Supabase Auth** - Current choice ✅
472
+ ```typescript
473
+ // Why Supabase Auth:
474
+ // 1. Integrated with database (RLS)
475
+ // 2. Social providers built-in
476
+ // 3. Row-level security
477
+ // 4. Email/password + OAuth
478
+
479
+ const { data, error } = await supabase.auth.signInWithPassword({
480
+ email: 'user@example.com',
481
+ password: 'password',
482
+ });
483
+
484
+ // RLS automatically filters based on auth.uid()
485
+ const { data } = await supabase
486
+ .from('courses')
487
+ .select('*'); // Only returns user's accessible courses
488
+ ```
489
+
490
+ ## Performance Metrics Targets
491
+
492
+ ### Frontend (Web Vitals)
493
+
494
+ | Metric | Target | Threshold |
495
+ |--------|--------|-----------|
496
+ | **FCP** (First Contentful Paint) | < 1.8s | < 3s |
497
+ | **LCP** (Largest Contentful Paint) | < 2.5s | < 4s |
498
+ | **FID** (First Input Delay) | < 100ms | < 300ms |
499
+ | **CLS** (Cumulative Layout Shift) | < 0.1 | < 0.25 |
500
+ | **TTFB** (Time to First Byte) | < 600ms | < 1.8s |
501
+
502
+ ### Backend (API)
503
+
504
+ | Metric | Target | Threshold |
505
+ |--------|--------|-----------|
506
+ | **Response time** (p95) | < 200ms | < 500ms |
507
+ | **Database query time** (avg) | < 50ms | < 100ms |
508
+ | **Cache hit rate** | > 80% | > 60% |
509
+ | **Error rate** | < 0.1% | < 1% |
510
+ | **Availability** | > 99.9% | > 99% |
511
+
512
+ ### Database
513
+
514
+ | Metric | Target | Action |
515
+ |--------|--------|--------|
516
+ | **Query time > 100ms** | 0 queries | Add index |
517
+ | **Connection pool** | < 80% used | Scale up |
518
+ | **Disk usage** | < 70% | Archive old data |
519
+ | **Replication lag** | < 1s | Investigate |
520
+
521
+ ## Troubleshooting Guide
522
+
523
+ ### Common Issues
524
+
525
+ #### Issue: Slow API responses
526
+
527
+ **Diagnosis:**
528
+ ```bash
529
+ # 1. Check database query performance
530
+ EXPLAIN ANALYZE SELECT * FROM courses WHERE organization_id = 'uuid';
531
+
532
+ # 2. Check for N+1 queries
533
+ # Enable query logging in Supabase
534
+
535
+ # 3. Check Redis cache hit rate
536
+ redis-cli INFO stats | grep hit_rate
537
+ ```
538
+
539
+ **Solutions:**
540
+ ```sql
541
+ -- Add index
542
+ CREATE INDEX idx_courses_org_id ON courses(organization_id);
543
+
544
+ -- Use joins instead of N+1
545
+ SELECT courses.*, lessons.*
546
+ FROM courses
547
+ LEFT JOIN lessons ON lessons.course_id = courses.id;
548
+ ```
549
+
550
+ #### Issue: High memory usage (frontend)
551
+
552
+ **Diagnosis:**
553
+ ```typescript
554
+ // Chrome DevTools -> Memory tab
555
+ // Take heap snapshot, look for detached DOM nodes
556
+
557
+ // React DevTools -> Profiler
558
+ // Identify components with high render time
559
+ ```
560
+
561
+ **Solutions:**
562
+ ```typescript
563
+ // 1. Memoize expensive computations
564
+ const value = useMemo(() => expensiveCalc(data), [data]);
565
+
566
+ // 2. Use pagination/virtualization
567
+ import { FixedSizeList } from 'react-window';
568
+
569
+ // 3. Clean up subscriptions
570
+ useEffect(() => {
571
+ const subscription = observable.subscribe();
572
+ return () => subscription.unsubscribe();
573
+ }, []);
574
+ ```
575
+
576
+ #### Issue: Type errors after database migration
577
+
578
+ **Diagnosis:**
579
+ ```bash
580
+ # Database types out of sync
581
+ pnpm type-check
582
+ ```
583
+
584
+ **Solution:**
585
+ ```bash
586
+ # Regenerate types from database
587
+ pnpm supabase gen types typescript --project-id PROJECT_REF \
588
+ > packages/shared-types/src/database.types.ts
589
+
590
+ # Rebuild packages
591
+ pnpm type-check
592
+ ```
593
+
594
+ ## Conclusion
595
+
596
+ Technology decisions should be based on:
597
+
598
+ 1. **Project requirements** - Current and future needs
599
+ 2. **Team expertise** - Learning curve vs productivity
600
+ 3. **Ecosystem** - Tooling, community, documentation
601
+ 4. **Performance** - Bundle size, runtime overhead
602
+ 5. **Maintainability** - Long-term support, upgrade path
603
+
604
+ Current stack rationale:
605
+ - **PostgreSQL (Supabase)**: Multi-tenant RLS, ACID, type-safe
606
+ - **tRPC**: End-to-end type safety, zero codegen
607
+ - **Zustand + Immer**: Minimal boilerplate, excellent DX
608
+ - **Zod**: Type inference, tRPC integration
609
+ - **Tailwind**: Fast development, zero runtime
610
+ - **pnpm**: Monorepo support, fast installs
611
+ - **Vitest**: Vite-native, fast tests
612
+ - **Vercel**: Next.js optimization, edge functions