@polymorphism-tech/morph-spec 3.2.0 → 4.2.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 (319) hide show
  1. package/CLAUDE.md +352 -7
  2. package/README.md +1 -14
  3. package/bin/detect-agents.js +1 -1
  4. package/bin/morph-spec.js +122 -34
  5. package/bin/validate.js +1 -1
  6. package/docs/getting-started.md +0 -5
  7. package/docs/v3.0/AGENTS.md +521 -0
  8. package/docs/v3.0/ANALYSIS.md +555 -0
  9. package/docs/v3.0/ARCHITECTURE.md +436 -0
  10. package/docs/v3.0/EXECUTION-FLOW.md +1304 -0
  11. package/docs/v3.0/FEATURES.md +688 -0
  12. package/docs/v3.0/README.md +231 -0
  13. package/docs/v3.0/ROADMAP.md +801 -0
  14. package/docs/validation-checklist.md +0 -1
  15. package/package.json +1 -1
  16. package/src/commands/agents/index.js +4 -0
  17. package/src/commands/{spawn-team.js → agents/spawn-team.js} +172 -172
  18. package/src/commands/{create-story.js → feature/create-story.js} +357 -354
  19. package/src/commands/feature/index.js +6 -0
  20. package/src/commands/{shard-spec.js → feature/shard-spec.js} +2 -2
  21. package/src/commands/{sprint-status.js → feature/sprint-status.js} +1 -1
  22. package/src/commands/{generate-context.js → generation/generate-context.js} +40 -40
  23. package/src/commands/{generate.js → generation/generate.js} +4 -4
  24. package/src/commands/generation/index.js +5 -0
  25. package/src/commands/index.js +16 -0
  26. package/src/commands/{capture-pattern.js → learning/capture-pattern.js} +121 -121
  27. package/src/commands/learning/index.js +5 -0
  28. package/src/commands/{detect-agents.js → project/detect-agents.js} +178 -178
  29. package/src/commands/project/detect-workflow.js +174 -0
  30. package/src/commands/{detect.js → project/detect.js} +104 -104
  31. package/src/commands/{doctor.js → project/doctor.js} +356 -356
  32. package/src/commands/project/index.js +10 -0
  33. package/src/commands/{init.js → project/init.js} +305 -295
  34. package/src/commands/{sync.js → project/sync.js} +167 -167
  35. package/src/commands/{update.js → project/update.js} +240 -240
  36. package/src/commands/{advance-phase.js → state/advance-phase.js} +416 -357
  37. package/src/commands/{approve.js → state/approve.js} +221 -221
  38. package/src/commands/state/index.js +8 -0
  39. package/src/commands/{rollback-phase.js → state/rollback-phase.js} +185 -185
  40. package/src/commands/{state.js → state/state.js} +334 -334
  41. package/src/commands/{validate-phase.js → state/validate-phase.js} +221 -221
  42. package/src/commands/tasks/index.js +4 -0
  43. package/src/commands/{task.js → tasks/task.js} +78 -78
  44. package/src/commands/templates/index.js +8 -0
  45. package/src/commands/templates/template-customize.js +101 -0
  46. package/src/commands/templates/template-list.js +128 -0
  47. package/src/commands/templates/template-render.js +95 -0
  48. package/src/commands/templates/template-show.js +131 -0
  49. package/src/commands/templates/template-validate.js +91 -0
  50. package/src/commands/utils/index.js +7 -0
  51. package/src/commands/{session-summary.js → utils/session-summary.js} +291 -291
  52. package/src/commands/{troubleshoot.js → utils/troubleshoot.js} +222 -222
  53. package/src/commands/{analyze-blazor-concurrency.js → validation/analyze-blazor-concurrency.js} +193 -193
  54. package/src/commands/validation/index.js +8 -0
  55. package/src/commands/{lint-fluent.js → validation/lint-fluent.js} +352 -352
  56. package/src/commands/{validate-blazor-state.js → validation/validate-blazor-state.js} +210 -210
  57. package/src/commands/{validate-blazor.js → validation/validate-blazor.js} +156 -156
  58. package/src/commands/{validate-css.js → validation/validate-css.js} +84 -84
  59. package/src/core/index.js +10 -0
  60. package/src/core/registry/command-registry.js +302 -0
  61. package/src/core/registry/index.js +8 -0
  62. package/src/core/registry/validator-registry.js +204 -0
  63. package/src/core/state/index.js +8 -0
  64. package/src/{lib → core/state}/phase-state-machine.js +214 -214
  65. package/src/{lib → core/state}/state-manager.js +572 -534
  66. package/src/core/templates/index.js +9 -0
  67. package/src/core/templates/template-registry.js +335 -0
  68. package/src/core/templates/template-renderer.js +477 -0
  69. package/src/core/templates/template-validator.js +296 -0
  70. package/src/core/workflows/index.js +7 -0
  71. package/src/core/workflows/workflow-detector.js +354 -0
  72. package/src/lib/{complexity-analyzer.js → analysis/complexity-analyzer.js} +441 -441
  73. package/src/lib/analysis/index.js +7 -0
  74. package/src/lib/{checkpoint-hooks.js → checkpoints/checkpoint-hooks.js} +258 -258
  75. package/src/lib/checkpoints/index.js +7 -0
  76. package/src/lib/detectors/config-detector.js +223 -223
  77. package/src/lib/detectors/conversation-analyzer.js +163 -163
  78. package/src/lib/{design-system-detector.js → detectors/design-system-detector.js} +187 -187
  79. package/src/lib/detectors/index.js +87 -84
  80. package/src/lib/detectors/standards-generator.js +275 -275
  81. package/src/lib/detectors/structure-detector.js +245 -245
  82. package/src/lib/{context-generator.js → generators/context-generator.js} +526 -516
  83. package/src/lib/generators/index.js +10 -0
  84. package/src/lib/{metadata-extractor.js → generators/metadata-extractor.js} +387 -380
  85. package/src/lib/{recap-generator.js → generators/recap-generator.js} +205 -205
  86. package/src/lib/learning/index.js +7 -0
  87. package/src/lib/orchestration/index.js +7 -0
  88. package/src/lib/{team-orchestrator.js → orchestration/team-orchestrator.js} +323 -323
  89. package/src/lib/stacks/index.js +7 -0
  90. package/src/lib/{stack-resolver.js → stacks/stack-resolver.js} +180 -148
  91. package/src/lib/standards/index.js +7 -0
  92. package/src/lib/{standards-context-injector.js → standards/standards-context-injector.js} +298 -288
  93. package/src/lib/troubleshooting/index.js +8 -0
  94. package/src/lib/{troubleshoot-grep.js → troubleshooting/troubleshoot-grep.js} +204 -204
  95. package/src/lib/{troubleshoot-index.js → troubleshooting/troubleshoot-index.js} +144 -144
  96. package/src/lib/validators/architecture/architecture-validator.js +387 -0
  97. package/src/lib/validators/architecture/index.js +7 -0
  98. package/src/lib/validators/architecture-validator.js +40 -367
  99. package/src/lib/{blazor-concurrency-analyzer.js → validators/blazor/blazor-concurrency-analyzer.js} +277 -288
  100. package/src/lib/{blazor-state-validator.js → validators/blazor/blazor-state-validator.js} +279 -291
  101. package/src/lib/{blazor-validator.js → validators/blazor/blazor-validator.js} +369 -374
  102. package/src/lib/validators/blazor/index.js +9 -0
  103. package/src/lib/validators/content/content-validator.js +351 -0
  104. package/src/lib/validators/content/index.js +7 -0
  105. package/src/lib/validators/content-validator.js +164 -351
  106. package/src/lib/validators/{contract-compliance-validator.js → contracts/contract-compliance-validator.js} +273 -273
  107. package/src/lib/validators/contracts/index.js +7 -0
  108. package/src/lib/{css-validator.js → validators/css/css-validator.js} +352 -352
  109. package/src/lib/validators/css/index.js +7 -0
  110. package/src/lib/validators/{design-system-validator.js → design-system/design-system-validator.js} +231 -231
  111. package/src/lib/validators/design-system/index.js +7 -0
  112. package/src/lib/validators/package-validator.js +41 -340
  113. package/src/lib/validators/packages/index.js +7 -0
  114. package/src/lib/validators/packages/package-validator.js +360 -0
  115. package/src/lib/validators/shared/index.js +12 -0
  116. package/src/lib/validators/shared/issue-counter.js +18 -0
  117. package/src/lib/validators/shared/result-formatter.js +124 -0
  118. package/src/lib/{spec-validator.js → validators/spec-validator.js} +258 -258
  119. package/src/lib/validators/ui/index.js +7 -0
  120. package/src/lib/validators/ui/ui-contrast-validator.js +422 -0
  121. package/src/lib/validators/ui-contrast-validator.js +31 -409
  122. package/src/lib/{validation-runner.js → validators/validation-runner.js} +286 -284
  123. package/src/ui/wizard-questions.js +0 -2
  124. package/src/utils/color-utils.js +70 -0
  125. package/src/utils/file-copier.js +188 -189
  126. package/src/utils/process-handler.js +97 -0
  127. package/stacks/blazor-azure/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +3 -3
  128. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/api-designer.md +59 -0
  129. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/dotnet-senior.md +45 -255
  130. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ef-modeler.md +33 -88
  131. package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ms-agent-expert.md +25 -89
  132. package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/hangfire-orchestrator.md +64 -0
  133. package/stacks/blazor-azure/.morph/config/agents.json +879 -764
  134. package/stacks/blazor-azure/.morph/hooks/{pre-commit-tests.sh → pre-commit/tests-csharp.sh} +3 -2
  135. package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +41 -0
  136. package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +24 -0
  137. package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +23 -0
  138. package/stacks/nextjs-supabase/.claude/commands/morph-apply.md +221 -0
  139. package/stacks/nextjs-supabase/.claude/commands/morph-archive.md +79 -0
  140. package/stacks/nextjs-supabase/.claude/commands/morph-deploy.md +529 -0
  141. package/stacks/nextjs-supabase/.claude/commands/morph-infra.md +209 -0
  142. package/stacks/nextjs-supabase/.claude/commands/morph-preflight.md +227 -0
  143. package/stacks/nextjs-supabase/.claude/commands/morph-proposal.md +122 -0
  144. package/stacks/nextjs-supabase/.claude/commands/morph-status.md +86 -0
  145. package/stacks/nextjs-supabase/.claude/commands/morph-troubleshoot.md +122 -0
  146. package/stacks/nextjs-supabase/.claude/settings.local.json +6 -0
  147. package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md +30 -150
  148. package/stacks/nextjs-supabase/.morph/config/agents.json +345 -345
  149. package/stacks/nextjs-supabase/.morph/hooks/pre-commit/tests-typescript.sh +61 -0
  150. package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +22 -0
  151. package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +22 -0
  152. package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +35 -0
  153. package/stacks/nextjs-supabase/README.md +6 -15
  154. package/bin/render-template.js +0 -349
  155. package/bin/semantic-detect-agents.js +0 -247
  156. package/bin/validate-agents-skills.js +0 -257
  157. package/bin/validate-agents.js +0 -70
  158. package/bin/validate-phase.js +0 -263
  159. package/docs/examples.md +0 -328
  160. package/scripts/reorganize-skills.cjs +0 -175
  161. package/scripts/validate-agents-structure.cjs +0 -52
  162. package/scripts/validate-skills.cjs +0 -180
  163. package/src/commands/deploy.js +0 -780
  164. package/src/lib/continuous-validator.js +0 -421
  165. package/src/lib/decision-constraint-loader.js +0 -109
  166. package/src/lib/design-system-scaffolder.js +0 -299
  167. package/src/lib/hook-executor.js +0 -257
  168. package/src/lib/mockup-generator.js +0 -366
  169. package/src/lib/ui-detector.js +0 -350
  170. package/src/llm/schema-validator.js +0 -121
  171. package/src/sanitizer/.gitkeep +0 -0
  172. package/src/scanner/.gitkeep +0 -0
  173. package/src/types/index.js +0 -477
  174. package/src/ui/.gitkeep +0 -0
  175. package/src/writer/.gitkeep +0 -0
  176. package/stacks/blazor-azure/.azure/README.md +0 -293
  177. package/stacks/blazor-azure/.azure/docs/azure-devops-setup.md +0 -454
  178. package/stacks/blazor-azure/.azure/docs/branch-strategy.md +0 -398
  179. package/stacks/blazor-azure/.azure/docs/local-development.md +0 -515
  180. package/stacks/blazor-azure/.azure/pipelines/pipeline-variables.yml +0 -34
  181. package/stacks/blazor-azure/.azure/pipelines/prod-pipeline.yml +0 -319
  182. package/stacks/blazor-azure/.azure/pipelines/staging-pipeline.yml +0 -234
  183. package/stacks/blazor-azure/.azure/pipelines/templates/build-dotnet.yml +0 -75
  184. package/stacks/blazor-azure/.azure/pipelines/templates/deploy-app-service.yml +0 -94
  185. package/stacks/blazor-azure/.azure/pipelines/templates/deploy-container-app.yml +0 -120
  186. package/stacks/blazor-azure/.azure/pipelines/templates/infra-deploy.yml +0 -90
  187. package/stacks/blazor-azure/.claude/settings.local.json +0 -15
  188. package/stacks/blazor-azure/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +0 -392
  189. package/stacks/blazor-azure/.morph/docs/workflows/design-impl.md +0 -37
  190. package/stacks/blazor-azure/.morph/docs/workflows/enforcement-pipeline.md +0 -668
  191. package/stacks/blazor-azure/.morph/docs/workflows/fast-track.md +0 -29
  192. package/stacks/blazor-azure/.morph/docs/workflows/full-morph.md +0 -76
  193. package/stacks/blazor-azure/.morph/docs/workflows/standard.md +0 -44
  194. package/stacks/blazor-azure/.morph/docs/workflows/ui-refresh.md +0 -39
  195. package/stacks/blazor-azure/.morph/examples/api-nextjs/README.md +0 -241
  196. package/stacks/blazor-azure/.morph/examples/api-nextjs/contracts.ts +0 -307
  197. package/stacks/blazor-azure/.morph/examples/api-nextjs/spec.md +0 -399
  198. package/stacks/blazor-azure/.morph/examples/api-nextjs/tasks.md +0 -168
  199. package/stacks/blazor-azure/.morph/examples/micro-saas/README.md +0 -125
  200. package/stacks/blazor-azure/.morph/examples/micro-saas/contracts.cs +0 -358
  201. package/stacks/blazor-azure/.morph/examples/micro-saas/decisions.md +0 -246
  202. package/stacks/blazor-azure/.morph/examples/micro-saas/spec.md +0 -236
  203. package/stacks/blazor-azure/.morph/examples/micro-saas/tasks.md +0 -150
  204. package/stacks/blazor-azure/.morph/examples/multi-agent/README.md +0 -309
  205. package/stacks/blazor-azure/.morph/examples/multi-agent/contracts.cs +0 -433
  206. package/stacks/blazor-azure/.morph/examples/multi-agent/spec.md +0 -479
  207. package/stacks/blazor-azure/.morph/examples/multi-agent/tasks.md +0 -185
  208. package/stacks/blazor-azure/.morph/examples/scheduled-reports/decisions.md +0 -158
  209. package/stacks/blazor-azure/.morph/examples/scheduled-reports/proposal.md +0 -95
  210. package/stacks/blazor-azure/.morph/examples/scheduled-reports/spec.md +0 -267
  211. package/stacks/blazor-azure/.morph/examples/state-v3.json +0 -188
  212. package/stacks/blazor-azure/.morph/hooks/README.md +0 -348
  213. package/stacks/blazor-azure/.morph/hooks/pre-commit-agents.sh +0 -24
  214. package/stacks/blazor-azure/.morph/hooks/pre-commit-all.sh +0 -48
  215. package/stacks/blazor-azure/.morph/hooks/pre-commit-specs.sh +0 -49
  216. package/stacks/blazor-azure/.morph/hooks/task-completed.js +0 -73
  217. package/stacks/blazor-azure/.morph/hooks/teammate-idle.js +0 -68
  218. package/stacks/blazor-azure/.morph/standards/agent-framework-blazor-ui.md +0 -359
  219. package/stacks/blazor-azure/.morph/standards/agent-framework-production.md +0 -410
  220. package/stacks/blazor-azure/.morph/standards/agent-framework-setup.md +0 -413
  221. package/stacks/blazor-azure/.morph/standards/agent-framework-workflows.md +0 -349
  222. package/stacks/blazor-azure/.morph/standards/agent-teams-workflow.md +0 -474
  223. package/stacks/blazor-azure/.morph/standards/architecture.md +0 -325
  224. package/stacks/blazor-azure/.morph/standards/azure.md +0 -605
  225. package/stacks/blazor-azure/.morph/standards/coding.md +0 -377
  226. package/stacks/blazor-azure/.morph/standards/dotnet10-migration.md +0 -520
  227. package/stacks/blazor-azure/.morph/standards/fluent-ui-setup.md +0 -590
  228. package/stacks/blazor-azure/.morph/standards/migration-guide.md +0 -514
  229. package/stacks/blazor-azure/.morph/standards/passkeys-auth.md +0 -423
  230. package/stacks/blazor-azure/.morph/standards/vector-search-rag.md +0 -536
  231. package/stacks/blazor-azure/.morph/templates/CONTEXT-FEATURE.md +0 -276
  232. package/stacks/blazor-azure/.morph/templates/CONTEXT.md +0 -170
  233. package/stacks/blazor-azure/.morph/templates/FluentDesignTheme.cs +0 -149
  234. package/stacks/blazor-azure/.morph/templates/MudTheme.cs +0 -281
  235. package/stacks/blazor-azure/.morph/templates/agent.cs +0 -163
  236. package/stacks/blazor-azure/.morph/templates/clarify-questions.md +0 -159
  237. package/stacks/blazor-azure/.morph/templates/component.razor +0 -239
  238. package/stacks/blazor-azure/.morph/templates/contracts/Commands.cs +0 -74
  239. package/stacks/blazor-azure/.morph/templates/contracts/Entities.cs +0 -25
  240. package/stacks/blazor-azure/.morph/templates/contracts/Queries.cs +0 -74
  241. package/stacks/blazor-azure/.morph/templates/contracts/README.md +0 -74
  242. package/stacks/blazor-azure/.morph/templates/contracts.cs +0 -217
  243. package/stacks/blazor-azure/.morph/templates/decisions.md +0 -123
  244. package/stacks/blazor-azure/.morph/templates/design-system.css +0 -226
  245. package/stacks/blazor-azure/.morph/templates/infra/.dockerignore.example +0 -89
  246. package/stacks/blazor-azure/.morph/templates/infra/Dockerfile.example +0 -82
  247. package/stacks/blazor-azure/.morph/templates/infra/README.md +0 -286
  248. package/stacks/blazor-azure/.morph/templates/infra/app-insights.bicep +0 -63
  249. package/stacks/blazor-azure/.morph/templates/infra/app-service.bicep +0 -164
  250. package/stacks/blazor-azure/.morph/templates/infra/azure-pipelines-deploy.yml +0 -480
  251. package/stacks/blazor-azure/.morph/templates/infra/container-app-env.bicep +0 -49
  252. package/stacks/blazor-azure/.morph/templates/infra/container-app.bicep +0 -156
  253. package/stacks/blazor-azure/.morph/templates/infra/deploy-checklist.md +0 -426
  254. package/stacks/blazor-azure/.morph/templates/infra/deploy.ps1 +0 -229
  255. package/stacks/blazor-azure/.morph/templates/infra/deploy.sh +0 -208
  256. package/stacks/blazor-azure/.morph/templates/infra/key-vault.bicep +0 -91
  257. package/stacks/blazor-azure/.morph/templates/infra/main.bicep +0 -189
  258. package/stacks/blazor-azure/.morph/templates/infra/parameters.dev.json +0 -29
  259. package/stacks/blazor-azure/.morph/templates/infra/parameters.prod.json +0 -29
  260. package/stacks/blazor-azure/.morph/templates/infra/parameters.staging.json +0 -29
  261. package/stacks/blazor-azure/.morph/templates/infra/sql-database.bicep +0 -103
  262. package/stacks/blazor-azure/.morph/templates/infra/storage.bicep +0 -106
  263. package/stacks/blazor-azure/.morph/templates/integrations/asaas-client.cs +0 -387
  264. package/stacks/blazor-azure/.morph/templates/integrations/asaas-webhook.cs +0 -351
  265. package/stacks/blazor-azure/.morph/templates/integrations/azure-identity-config.cs +0 -288
  266. package/stacks/blazor-azure/.morph/templates/integrations/clerk-config.cs +0 -258
  267. package/stacks/blazor-azure/.morph/templates/job.cs +0 -171
  268. package/stacks/blazor-azure/.morph/templates/migration.cs +0 -83
  269. package/stacks/blazor-azure/.morph/templates/proposal.md +0 -141
  270. package/stacks/blazor-azure/.morph/templates/recap.md +0 -94
  271. package/stacks/blazor-azure/.morph/templates/repository.cs +0 -141
  272. package/stacks/blazor-azure/.morph/templates/saas/subscription.cs +0 -347
  273. package/stacks/blazor-azure/.morph/templates/saas/tenant.cs +0 -338
  274. package/stacks/blazor-azure/.morph/templates/service.cs +0 -139
  275. package/stacks/blazor-azure/.morph/templates/simulation.md +0 -353
  276. package/stacks/blazor-azure/.morph/templates/spec.md +0 -149
  277. package/stacks/blazor-azure/.morph/templates/sprint-status.yaml +0 -68
  278. package/stacks/blazor-azure/.morph/templates/state.template.json +0 -222
  279. package/stacks/blazor-azure/.morph/templates/story.md +0 -143
  280. package/stacks/blazor-azure/.morph/templates/tasks.md +0 -257
  281. package/stacks/blazor-azure/.morph/templates/test.cs +0 -239
  282. package/stacks/blazor-azure/.morph/templates/ui-components.md +0 -362
  283. package/stacks/blazor-azure/.morph/templates/ui-design-system.md +0 -286
  284. package/stacks/blazor-azure/.morph/templates/ui-flows.md +0 -336
  285. package/stacks/blazor-azure/.morph/templates/ui-mockups.md +0 -133
  286. package/stacks/nextjs-supabase/.morph/docs/easypanel-setup.md +0 -169
  287. package/stacks/nextjs-supabase/.morph/docs/supabase-mcp-setup.md +0 -247
  288. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/README.md +0 -697
  289. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/spec.md +0 -85
  290. package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/tasks.md +0 -86
  291. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/README.md +0 -498
  292. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/decisions.md +0 -121
  293. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/spec.md +0 -138
  294. package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/tasks.md +0 -162
  295. package/stacks/nextjs-supabase/.morph/standards/easypanel-deploy.md +0 -191
  296. package/stacks/nextjs-supabase/.morph/standards/nextjs-patterns.md +0 -193
  297. package/stacks/nextjs-supabase/.morph/standards/supabase-auth.md +0 -171
  298. package/stacks/nextjs-supabase/.morph/standards/supabase-pgvector.md +0 -164
  299. package/stacks/nextjs-supabase/.morph/standards/supabase-rls.md +0 -179
  300. package/stacks/nextjs-supabase/.morph/standards/supabase-storage.md +0 -148
  301. package/stacks/nextjs-supabase/.morph/templates/contracts.cs +0 -173
  302. package/stacks/nextjs-supabase/.morph/templates/contracts.ts +0 -168
  303. package/stacks/nextjs-supabase/.morph/templates/decisions.md +0 -115
  304. package/stacks/nextjs-supabase/.morph/templates/dockerfile-api.dockerfile +0 -38
  305. package/stacks/nextjs-supabase/.morph/templates/dockerfile-web.dockerfile +0 -48
  306. package/stacks/nextjs-supabase/.morph/templates/proposal.md +0 -145
  307. package/stacks/nextjs-supabase/.morph/templates/recap.md +0 -134
  308. package/stacks/nextjs-supabase/.morph/templates/rls-policy.sql +0 -57
  309. package/stacks/nextjs-supabase/.morph/templates/spec.md +0 -231
  310. package/stacks/nextjs-supabase/.morph/templates/supabase-migration.sql +0 -100
  311. package/stacks/nextjs-supabase/.morph/templates/tasks.md +0 -257
  312. /package/src/commands/{search-patterns.js → learning/search-patterns.js} +0 -0
  313. /package/src/commands/{migrate-state.js → utils/migrate-state.js} +0 -0
  314. /package/src/commands/{upgrade.js → utils/upgrade.js} +0 -0
  315. /package/src/{lib → core/templates}/template-data-sources.js +0 -0
  316. /package/src/lib/{design-system-generator.js → generators/design-system-generator.js} +0 -0
  317. /package/src/lib/{learning-system.js → learning/learning-system.js} +0 -0
  318. /package/{src/generator → stacks/blazor-azure/.morph/templates}/.gitkeep +0 -0
  319. /package/{src/llm → stacks/nextjs-supabase/.morph/templates}/.gitkeep +0 -0
@@ -1,246 +0,0 @@
1
- # Micro-SaaS - Architectural Decision Records
2
-
3
- ## ADR-001: Blazor Server vs Blazor WebAssembly
4
-
5
- **Status**: Accepted
6
-
7
- **Context**: Escolher entre Blazor Server e Blazor WebAssembly para o frontend.
8
-
9
- **Decision**: Blazor Server
10
-
11
- **Rationale**:
12
- - Melhor para dashboards com dados em tempo real
13
- - Menor payload inicial
14
- - Acesso direto ao backend (sem API intermediária)
15
- - Melhor SEO com pre-rendering
16
- - Scale-to-zero funciona bem com Container Apps
17
-
18
- **Consequences**:
19
- - Requer conexão SignalR persistente
20
- - Latência perceptível em conexões lentas
21
- - Não funciona offline
22
-
23
- ---
24
-
25
- ## ADR-002: Asaas vs Stripe para Billing
26
-
27
- **Status**: Accepted
28
-
29
- **Context**: Escolher gateway de pagamento para mercado brasileiro.
30
-
31
- **Decision**: Asaas
32
-
33
- **Rationale**:
34
- - Suporte nativo a PIX e Boleto
35
- - Taxas competitivas para Brasil
36
- - API bem documentada
37
- - Webhooks confiáveis
38
- - Gestão de assinaturas built-in
39
-
40
- **Consequences**:
41
- - Limitado ao mercado brasileiro
42
- - Menos features que Stripe
43
- - Se expandir internacionalmente, precisará adicionar outro gateway
44
-
45
- ---
46
-
47
- ## ADR-003: Clerk vs Azure AD B2C para Auth
48
-
49
- **Status**: Accepted
50
-
51
- **Context**: Escolher provider de autenticação.
52
-
53
- **Decision**: Clerk (com Azure AD como alternativa)
54
-
55
- **Rationale**:
56
- - Setup mais simples
57
- - UI pré-construída
58
- - Boa integração com .NET
59
- - Free tier generoso (10k MAU)
60
- - Organization support para multi-tenancy
61
-
62
- **Alternatives Considered**:
63
- - Azure AD B2C: Mais complexo, mas melhor para enterprise
64
- - Auth0: Boa opção, mas mais caro
65
-
66
- **Consequences**:
67
- - Dependência de serviço terceiro
68
- - Custo em escala (após 10k MAU)
69
-
70
- ---
71
-
72
- ## ADR-004: Multi-Tenancy Strategy
73
-
74
- **Status**: Accepted
75
-
76
- **Context**: Definir estratégia de isolamento de dados.
77
-
78
- **Decision**: Database-per-tenant com query filter
79
-
80
- **Rationale**:
81
- - Single database com `TenantId` em cada tabela
82
- - EF Core Global Query Filters para isolamento
83
- - Mais econômico que database separado
84
- - Escala bem para milhares de tenants
85
-
86
- **Implementation**:
87
- ```csharp
88
- modelBuilder.Entity<Order>()
89
- .HasQueryFilter(o => o.TenantId == _tenantContext.TenantId);
90
- ```
91
-
92
- **Consequences**:
93
- - Cuidado extra com queries que bypassam filtros
94
- - Backup/restore é do banco inteiro
95
- - Migração de tenant individual é mais complexa
96
-
97
- ---
98
-
99
- ## ADR-005: Tenant Resolution Strategy
100
-
101
- **Status**: Accepted
102
-
103
- **Context**: Como identificar o tenant em cada request.
104
-
105
- **Decision**: Multiple strategies (subdomain > header > route > claim)
106
-
107
- **Rationale**:
108
- 1. **Subdomain** (`acme.app.com`): Mais limpo para usuários
109
- 2. **Header** (`X-Tenant-ID`): Para APIs
110
- 3. **Route** (`/tenant/{slug}`): Fallback
111
- 4. **Claim**: Para JWT tokens
112
-
113
- **Consequences**:
114
- - DNS wildcard necessário
115
- - Configuração de CORS mais complexa
116
- - Custom domains requerem SSL wildcard ou certificados individuais
117
-
118
- ---
119
-
120
- ## ADR-006: Azure Container Apps vs App Service
121
-
122
- **Status**: Accepted
123
-
124
- **Context**: Escolher serviço de hosting.
125
-
126
- **Decision**: Azure Container Apps
127
-
128
- **Rationale**:
129
- - Scale-to-zero (custo zero quando inativo)
130
- - Auto-scaling baseado em HTTP requests
131
- - Built-in ingress controller
132
- - Managed identity integration
133
- - Mais barato para cargas variáveis
134
-
135
- **Consequences**:
136
- - Cold start de ~2-5 segundos
137
- - Menos features que App Service
138
- - Debugging mais complexo
139
-
140
- ---
141
-
142
- ## ADR-007: SQL Server Free Tier
143
-
144
- **Status**: Accepted
145
-
146
- **Context**: Escolher tier de database.
147
-
148
- **Decision**: SQL Server Free Tier (32GB)
149
-
150
- **Rationale**:
151
- - Custo zero para desenvolvimento e MVPs
152
- - 32GB suficiente para milhares de tenants pequenos
153
- - Upgrade fácil quando necessário
154
- - Compatível com EF Core
155
-
156
- **Consequences**:
157
- - Limites de DTU/vCore
158
- - Sem geo-replication
159
- - Upgrade necessário para produção de alta escala
160
-
161
- ---
162
-
163
- ## ADR-008: Subscription Lifecycle
164
-
165
- **Status**: Accepted
166
-
167
- **Context**: Definir estados e transições de subscription.
168
-
169
- **Decision**: Estado máquina com 5 estados
170
-
171
- ```
172
- Trial → Active → PastDue → Canceled
173
-
174
- Expired
175
- ```
176
-
177
- **States**:
178
- - **Trial**: 14 dias sem cobrança
179
- - **Active**: Pagamento em dia
180
- - **PastDue**: Pagamento atrasado (grace period 7 dias)
181
- - **Canceled**: Cancelado pelo usuário
182
- - **Expired**: Trial ou grace period expirado
183
-
184
- **Consequences**:
185
- - Lógica de transição precisa ser robusta
186
- - Webhooks Asaas controlam transições de pagamento
187
- - Jobs agendados para expiração de trial
188
-
189
- ---
190
-
191
- ## ADR-009: Caching Strategy
192
-
193
- **Status**: Accepted
194
-
195
- **Context**: Definir estratégia de cache.
196
-
197
- **Decision**: In-memory cache com invalidation
198
-
199
- **Rationale**:
200
- - Tenant data raramente muda
201
- - Plans são estáticos
202
- - In-memory suficiente para Container Apps com poucas instâncias
203
-
204
- **Implementation**:
205
- - `IMemoryCache` para dados de leitura frequente
206
- - Cache invalidation em updates
207
-
208
- **Consequences**:
209
- - Cache não compartilhado entre instâncias
210
- - Inconsistência temporária possível (aceitável)
211
-
212
- ---
213
-
214
- ## ADR-010: Error Handling Strategy
215
-
216
- **Status**: Accepted
217
-
218
- **Context**: Padronizar tratamento de erros.
219
-
220
- **Decision**: Problem Details (RFC 7807) + Global Exception Handler
221
-
222
- **Implementation**:
223
- ```csharp
224
- app.UseExceptionHandler(options =>
225
- {
226
- options.Run(async context =>
227
- {
228
- var problemDetails = new ProblemDetails
229
- {
230
- Status = StatusCodes.Status500InternalServerError,
231
- Title = "An error occurred",
232
- Instance = context.Request.Path
233
- };
234
- await context.Response.WriteAsJsonAsync(problemDetails);
235
- });
236
- });
237
- ```
238
-
239
- **Consequences**:
240
- - Respostas de erro consistentes
241
- - Fácil integração com frontends
242
- - Logging estruturado
243
-
244
- ---
245
-
246
- *MORPH-SPEC by Polymorphism Tech*
@@ -1,236 +0,0 @@
1
- # Micro-SaaS - Especificação
2
-
3
- ## 1. Visão Geral
4
-
5
- Sistema Micro-SaaS multi-tenant com gestão de assinaturas e billing integrado via Asaas.
6
-
7
- ### 1.1 Objetivos
8
-
9
- - Permitir criação de tenants isolados
10
- - Gerenciar assinaturas e pagamentos
11
- - Fornecer dashboard administrativo por tenant
12
- - Escalar de forma econômica (scale-to-zero)
13
-
14
- ### 1.2 Personas
15
-
16
- | Persona | Descrição |
17
- |---------|-----------|
18
- | **Tenant Owner** | Cria e administra o tenant |
19
- | **Tenant Admin** | Gerencia usuários e configurações |
20
- | **Tenant Member** | Usuário regular do sistema |
21
- | **Platform Admin** | Administrador da plataforma (super admin) |
22
-
23
- ## 2. Requisitos Funcionais
24
-
25
- ### 2.1 Autenticação & Autorização
26
-
27
- | ID | Requisito |
28
- |----|-----------|
29
- | AUTH-001 | Login via Clerk (email, Google, Microsoft) |
30
- | AUTH-002 | Criação automática de tenant no primeiro login |
31
- | AUTH-003 | Convite de usuários para tenant existente |
32
- | AUTH-004 | Roles: Owner, Admin, Member, Viewer |
33
- | AUTH-005 | Permissões granulares por role |
34
-
35
- ### 2.2 Multi-Tenancy
36
-
37
- | ID | Requisito |
38
- |----|-----------|
39
- | MT-001 | Isolamento completo de dados por tenant |
40
- | MT-002 | Subdomínio customizado (acme.app.com) |
41
- | MT-003 | Domínio customizado opcional |
42
- | MT-004 | Configurações independentes por tenant |
43
- | MT-005 | Branding básico (logo, cores) |
44
-
45
- ### 2.3 Subscription & Billing
46
-
47
- | ID | Requisito |
48
- |----|-----------|
49
- | SUB-001 | Planos: Free, Starter, Pro, Enterprise |
50
- | SUB-002 | Ciclos: Mensal e Anual |
51
- | SUB-003 | Métodos: PIX, Boleto, Cartão de Crédito |
52
- | SUB-004 | Trial period de 14 dias |
53
- | SUB-005 | Upgrade/Downgrade de plano |
54
- | SUB-006 | Cancelamento com período de carência |
55
- | SUB-007 | Webhooks Asaas para status de pagamento |
56
-
57
- ### 2.4 Dashboard
58
-
59
- | ID | Requisito |
60
- |----|-----------|
61
- | DASH-001 | Overview com métricas principais |
62
- | DASH-002 | Gestão de usuários do tenant |
63
- | DASH-003 | Histórico de pagamentos |
64
- | DASH-004 | Configurações do tenant |
65
- | DASH-005 | Upgrade de plano |
66
-
67
- ## 3. Requisitos Não-Funcionais
68
-
69
- ### 3.1 Performance
70
-
71
- | ID | Requisito |
72
- |----|-----------|
73
- | PERF-001 | Tempo de resposta < 200ms (P95) |
74
- | PERF-002 | Scale-to-zero quando inativo |
75
- | PERF-003 | Auto-scaling até 10 instâncias |
76
-
77
- ### 3.2 Segurança
78
-
79
- | ID | Requisito |
80
- |----|-----------|
81
- | SEC-001 | HTTPS obrigatório |
82
- | SEC-002 | Validação de webhook signature |
83
- | SEC-003 | Rate limiting por tenant |
84
- | SEC-004 | Audit log de ações críticas |
85
-
86
- ### 3.3 Disponibilidade
87
-
88
- | ID | Requisito |
89
- |----|-----------|
90
- | AVAIL-001 | SLA 99.5% |
91
- | AVAIL-002 | Health checks ativos |
92
- | AVAIL-003 | Retry automático em falhas |
93
-
94
- ## 4. Planos e Limites
95
-
96
- | Feature | Free | Starter | Pro | Enterprise |
97
- |---------|------|---------|-----|------------|
98
- | Usuários | 2 | 5 | 20 | Ilimitado |
99
- | Storage | 100MB | 1GB | 10GB | 100GB |
100
- | API Requests/mês | 1K | 10K | 100K | Ilimitado |
101
- | Suporte | Community | Email | Priority | Dedicated |
102
- | Preço/mês | R$0 | R$49 | R$149 | R$499 |
103
-
104
- ## 5. Integrações
105
-
106
- ### 5.1 Asaas
107
-
108
- - Customer management
109
- - Subscription lifecycle
110
- - Payment processing
111
- - Webhook handling
112
-
113
- ### 5.2 Clerk
114
-
115
- - User authentication
116
- - Session management
117
- - Organization (tenant) mapping
118
-
119
- ## 6. Arquitetura
120
-
121
- ### 6.1 Componentes
122
-
123
- ```
124
- ┌─────────────────────────────────────────────────────────────┐
125
- │ Blazor Server │
126
- │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
127
- │ │ Pages │ │ Components │ │ Services │ │
128
- │ │ /dashboard │ │ NavMenu │ │ TenantContext │ │
129
- │ │ /settings │ │ DataGrid │ │ SubscriptionService │ │
130
- │ │ /billing │ │ Charts │ │ UserService │ │
131
- │ └─────────────┘ └─────────────┘ └─────────────────────┘ │
132
- └─────────────────────────────────────────────────────────────┘
133
-
134
-
135
- ┌─────────────────────────────────────────────────────────────┐
136
- │ Application Layer │
137
- │ ┌─────────────────────────────────────────────────────┐ │
138
- │ │ Commands: CreateTenant, InviteUser, ChangePlan │ │
139
- │ │ Queries: GetDashboard, GetUsers, GetPayments │ │
140
- │ └─────────────────────────────────────────────────────┘ │
141
- └─────────────────────────────────────────────────────────────┘
142
-
143
-
144
- ┌─────────────────────────────────────────────────────────────┐
145
- │ Infrastructure │
146
- │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
147
- │ │ EF Core │ │ Asaas │ │ Clerk │ │
148
- │ │ Repository │ │ Client │ │ Integration │ │
149
- │ └──────────────┘ └──────────────┘ └──────────────────┘ │
150
- └─────────────────────────────────────────────────────────────┘
151
-
152
-
153
- ┌─────────────────────────────────────────────────────────────┐
154
- │ SQL Database │ Azure Storage │ Key Vault (secrets) │
155
- └─────────────────────────────────────────────────────────────┘
156
- ```
157
-
158
- ### 6.2 Tenant Resolution
159
-
160
- 1. Subdomínio: `{tenant}.app.com`
161
- 2. Header: `X-Tenant-ID`
162
- 3. Route: `/tenant/{slug}/...`
163
- 4. Claim: JWT tenant_id
164
-
165
- ## 7. Modelo de Dados
166
-
167
- ### 7.1 Entidades Principais
168
-
169
- ```
170
- Tenant
171
- ├── Id (int)
172
- ├── Name (string)
173
- ├── Slug (string) [unique]
174
- ├── Status (Active, Suspended, Deleted)
175
- ├── AsaasCustomerId (string)
176
- ├── CurrentSubscription → Subscription
177
- └── Users → TenantUser[]
178
-
179
- TenantUser
180
- ├── Id (int)
181
- ├── TenantId → Tenant
182
- ├── ExternalUserId (string) [Clerk ID]
183
- ├── Email (string)
184
- ├── Role (Owner, Admin, Member, Viewer)
185
- └── Status (Pending, Active, Inactive)
186
-
187
- Plan
188
- ├── Id (int)
189
- ├── Name (string)
190
- ├── PriceMonthly (decimal)
191
- ├── PriceYearly (decimal)
192
- ├── Features (JSON)
193
- └── Limits (JSON)
194
-
195
- Subscription
196
- ├── Id (int)
197
- ├── TenantId → Tenant
198
- ├── PlanId → Plan
199
- ├── AsaasSubscriptionId (string)
200
- ├── Status (Trial, Active, PastDue, Canceled)
201
- ├── BillingCycle (Monthly, Yearly)
202
- ├── CurrentPeriodStart (DateTime)
203
- └── CurrentPeriodEnd (DateTime)
204
- ```
205
-
206
- ## 8. APIs
207
-
208
- ### 8.1 Tenant Management
209
-
210
- | Endpoint | Method | Descrição |
211
- |----------|--------|-----------|
212
- | `/api/tenants` | POST | Criar tenant |
213
- | `/api/tenants/{id}` | GET | Obter tenant |
214
- | `/api/tenants/{id}` | PUT | Atualizar tenant |
215
- | `/api/tenants/{id}/users` | GET | Listar usuários |
216
- | `/api/tenants/{id}/users` | POST | Convidar usuário |
217
-
218
- ### 8.2 Subscription
219
-
220
- | Endpoint | Method | Descrição |
221
- |----------|--------|-----------|
222
- | `/api/subscriptions` | POST | Criar subscription |
223
- | `/api/subscriptions/{id}` | GET | Obter subscription |
224
- | `/api/subscriptions/{id}/upgrade` | POST | Upgrade de plano |
225
- | `/api/subscriptions/{id}/cancel` | POST | Cancelar |
226
-
227
- ### 8.3 Webhooks
228
-
229
- | Endpoint | Method | Descrição |
230
- |----------|--------|-----------|
231
- | `/webhooks/asaas` | POST | Eventos Asaas |
232
- | `/webhooks/clerk` | POST | Eventos Clerk |
233
-
234
- ---
235
-
236
- *MORPH-SPEC by Polymorphism Tech*
@@ -1,150 +0,0 @@
1
- # Micro-SaaS - Tasks
2
-
3
- ## Fase 1: Setup do Projeto
4
-
5
- | ID | Task | Dependências | Estimativa |
6
- |----|------|--------------|------------|
7
- | T001 | Criar solution e projetos | - | S |
8
- | T002 | Configurar packages NuGet | T001 | S |
9
- | T003 | Criar estrutura de pastas | T001 | S |
10
- | T004 | Configurar appsettings.json | T001 | S |
11
-
12
- ## Fase 2: Domain Layer
13
-
14
- | ID | Task | Dependências | Estimativa |
15
- |----|------|--------------|------------|
16
- | T005 | Criar BaseEntity | T001 | S |
17
- | T006 | Criar Tenant entity | T005 | M |
18
- | T007 | Criar TenantUser entity | T005 | M |
19
- | T008 | Criar Plan entity | T005 | S |
20
- | T009 | Criar Subscription entity | T005 | M |
21
- | T010 | Criar SubscriptionPayment entity | T005 | M |
22
- | T011 | Definir enums | T005 | S |
23
-
24
- ## Fase 3: Infrastructure Layer
25
-
26
- | ID | Task | Dependências | Estimativa |
27
- |----|------|--------------|------------|
28
- | T012 | Criar AppDbContext | T006-T011 | M |
29
- | T013 | Configurar EF Core mappings | T012 | M |
30
- | T014 | Criar TenantRepository | T012 | M |
31
- | T015 | Criar TenantUserRepository | T012 | M |
32
- | T016 | Criar SubscriptionRepository | T012 | M |
33
- | T017 | Criar PlanRepository | T012 | S |
34
- | T018 | Criar PaymentRepository | T012 | M |
35
- | T019 | Implementar AsaasClient | T002 | L |
36
- | T020 | Implementar AsaasWebhookHandler | T019 | M |
37
-
38
- ## Fase 4: Application Layer
39
-
40
- | ID | Task | Dependências | Estimativa |
41
- |----|------|--------------|------------|
42
- | T021 | Criar TenantService | T014, T015 | M |
43
- | T022 | Criar TenantUserService | T015 | M |
44
- | T023 | Criar SubscriptionService | T016, T019 | L |
45
- | T024 | Criar PlanService | T017 | S |
46
- | T025 | Criar DashboardService | T014-T018 | M |
47
- | T026 | Criar WebhookService | T020, T016, T018 | M |
48
-
49
- ## Fase 5: Web Layer - Auth
50
-
51
- | ID | Task | Dependências | Estimativa |
52
- |----|------|--------------|------------|
53
- | T027 | Configurar Clerk authentication | T002 | M |
54
- | T028 | Implementar TenantContext | T014 | M |
55
- | T029 | Criar middleware de tenant resolution | T028 | M |
56
- | T030 | Configurar policies de autorização | T027 | S |
57
-
58
- ## Fase 6: Web Layer - Components
59
-
60
- | ID | Task | Dependências | Estimativa |
61
- |----|------|--------------|------------|
62
- | T031 | Criar MainLayout | T027 | M |
63
- | T032 | Criar NavMenu | T031 | S |
64
- | T033 | Criar componentes shared (DataGrid, Card, etc) | T031 | M |
65
-
66
- ## Fase 7: Web Layer - Pages
67
-
68
- | ID | Task | Dependências | Estimativa |
69
- |----|------|--------------|------------|
70
- | T034 | Criar página Dashboard | T025, T031 | M |
71
- | T035 | Criar página Users | T022, T033 | M |
72
- | T036 | Criar página Settings | T021, T033 | M |
73
- | T037 | Criar página Billing | T023, T033 | L |
74
- | T038 | Criar página Plans | T024, T033 | M |
75
-
76
- ## Fase 8: Web Layer - APIs
77
-
78
- | ID | Task | Dependências | Estimativa |
79
- |----|------|--------------|------------|
80
- | T039 | Criar endpoints Tenant | T021 | M |
81
- | T040 | Criar endpoints Users | T022 | M |
82
- | T041 | Criar endpoints Subscription | T023 | M |
83
- | T042 | Criar endpoint Webhook | T026 | M |
84
-
85
- ## Fase 9: Infrastructure (IaC)
86
-
87
- | ID | Task | Dependências | Estimativa |
88
- |----|------|--------------|------------|
89
- | T043 | Criar main.bicep | - | M |
90
- | T044 | Configurar Container App | T043 | M |
91
- | T045 | Configurar SQL Database | T043 | M |
92
- | T046 | Configurar Key Vault | T043 | S |
93
- | T047 | Configurar App Insights | T043 | S |
94
-
95
- ## Fase 10: Testes e Documentação
96
-
97
- | ID | Task | Dependências | Estimativa |
98
- |----|------|--------------|------------|
99
- | T048 | Criar testes unitários Domain | T006-T011 | M |
100
- | T049 | Criar testes integração Services | T021-T026 | L |
101
- | T050 | Criar testes E2E | T034-T042 | L |
102
- | T051 | Documentar APIs (OpenAPI) | T039-T042 | M |
103
-
104
- ## Checkpoints
105
-
106
- | Checkpoint | Após Tasks | Validação |
107
- |------------|------------|-----------|
108
- | CP1 | T004 | Projeto compila |
109
- | CP2 | T011 | Domain layer completo |
110
- | CP3 | T020 | Infrastructure layer completo |
111
- | CP4 | T026 | Application layer completo |
112
- | CP5 | T033 | Layout e componentes prontos |
113
- | CP6 | T038 | Todas as páginas funcionando |
114
- | CP7 | T042 | APIs funcionando |
115
- | CP8 | T047 | IaC pronto para deploy |
116
- | CP9 | T051 | Projeto completo |
117
-
118
- ## Legenda
119
-
120
- - **S** = Small (< 1h)
121
- - **M** = Medium (1-3h)
122
- - **L** = Large (3-8h)
123
-
124
- ## Ordem de Execução Recomendada
125
-
126
- ```
127
- T001 → T002 → T003 → T004 (CP1)
128
-
129
- T005 → T006-T011 (CP2)
130
-
131
- T012 → T013 → T014-T020 (CP3)
132
-
133
- T021-T026 (CP4)
134
-
135
- T027 → T028 → T029 → T030
136
-
137
- T031 → T032 → T033 (CP5)
138
-
139
- T034-T038 (CP6)
140
-
141
- T039-T042 (CP7)
142
-
143
- T043-T047 (CP8)
144
-
145
- T048-T051 (CP9)
146
- ```
147
-
148
- ---
149
-
150
- *MORPH-SPEC by Polymorphism Tech*