@polymorphism-tech/morph-spec 3.1.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.
- package/CLAUDE.md +882 -3
- package/README.md +79 -18
- package/bin/detect-agents.js +1 -1
- package/bin/morph-spec.js +163 -26
- package/bin/task-manager.cjs +101 -7
- package/bin/validate.js +1 -1
- package/docs/cli-auto-detection.md +219 -0
- package/docs/getting-started.md +0 -5
- package/docs/llm-interaction-config.md +735 -0
- package/docs/troubleshooting.md +269 -0
- package/docs/v3.0/AGENTS.md +521 -0
- package/docs/v3.0/ANALYSIS.md +555 -0
- package/docs/v3.0/ARCHITECTURE.md +436 -0
- package/docs/v3.0/EXECUTION-FLOW.md +1304 -0
- package/docs/v3.0/FEATURES.md +688 -0
- package/docs/v3.0/README.md +231 -0
- package/docs/v3.0/ROADMAP.md +801 -0
- package/docs/validation-checklist.md +0 -1
- package/package.json +5 -1
- package/src/commands/agents/index.js +4 -0
- package/src/commands/agents/spawn-team.js +172 -0
- package/src/commands/{create-story.js → feature/create-story.js} +357 -354
- package/src/commands/feature/index.js +6 -0
- package/src/commands/{shard-spec.js → feature/shard-spec.js} +2 -2
- package/src/commands/{sprint-status.js → feature/sprint-status.js} +1 -1
- package/src/commands/{generate-context.js → generation/generate-context.js} +40 -40
- package/src/commands/{generate.js → generation/generate.js} +130 -3
- package/src/commands/generation/index.js +5 -0
- package/src/commands/index.js +16 -0
- package/src/commands/learning/capture-pattern.js +121 -0
- package/src/commands/learning/index.js +5 -0
- package/src/commands/learning/search-patterns.js +126 -0
- package/src/commands/{detect-agents.js → project/detect-agents.js} +178 -178
- package/src/commands/project/detect-workflow.js +174 -0
- package/src/commands/{detect.js → project/detect.js} +104 -104
- package/src/commands/{doctor.js → project/doctor.js} +356 -356
- package/src/commands/project/index.js +10 -0
- package/src/commands/{init.js → project/init.js} +305 -258
- package/src/commands/{sync.js → project/sync.js} +167 -167
- package/src/commands/{update.js → project/update.js} +240 -204
- package/src/commands/{advance-phase.js → state/advance-phase.js} +416 -266
- package/src/commands/state/approve.js +221 -0
- package/src/commands/state/index.js +8 -0
- package/src/commands/{rollback-phase.js → state/rollback-phase.js} +185 -185
- package/src/commands/{state.js → state/state.js} +334 -334
- package/src/commands/{validate-phase.js → state/validate-phase.js} +221 -221
- package/src/commands/tasks/index.js +4 -0
- package/src/commands/{task.js → tasks/task.js} +78 -78
- package/src/commands/templates/index.js +8 -0
- package/src/commands/templates/template-customize.js +101 -0
- package/src/commands/templates/template-list.js +128 -0
- package/src/commands/templates/template-render.js +95 -0
- package/src/commands/templates/template-show.js +131 -0
- package/src/commands/templates/template-validate.js +91 -0
- package/src/commands/utils/index.js +7 -0
- package/src/commands/utils/migrate-state.js +158 -0
- package/src/commands/{session-summary.js → utils/session-summary.js} +291 -291
- package/src/commands/{troubleshoot.js → utils/troubleshoot.js} +222 -222
- package/src/commands/utils/upgrade.js +346 -0
- package/src/commands/{analyze-blazor-concurrency.js → validation/analyze-blazor-concurrency.js} +193 -193
- package/src/commands/validation/index.js +8 -0
- package/src/commands/{lint-fluent.js → validation/lint-fluent.js} +352 -352
- package/src/commands/{validate-blazor-state.js → validation/validate-blazor-state.js} +210 -210
- package/src/commands/{validate-blazor.js → validation/validate-blazor.js} +156 -156
- package/src/commands/{validate-css.js → validation/validate-css.js} +84 -84
- package/src/core/index.js +10 -0
- package/src/core/registry/command-registry.js +302 -0
- package/src/core/registry/index.js +8 -0
- package/src/core/registry/validator-registry.js +204 -0
- package/src/core/state/index.js +8 -0
- package/src/core/state/phase-state-machine.js +214 -0
- package/src/{lib → core/state}/state-manager.js +572 -414
- package/src/core/templates/index.js +9 -0
- package/src/core/templates/template-data-sources.js +325 -0
- package/src/core/templates/template-registry.js +335 -0
- package/src/core/templates/template-renderer.js +477 -0
- package/src/core/templates/template-validator.js +296 -0
- package/src/core/workflows/index.js +7 -0
- package/src/core/workflows/workflow-detector.js +354 -0
- package/src/generator/config-generator.js +206 -0
- package/src/generator/templates/config.json.template +40 -0
- package/src/generator/templates/project.md.template +67 -0
- package/src/lib/{complexity-analyzer.js → analysis/complexity-analyzer.js} +441 -441
- package/src/lib/analysis/index.js +7 -0
- package/src/lib/checkpoints/checkpoint-hooks.js +258 -0
- package/src/lib/checkpoints/index.js +7 -0
- package/src/lib/detectors/config-detector.js +223 -223
- package/src/lib/detectors/conversation-analyzer.js +163 -163
- package/src/lib/{design-system-detector.js → detectors/design-system-detector.js} +187 -187
- package/src/lib/detectors/index.js +87 -84
- package/src/lib/detectors/standards-generator.js +275 -275
- package/src/lib/detectors/structure-detector.js +245 -245
- package/src/lib/{context-generator.js → generators/context-generator.js} +526 -516
- package/src/lib/generators/index.js +10 -0
- package/src/lib/generators/metadata-extractor.js +387 -0
- package/src/lib/{recap-generator.js → generators/recap-generator.js} +205 -205
- package/src/lib/learning/index.js +7 -0
- package/src/lib/orchestration/index.js +7 -0
- package/src/lib/{team-orchestrator.js → orchestration/team-orchestrator.js} +323 -323
- package/src/lib/stacks/index.js +7 -0
- package/src/lib/{stack-resolver.js → stacks/stack-resolver.js} +180 -148
- package/src/lib/standards/index.js +7 -0
- package/src/lib/{standards-context-injector.js → standards/standards-context-injector.js} +298 -288
- package/src/lib/troubleshooting/index.js +8 -0
- package/src/lib/{troubleshoot-grep.js → troubleshooting/troubleshoot-grep.js} +204 -204
- package/src/lib/{troubleshoot-index.js → troubleshooting/troubleshoot-index.js} +144 -144
- package/src/lib/validators/architecture/architecture-validator.js +387 -0
- package/src/lib/validators/architecture/index.js +7 -0
- package/src/lib/validators/architecture-validator.js +40 -367
- package/src/lib/{blazor-concurrency-analyzer.js → validators/blazor/blazor-concurrency-analyzer.js} +277 -288
- package/src/lib/{blazor-state-validator.js → validators/blazor/blazor-state-validator.js} +279 -291
- package/src/lib/{blazor-validator.js → validators/blazor/blazor-validator.js} +369 -374
- package/src/lib/validators/blazor/index.js +9 -0
- package/src/lib/validators/content/content-validator.js +351 -0
- package/src/lib/validators/content/index.js +7 -0
- package/src/lib/validators/content-validator.js +164 -0
- package/src/lib/validators/{contract-compliance-validator.js → contracts/contract-compliance-validator.js} +273 -273
- package/src/lib/validators/contracts/index.js +7 -0
- package/src/lib/{css-validator.js → validators/css/css-validator.js} +352 -352
- package/src/lib/validators/css/index.js +7 -0
- package/src/lib/validators/{design-system-validator.js → design-system/design-system-validator.js} +231 -231
- package/src/lib/validators/design-system/index.js +7 -0
- package/src/lib/validators/package-validator.js +41 -340
- package/src/lib/validators/packages/index.js +7 -0
- package/src/lib/validators/packages/package-validator.js +360 -0
- package/src/lib/validators/shared/index.js +12 -0
- package/src/lib/validators/shared/issue-counter.js +18 -0
- package/src/lib/validators/shared/result-formatter.js +124 -0
- package/src/lib/{spec-validator.js → validators/spec-validator.js} +258 -258
- package/src/lib/validators/ui/index.js +7 -0
- package/src/lib/validators/ui/ui-contrast-validator.js +422 -0
- package/src/lib/validators/ui-contrast-validator.js +31 -409
- package/src/lib/{validation-runner.js → validators/validation-runner.js} +286 -284
- package/src/llm/analyzer.js +215 -0
- package/src/llm/environment-detector.js +43 -0
- package/src/llm/few-shot-examples.js +216 -0
- package/src/llm/project-config-schema.json +188 -0
- package/src/llm/prompt-builder.js +96 -0
- package/src/orchestrator.js +206 -0
- package/src/sanitizer/context-sanitizer.js +221 -0
- package/src/sanitizer/patterns.js +163 -0
- package/src/scanner/project-scanner.js +242 -0
- package/src/ui/diff-display.js +91 -0
- package/src/ui/interactive-wizard.js +96 -0
- package/src/ui/user-review.js +211 -0
- package/src/ui/wizard-questions.js +188 -0
- package/src/utils/color-utils.js +70 -0
- package/src/utils/file-copier.js +188 -189
- package/src/utils/process-handler.js +97 -0
- package/src/writer/file-writer.js +86 -0
- package/stacks/blazor-azure/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +3 -3
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/api-designer.md +59 -0
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/dotnet-senior.md +45 -255
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ef-modeler.md +33 -88
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ms-agent-expert.md +25 -89
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/hangfire-orchestrator.md +64 -0
- package/stacks/blazor-azure/.morph/config/agents.json +879 -764
- package/stacks/blazor-azure/.morph/hooks/{pre-commit-tests.sh → pre-commit/tests-csharp.sh} +3 -2
- package/stacks/blazor-azure/.morph/templates/.gitkeep +0 -0
- package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +41 -0
- package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +24 -0
- package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +23 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-apply.md +221 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-archive.md +79 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-deploy.md +529 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-infra.md +209 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-preflight.md +227 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-proposal.md +122 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-status.md +86 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-troubleshoot.md +122 -0
- package/stacks/nextjs-supabase/.claude/settings.local.json +6 -0
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md +30 -150
- package/stacks/nextjs-supabase/.morph/config/agents.json +345 -345
- package/stacks/nextjs-supabase/.morph/hooks/pre-commit/tests-typescript.sh +61 -0
- package/stacks/nextjs-supabase/.morph/templates/.gitkeep +0 -0
- package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +22 -0
- package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +22 -0
- package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +35 -0
- package/stacks/nextjs-supabase/README.md +6 -15
- package/bin/render-template.js +0 -303
- package/bin/semantic-detect-agents.js +0 -247
- package/bin/validate-agents-skills.js +0 -257
- package/bin/validate-agents.js +0 -70
- package/bin/validate-phase.js +0 -263
- package/docs/examples.md +0 -328
- package/scripts/reorganize-skills.cjs +0 -175
- package/scripts/validate-agents-structure.cjs +0 -52
- package/scripts/validate-skills.cjs +0 -180
- package/src/commands/deploy.js +0 -780
- package/src/lib/continuous-validator.js +0 -421
- package/src/lib/decision-constraint-loader.js +0 -109
- package/src/lib/design-system-scaffolder.js +0 -299
- package/src/lib/hook-executor.js +0 -257
- package/src/lib/mockup-generator.js +0 -366
- package/src/lib/ui-detector.js +0 -350
- package/stacks/blazor-azure/.azure/README.md +0 -293
- package/stacks/blazor-azure/.azure/docs/azure-devops-setup.md +0 -454
- package/stacks/blazor-azure/.azure/docs/branch-strategy.md +0 -398
- package/stacks/blazor-azure/.azure/docs/local-development.md +0 -515
- package/stacks/blazor-azure/.azure/pipelines/pipeline-variables.yml +0 -34
- package/stacks/blazor-azure/.azure/pipelines/prod-pipeline.yml +0 -319
- package/stacks/blazor-azure/.azure/pipelines/staging-pipeline.yml +0 -234
- package/stacks/blazor-azure/.azure/pipelines/templates/build-dotnet.yml +0 -75
- package/stacks/blazor-azure/.azure/pipelines/templates/deploy-app-service.yml +0 -94
- package/stacks/blazor-azure/.azure/pipelines/templates/deploy-container-app.yml +0 -120
- package/stacks/blazor-azure/.azure/pipelines/templates/infra-deploy.yml +0 -90
- package/stacks/blazor-azure/.claude/settings.local.json +0 -15
- package/stacks/blazor-azure/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +0 -392
- package/stacks/blazor-azure/.morph/docs/workflows/design-impl.md +0 -37
- package/stacks/blazor-azure/.morph/docs/workflows/enforcement-pipeline.md +0 -668
- package/stacks/blazor-azure/.morph/docs/workflows/fast-track.md +0 -29
- package/stacks/blazor-azure/.morph/docs/workflows/full-morph.md +0 -76
- package/stacks/blazor-azure/.morph/docs/workflows/standard.md +0 -44
- package/stacks/blazor-azure/.morph/docs/workflows/ui-refresh.md +0 -39
- package/stacks/blazor-azure/.morph/examples/api-nextjs/README.md +0 -241
- package/stacks/blazor-azure/.morph/examples/api-nextjs/contracts.ts +0 -307
- package/stacks/blazor-azure/.morph/examples/api-nextjs/spec.md +0 -399
- package/stacks/blazor-azure/.morph/examples/api-nextjs/tasks.md +0 -168
- package/stacks/blazor-azure/.morph/examples/micro-saas/README.md +0 -125
- package/stacks/blazor-azure/.morph/examples/micro-saas/contracts.cs +0 -358
- package/stacks/blazor-azure/.morph/examples/micro-saas/decisions.md +0 -246
- package/stacks/blazor-azure/.morph/examples/micro-saas/spec.md +0 -236
- package/stacks/blazor-azure/.morph/examples/micro-saas/tasks.md +0 -150
- package/stacks/blazor-azure/.morph/examples/multi-agent/README.md +0 -309
- package/stacks/blazor-azure/.morph/examples/multi-agent/contracts.cs +0 -433
- package/stacks/blazor-azure/.morph/examples/multi-agent/spec.md +0 -479
- package/stacks/blazor-azure/.morph/examples/multi-agent/tasks.md +0 -185
- package/stacks/blazor-azure/.morph/examples/scheduled-reports/decisions.md +0 -158
- package/stacks/blazor-azure/.morph/examples/scheduled-reports/proposal.md +0 -95
- package/stacks/blazor-azure/.morph/examples/scheduled-reports/spec.md +0 -267
- package/stacks/blazor-azure/.morph/examples/state-v3.json +0 -188
- package/stacks/blazor-azure/.morph/hooks/README.md +0 -348
- package/stacks/blazor-azure/.morph/hooks/pre-commit-agents.sh +0 -24
- package/stacks/blazor-azure/.morph/hooks/pre-commit-all.sh +0 -48
- package/stacks/blazor-azure/.morph/hooks/pre-commit-specs.sh +0 -49
- package/stacks/blazor-azure/.morph/hooks/task-completed.js +0 -73
- package/stacks/blazor-azure/.morph/hooks/teammate-idle.js +0 -68
- package/stacks/blazor-azure/.morph/standards/agent-framework-blazor-ui.md +0 -359
- package/stacks/blazor-azure/.morph/standards/agent-framework-production.md +0 -410
- package/stacks/blazor-azure/.morph/standards/agent-framework-setup.md +0 -413
- package/stacks/blazor-azure/.morph/standards/agent-framework-workflows.md +0 -349
- package/stacks/blazor-azure/.morph/standards/agent-teams-workflow.md +0 -474
- package/stacks/blazor-azure/.morph/standards/architecture.md +0 -325
- package/stacks/blazor-azure/.morph/standards/azure.md +0 -605
- package/stacks/blazor-azure/.morph/standards/coding.md +0 -377
- package/stacks/blazor-azure/.morph/standards/dotnet10-migration.md +0 -520
- package/stacks/blazor-azure/.morph/standards/fluent-ui-setup.md +0 -590
- package/stacks/blazor-azure/.morph/standards/migration-guide.md +0 -514
- package/stacks/blazor-azure/.morph/standards/passkeys-auth.md +0 -423
- package/stacks/blazor-azure/.morph/standards/vector-search-rag.md +0 -536
- package/stacks/blazor-azure/.morph/templates/CONTEXT-FEATURE.md +0 -276
- package/stacks/blazor-azure/.morph/templates/CONTEXT.md +0 -170
- package/stacks/blazor-azure/.morph/templates/FluentDesignTheme.cs +0 -149
- package/stacks/blazor-azure/.morph/templates/MudTheme.cs +0 -281
- package/stacks/blazor-azure/.morph/templates/agent.cs +0 -163
- package/stacks/blazor-azure/.morph/templates/clarify-questions.md +0 -159
- package/stacks/blazor-azure/.morph/templates/component.razor +0 -239
- package/stacks/blazor-azure/.morph/templates/contracts/Commands.cs +0 -74
- package/stacks/blazor-azure/.morph/templates/contracts/Entities.cs +0 -25
- package/stacks/blazor-azure/.morph/templates/contracts/Queries.cs +0 -74
- package/stacks/blazor-azure/.morph/templates/contracts/README.md +0 -74
- package/stacks/blazor-azure/.morph/templates/contracts.cs +0 -217
- package/stacks/blazor-azure/.morph/templates/decisions.md +0 -123
- package/stacks/blazor-azure/.morph/templates/design-system.css +0 -226
- package/stacks/blazor-azure/.morph/templates/infra/.dockerignore.example +0 -89
- package/stacks/blazor-azure/.morph/templates/infra/Dockerfile.example +0 -82
- package/stacks/blazor-azure/.morph/templates/infra/README.md +0 -286
- package/stacks/blazor-azure/.morph/templates/infra/app-insights.bicep +0 -63
- package/stacks/blazor-azure/.morph/templates/infra/app-service.bicep +0 -164
- package/stacks/blazor-azure/.morph/templates/infra/azure-pipelines-deploy.yml +0 -480
- package/stacks/blazor-azure/.morph/templates/infra/container-app-env.bicep +0 -49
- package/stacks/blazor-azure/.morph/templates/infra/container-app.bicep +0 -156
- package/stacks/blazor-azure/.morph/templates/infra/deploy-checklist.md +0 -426
- package/stacks/blazor-azure/.morph/templates/infra/deploy.ps1 +0 -229
- package/stacks/blazor-azure/.morph/templates/infra/deploy.sh +0 -208
- package/stacks/blazor-azure/.morph/templates/infra/key-vault.bicep +0 -91
- package/stacks/blazor-azure/.morph/templates/infra/main.bicep +0 -189
- package/stacks/blazor-azure/.morph/templates/infra/parameters.dev.json +0 -29
- package/stacks/blazor-azure/.morph/templates/infra/parameters.prod.json +0 -29
- package/stacks/blazor-azure/.morph/templates/infra/parameters.staging.json +0 -29
- package/stacks/blazor-azure/.morph/templates/infra/sql-database.bicep +0 -103
- package/stacks/blazor-azure/.morph/templates/infra/storage.bicep +0 -106
- package/stacks/blazor-azure/.morph/templates/integrations/asaas-client.cs +0 -387
- package/stacks/blazor-azure/.morph/templates/integrations/asaas-webhook.cs +0 -351
- package/stacks/blazor-azure/.morph/templates/integrations/azure-identity-config.cs +0 -288
- package/stacks/blazor-azure/.morph/templates/integrations/clerk-config.cs +0 -258
- package/stacks/blazor-azure/.morph/templates/job.cs +0 -171
- package/stacks/blazor-azure/.morph/templates/migration.cs +0 -83
- package/stacks/blazor-azure/.morph/templates/proposal.md +0 -141
- package/stacks/blazor-azure/.morph/templates/recap.md +0 -94
- package/stacks/blazor-azure/.morph/templates/repository.cs +0 -141
- package/stacks/blazor-azure/.morph/templates/saas/subscription.cs +0 -347
- package/stacks/blazor-azure/.morph/templates/saas/tenant.cs +0 -338
- package/stacks/blazor-azure/.morph/templates/service.cs +0 -139
- package/stacks/blazor-azure/.morph/templates/simulation.md +0 -353
- package/stacks/blazor-azure/.morph/templates/spec.md +0 -149
- package/stacks/blazor-azure/.morph/templates/sprint-status.yaml +0 -68
- package/stacks/blazor-azure/.morph/templates/state.template.json +0 -222
- package/stacks/blazor-azure/.morph/templates/story.md +0 -143
- package/stacks/blazor-azure/.morph/templates/tasks.md +0 -257
- package/stacks/blazor-azure/.morph/templates/test.cs +0 -239
- package/stacks/blazor-azure/.morph/templates/ui-components.md +0 -362
- package/stacks/blazor-azure/.morph/templates/ui-design-system.md +0 -286
- package/stacks/blazor-azure/.morph/templates/ui-flows.md +0 -336
- package/stacks/blazor-azure/.morph/templates/ui-mockups.md +0 -133
- package/stacks/nextjs-supabase/.morph/docs/easypanel-setup.md +0 -169
- package/stacks/nextjs-supabase/.morph/docs/supabase-mcp-setup.md +0 -247
- package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/README.md +0 -697
- package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/spec.md +0 -85
- package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/tasks.md +0 -86
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/README.md +0 -498
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/decisions.md +0 -121
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/spec.md +0 -138
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/tasks.md +0 -162
- package/stacks/nextjs-supabase/.morph/standards/easypanel-deploy.md +0 -191
- package/stacks/nextjs-supabase/.morph/standards/nextjs-patterns.md +0 -193
- package/stacks/nextjs-supabase/.morph/standards/supabase-auth.md +0 -171
- package/stacks/nextjs-supabase/.morph/standards/supabase-pgvector.md +0 -164
- package/stacks/nextjs-supabase/.morph/standards/supabase-rls.md +0 -179
- package/stacks/nextjs-supabase/.morph/standards/supabase-storage.md +0 -148
- package/stacks/nextjs-supabase/.morph/templates/contracts.cs +0 -173
- package/stacks/nextjs-supabase/.morph/templates/contracts.ts +0 -168
- package/stacks/nextjs-supabase/.morph/templates/decisions.md +0 -115
- package/stacks/nextjs-supabase/.morph/templates/dockerfile-api.dockerfile +0 -38
- package/stacks/nextjs-supabase/.morph/templates/dockerfile-web.dockerfile +0 -48
- package/stacks/nextjs-supabase/.morph/templates/proposal.md +0 -145
- package/stacks/nextjs-supabase/.morph/templates/recap.md +0 -134
- package/stacks/nextjs-supabase/.morph/templates/rls-policy.sql +0 -57
- package/stacks/nextjs-supabase/.morph/templates/spec.md +0 -231
- package/stacks/nextjs-supabase/.morph/templates/supabase-migration.sql +0 -100
- package/stacks/nextjs-supabase/.morph/templates/tasks.md +0 -257
- /package/src/lib/{design-system-generator.js → generators/design-system-generator.js} +0 -0
- /package/src/lib/{learning-system.js → learning/learning-system.js} +0 -0
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Workflow: FAST TRACK (Trivial)
|
|
2
|
-
|
|
3
|
-
> **Layer:** 1 | **Load:** on-keyword | **Keywords:** bug, fix, corrigir, ajustar, hotfix, edge case, cor, css
|
|
4
|
-
|
|
5
|
-
## Critérios
|
|
6
|
-
|
|
7
|
-
- ≤ 3 arquivos modificados, ≤ 50 linhas, 0 novos componentes
|
|
8
|
-
- Sem infraestrutura, sem decisões arquiteturais
|
|
9
|
-
|
|
10
|
-
## Fases
|
|
11
|
-
|
|
12
|
-
### 1. Quick Analysis (FASE 0+1+2 combinadas)
|
|
13
|
-
- Identifica problema em 2-3 parágrafos
|
|
14
|
-
- Propõe solução direta
|
|
15
|
-
- **PAUSA:** Aprovar ou ajustar?
|
|
16
|
-
|
|
17
|
-
### 2. Implement & Test
|
|
18
|
-
- Implementa diretamente
|
|
19
|
-
- Testa
|
|
20
|
-
- Cria commit descritivo
|
|
21
|
-
|
|
22
|
-
## Outputs
|
|
23
|
-
Nenhum (ou apenas commit message detalhado)
|
|
24
|
-
|
|
25
|
-
## Exemplos
|
|
26
|
-
- "Corrigir validação de CPF no formulário"
|
|
27
|
-
- "Ajustar cor do botão primário"
|
|
28
|
-
- "Hotfix: null pointer na home"
|
|
29
|
-
- "Edge case: validação quando campo vazio"
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
# Workflow: FULL MORPH (Alta Complexidade)
|
|
2
|
-
|
|
3
|
-
> **Layer:** 1 | **Load:** on-keyword | **Keywords:** sistema, autenticação, integração, pattern, cqrs, subsistema
|
|
4
|
-
|
|
5
|
-
## Critérios
|
|
6
|
-
|
|
7
|
-
- > 10 arquivos, > 500 linhas, múltiplos componentes novos
|
|
8
|
-
- Infraestrutura Azure (Bicep), decisões arquiteturais estratégicas
|
|
9
|
-
|
|
10
|
-
## Fases (TODAS obrigatórias)
|
|
11
|
-
|
|
12
|
-
### FASE 0.5: CONTEXT (automática)
|
|
13
|
-
1. Detectar framework MORPH (`@polymorphism-tech/morph-spec`)
|
|
14
|
-
2. Detectar/criar estrutura `.morph/project/`
|
|
15
|
-
3. Análise automática: stack (glob patterns), arquitetura (pastas), configs, UI library
|
|
16
|
-
4. Analisar histórico: decisions.md passados, preferências do usuário
|
|
17
|
-
5. Gerar/atualizar `.morph/project/standards/inferred.md`
|
|
18
|
-
6. Ativar agentes baseado em stack + keywords
|
|
19
|
-
|
|
20
|
-
### FASE 0: PROPOSAL
|
|
21
|
-
1. `npx morph-spec detect "{user-request}"`
|
|
22
|
-
2. Analisar solicitação, identificar stack, estimar complexidade
|
|
23
|
-
3. Gerar proposal.md, registrar agentes no state.json
|
|
24
|
-
- **⛔ PAUSA:** 3 itens (1 ação + 1 pergunta + 1 sugestão)
|
|
25
|
-
|
|
26
|
-
### FASE 1: SETUP
|
|
27
|
-
1. Ler `.morph/config.json`
|
|
28
|
-
2. Confirmar stack, ativar agentes, criar pasta outputs
|
|
29
|
-
3. Carregar padrões (framework/standards/ > project/standards/)
|
|
30
|
-
|
|
31
|
-
### FASE 1.5: UI/UX (condicional - se keywords UI detectadas)
|
|
32
|
-
1. **Perguntar ao usuário:** layout, referências visuais, fluxo, imagens
|
|
33
|
-
2. Analisar referências fornecidas
|
|
34
|
-
3. Gerar deliverables AGNÓSTICOS de biblioteca (ui-mockups, ui-components, ui-flows)
|
|
35
|
-
4. Validar acessibilidade (WCAG 2.1) e responsividade
|
|
36
|
-
- **⛔ PAUSA:** Aprovar / Ajustar wireframes / Adicionar fluxos
|
|
37
|
-
|
|
38
|
-
### FASE 2: DESIGN
|
|
39
|
-
1. Gerar spec.md com requisitos completos
|
|
40
|
-
2. **DECISION POINTS** (cada um requer aprovação):
|
|
41
|
-
- Biblioteca UI (Fluent UI vs MudBlazor)
|
|
42
|
-
- Padrões Arquiteturais (CQRS vs simples, Repository vs EF direto)
|
|
43
|
-
- Estrutura de Dados (entidades, relacionamentos)
|
|
44
|
-
- Infraestrutura Azure (recursos, SKUs, custos)
|
|
45
|
-
- Bibliotecas/SDKs (NuGet packages)
|
|
46
|
-
3. Gerar contracts.cs, documentar decisões em decisions.md
|
|
47
|
-
- **⛔ PAUSA:** Aprovar / Ajustar escopo / Modificar contracts
|
|
48
|
-
|
|
49
|
-
### FASE 3: CLARIFY
|
|
50
|
-
1. Identificar ambiguidades, fazer perguntas, documentar em spec.md, validar edge cases
|
|
51
|
-
|
|
52
|
-
### FASE 4: TASKS
|
|
53
|
-
1. Quebrar spec em tasks T001-TXXX, definir ordem, checkpoints, dependências
|
|
54
|
-
- **⛔ PAUSA:** Aprovar / Repriorizar / Adicionar-remover tasks
|
|
55
|
-
|
|
56
|
-
### FASE 5: IMPLEMENT
|
|
57
|
-
1. Implementar task por task
|
|
58
|
-
2. `npx morph-spec task done {feature} {task-id}` após cada task
|
|
59
|
-
3. Framework gerencia checkpoints automaticamente (a cada 3 tasks)
|
|
60
|
-
4. Gerar recap.md ao final
|
|
61
|
-
|
|
62
|
-
### FASE 6: SYNC (condicional - se complexidade média/alta)
|
|
63
|
-
1. Revisar decisions.md, categorizar (coding, architecture, azure, integrations, ui-ux)
|
|
64
|
-
2. Promover para `.morph/project/standards/{category}.md`
|
|
65
|
-
3. Gerar commit dedicado de sync
|
|
66
|
-
- **⛔ PAUSA:** Aprovar promoção de decisões para standards
|
|
67
|
-
|
|
68
|
-
## Outputs Completos
|
|
69
|
-
proposal.md, ui-design-system.md, ui-mockups.md, ui-components.md, ui-flows.md, spec.md, contracts.cs, tasks.json, decisions.md, recap.md
|
|
70
|
-
|
|
71
|
-
## Exemplos
|
|
72
|
-
- "Sistema de relatórios com jobs agendados Hangfire"
|
|
73
|
-
- "Autenticação completa com Clerk (login, signup, OAuth)"
|
|
74
|
-
- "Dashboard com gráficos, tabelas e filtros complexos"
|
|
75
|
-
- "RAG pipeline com Azure AI Search e embeddings"
|
|
76
|
-
- "Infraestrutura Azure completa com Bicep"
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# Workflow: STANDARD (Média Complexidade)
|
|
2
|
-
|
|
3
|
-
> **Layer:** 1 | **Load:** on-keyword | **Keywords:** paginação, filtro, refatorar, performance, exportar
|
|
4
|
-
|
|
5
|
-
## Critérios
|
|
6
|
-
|
|
7
|
-
- 3-10 arquivos, 50-500 linhas, 1-2 componentes simples
|
|
8
|
-
- Sem infraestrutura complexa, decisões táticas (não estratégicas)
|
|
9
|
-
|
|
10
|
-
## Fases
|
|
11
|
-
|
|
12
|
-
### 1. FASE 0: PROPOSAL (simplificada)
|
|
13
|
-
- Análise inicial em 1 parágrafo
|
|
14
|
-
- Detecta agentes relevantes
|
|
15
|
-
- **PAUSA:** Aprovar?
|
|
16
|
-
|
|
17
|
-
### 2. FASE 2: DESIGN (apenas spec.md)
|
|
18
|
-
- Spec técnico conciso (1-2 páginas)
|
|
19
|
-
- Sem contracts.cs se trivial
|
|
20
|
-
- Decisões táticas em decisions.md
|
|
21
|
-
- **PAUSA:** Aprovar?
|
|
22
|
-
|
|
23
|
-
### 3. FASE 4: TASKS (se > 5 tasks)
|
|
24
|
-
- Breakdown em tasks
|
|
25
|
-
- **PAUSA:** Aprovar?
|
|
26
|
-
|
|
27
|
-
### 4. FASE 5: IMPLEMENT
|
|
28
|
-
- Implementa task por task
|
|
29
|
-
- Gera recap.md ao final
|
|
30
|
-
|
|
31
|
-
## Outputs
|
|
32
|
-
proposal.md, spec.md, recap.md (mínimo necessário)
|
|
33
|
-
|
|
34
|
-
## Fases Puladas
|
|
35
|
-
- FASE 1 (SETUP) - contexto já carregado
|
|
36
|
-
- FASE 1.5 (UI/UX) - se não tiver front-end significativo
|
|
37
|
-
- FASE 3 (CLARIFY) - se spec for claro
|
|
38
|
-
- FASE 6 (SYNC) - decisões não são estratégicas
|
|
39
|
-
|
|
40
|
-
## Exemplos
|
|
41
|
-
- "Adicionar paginação na tabela de usuários"
|
|
42
|
-
- "Criar filtro por data no relatório"
|
|
43
|
-
- "Refatorar serviço de email para async"
|
|
44
|
-
- "Adicionar botão de exportar CSV"
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# Workflow: UI REFRESH (Redesign Visual)
|
|
2
|
-
|
|
3
|
-
> **Layer:** 1 | **Load:** on-keyword | **Keywords:** redesign, redesenhar, bonito, visual, estetica, modernizar
|
|
4
|
-
|
|
5
|
-
## Critérios
|
|
6
|
-
|
|
7
|
-
- Páginas existentes com código funcional
|
|
8
|
-
- Apenas mudanças visuais (CSS, HTML, layout)
|
|
9
|
-
- Sem mudanças em lógica de negócio, sem infraestrutura
|
|
10
|
-
|
|
11
|
-
## Fases
|
|
12
|
-
|
|
13
|
-
### 1. ANÁLISE VISUAL (FASE 0+1 combinadas)
|
|
14
|
-
- Listar páginas a redesenhar
|
|
15
|
-
- Identificar componentes compartilhados e design system existente
|
|
16
|
-
- Se protótipo existir: ler e extrair padrões
|
|
17
|
-
- **PAUSA:** Escolher direção estética
|
|
18
|
-
|
|
19
|
-
### 2. DESIGN SYSTEM (FASE 1.5 simplificada)
|
|
20
|
-
- Definir variáveis CSS novas
|
|
21
|
-
- Listar componentes CSS a criar (checklist)
|
|
22
|
-
- Gerar/atualizar design-system.css
|
|
23
|
-
- **PAUSA:** Aprovar componentes
|
|
24
|
-
|
|
25
|
-
### 3. IMPLEMENT (por página)
|
|
26
|
-
- Atualizar CSS primeiro, depois cada página .razor
|
|
27
|
-
- Build incremental a cada 2-3 páginas
|
|
28
|
-
- Validar com `morph-spec validate-css`
|
|
29
|
-
|
|
30
|
-
## Outputs
|
|
31
|
-
design-refresh-checklist.md, CSS atualizado, páginas .razor, recap.md
|
|
32
|
-
|
|
33
|
-
## Fases Puladas
|
|
34
|
-
Setup completo, Contracts, Tasks detalhadas, Infra, Clarify, Sync
|
|
35
|
-
|
|
36
|
-
## Exemplos
|
|
37
|
-
- "Redesenhar as páginas do checkout para ficar mais bonito"
|
|
38
|
-
- "Modernizar visual do dashboard"
|
|
39
|
-
- "Aplicar novo design system nas telas existentes"
|
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
# API .NET + Next.js Example
|
|
2
|
-
|
|
3
|
-
Exemplo de arquitetura full-stack com .NET API backend e Next.js frontend.
|
|
4
|
-
|
|
5
|
-
## Stack
|
|
6
|
-
|
|
7
|
-
| Camada | Tecnologia |
|
|
8
|
-
|--------|------------|
|
|
9
|
-
| **Frontend** | Next.js 14 (App Router) |
|
|
10
|
-
| **Backend** | .NET 8 Minimal APIs |
|
|
11
|
-
| **Database** | SQL Server / PostgreSQL |
|
|
12
|
-
| **Auth** | Clerk (SSO) |
|
|
13
|
-
| **API Communication** | REST + React Query |
|
|
14
|
-
| **Infra** | Azure Container Apps |
|
|
15
|
-
|
|
16
|
-
## Arquitetura
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
20
|
-
│ Next.js Frontend │
|
|
21
|
-
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
|
|
22
|
-
│ │ Pages │ │ Components │ │ Hooks │ │
|
|
23
|
-
│ │ /dashboard │ │ DataTable │ │ useProducts() │ │
|
|
24
|
-
│ │ /products │ │ Forms │ │ useOrders() │ │
|
|
25
|
-
│ │ /orders │ │ Charts │ │ useAuth() │ │
|
|
26
|
-
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
|
|
27
|
-
└─────────────────────────────────────────────────────────────┘
|
|
28
|
-
│
|
|
29
|
-
│ REST API
|
|
30
|
-
▼
|
|
31
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
32
|
-
│ .NET API │
|
|
33
|
-
│ ┌─────────────────────────────────────────────────────┐ │
|
|
34
|
-
│ │ Endpoints: /api/products, /api/orders, /api/users │ │
|
|
35
|
-
│ └─────────────────────────────────────────────────────┘ │
|
|
36
|
-
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
|
|
37
|
-
│ │ Services │ │ Validators │ │ Middlewares │ │
|
|
38
|
-
│ └──────────────┘ └──────────────┘ └──────────────────┘ │
|
|
39
|
-
└─────────────────────────────────────────────────────────────┘
|
|
40
|
-
│
|
|
41
|
-
▼
|
|
42
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
43
|
-
│ Infrastructure │
|
|
44
|
-
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
|
|
45
|
-
│ │ EF Core │ │ Redis │ │ Blob Storage │ │
|
|
46
|
-
│ │ Repository │ │ Cache │ │ (files) │ │
|
|
47
|
-
│ └──────────────┘ └──────────────┘ └──────────────────┘ │
|
|
48
|
-
└─────────────────────────────────────────────────────────────┘
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## Estrutura de Pastas
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
project/
|
|
55
|
-
├── src/
|
|
56
|
-
│ ├── api/ # .NET Backend
|
|
57
|
-
│ │ ├── Api/
|
|
58
|
-
│ │ │ ├── Endpoints/
|
|
59
|
-
│ │ │ │ ├── ProductEndpoints.cs
|
|
60
|
-
│ │ │ │ ├── OrderEndpoints.cs
|
|
61
|
-
│ │ │ │ └── UserEndpoints.cs
|
|
62
|
-
│ │ │ ├── Middleware/
|
|
63
|
-
│ │ │ └── Program.cs
|
|
64
|
-
│ │ ├── Application/
|
|
65
|
-
│ │ │ ├── Services/
|
|
66
|
-
│ │ │ └── Validators/
|
|
67
|
-
│ │ ├── Domain/
|
|
68
|
-
│ │ │ ├── Entities/
|
|
69
|
-
│ │ │ └── Interfaces/
|
|
70
|
-
│ │ └── Infrastructure/
|
|
71
|
-
│ │ ├── Data/
|
|
72
|
-
│ │ └── Repositories/
|
|
73
|
-
│ │
|
|
74
|
-
│ └── web/ # Next.js Frontend
|
|
75
|
-
│ ├── app/
|
|
76
|
-
│ │ ├── (auth)/
|
|
77
|
-
│ │ │ ├── sign-in/
|
|
78
|
-
│ │ │ └── sign-up/
|
|
79
|
-
│ │ ├── (dashboard)/
|
|
80
|
-
│ │ │ ├── dashboard/
|
|
81
|
-
│ │ │ ├── products/
|
|
82
|
-
│ │ │ └── orders/
|
|
83
|
-
│ │ ├── layout.tsx
|
|
84
|
-
│ │ └── page.tsx
|
|
85
|
-
│ ├── components/
|
|
86
|
-
│ │ ├── ui/
|
|
87
|
-
│ │ └── shared/
|
|
88
|
-
│ ├── hooks/
|
|
89
|
-
│ │ ├── use-products.ts
|
|
90
|
-
│ │ └── use-orders.ts
|
|
91
|
-
│ ├── lib/
|
|
92
|
-
│ │ ├── api-client.ts
|
|
93
|
-
│ │ └── utils.ts
|
|
94
|
-
│ └── types/
|
|
95
|
-
│
|
|
96
|
-
├── infra/ # Infrastructure as Code
|
|
97
|
-
│ ├── main.bicep
|
|
98
|
-
│ └── modules/
|
|
99
|
-
│
|
|
100
|
-
└── docker-compose.yml
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## Quick Start
|
|
104
|
-
|
|
105
|
-
### Backend (.NET)
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
cd src/api
|
|
109
|
-
dotnet restore
|
|
110
|
-
dotnet ef database update
|
|
111
|
-
dotnet run
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### Frontend (Next.js)
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
cd src/web
|
|
118
|
-
npm install
|
|
119
|
-
npm run dev
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Docker Compose
|
|
123
|
-
|
|
124
|
-
```bash
|
|
125
|
-
docker-compose up -d
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## Features
|
|
129
|
-
|
|
130
|
-
### Backend
|
|
131
|
-
- Minimal APIs com OpenAPI
|
|
132
|
-
- FluentValidation para validação
|
|
133
|
-
- EF Core com Repository Pattern
|
|
134
|
-
- JWT Bearer Authentication
|
|
135
|
-
- Health Checks
|
|
136
|
-
- Structured Logging
|
|
137
|
-
|
|
138
|
-
### Frontend
|
|
139
|
-
- App Router (Next.js 14)
|
|
140
|
-
- Server Components + Client Components
|
|
141
|
-
- React Query para data fetching
|
|
142
|
-
- Tailwind CSS + shadcn/ui
|
|
143
|
-
- Form handling com React Hook Form
|
|
144
|
-
- TypeScript estrito
|
|
145
|
-
|
|
146
|
-
## Autenticação
|
|
147
|
-
|
|
148
|
-
### Fluxo
|
|
149
|
-
|
|
150
|
-
```mermaid
|
|
151
|
-
sequenceDiagram
|
|
152
|
-
participant User
|
|
153
|
-
participant NextJS
|
|
154
|
-
participant Clerk
|
|
155
|
-
participant API
|
|
156
|
-
|
|
157
|
-
User->>NextJS: Acessa /sign-in
|
|
158
|
-
NextJS->>Clerk: Redirect para Clerk
|
|
159
|
-
User->>Clerk: Login
|
|
160
|
-
Clerk-->>NextJS: JWT Token
|
|
161
|
-
NextJS->>API: Request com Bearer Token
|
|
162
|
-
API->>Clerk: Valida token (JWKS)
|
|
163
|
-
API-->>NextJS: Response
|
|
164
|
-
NextJS-->>User: Renderiza página
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
### Configuração Clerk (Next.js)
|
|
168
|
-
|
|
169
|
-
```typescript
|
|
170
|
-
// middleware.ts
|
|
171
|
-
import { clerkMiddleware } from "@clerk/nextjs/server";
|
|
172
|
-
|
|
173
|
-
export default clerkMiddleware();
|
|
174
|
-
|
|
175
|
-
export const config = {
|
|
176
|
-
matcher: ["/((?!.*\\..*|_next).*)", "/", "/(api|trpc)(.*)"],
|
|
177
|
-
};
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
### Configuração JWT (API)
|
|
181
|
-
|
|
182
|
-
```csharp
|
|
183
|
-
// Program.cs
|
|
184
|
-
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
|
|
185
|
-
.AddJwtBearer(options =>
|
|
186
|
-
{
|
|
187
|
-
options.Authority = builder.Configuration["Clerk:Authority"];
|
|
188
|
-
options.TokenValidationParameters = new TokenValidationParameters
|
|
189
|
-
{
|
|
190
|
-
ValidateAudience = false,
|
|
191
|
-
NameClaimType = "sub"
|
|
192
|
-
};
|
|
193
|
-
});
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
## API Client (Frontend)
|
|
197
|
-
|
|
198
|
-
```typescript
|
|
199
|
-
// lib/api-client.ts
|
|
200
|
-
import { auth } from "@clerk/nextjs/server";
|
|
201
|
-
|
|
202
|
-
const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL;
|
|
203
|
-
|
|
204
|
-
export async function apiClient<T>(
|
|
205
|
-
endpoint: string,
|
|
206
|
-
options: RequestInit = {}
|
|
207
|
-
): Promise<T> {
|
|
208
|
-
const { getToken } = auth();
|
|
209
|
-
const token = await getToken();
|
|
210
|
-
|
|
211
|
-
const response = await fetch(`${API_BASE_URL}${endpoint}`, {
|
|
212
|
-
...options,
|
|
213
|
-
headers: {
|
|
214
|
-
"Content-Type": "application/json",
|
|
215
|
-
Authorization: `Bearer ${token}`,
|
|
216
|
-
...options.headers,
|
|
217
|
-
},
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
if (!response.ok) {
|
|
221
|
-
throw new Error(`API Error: ${response.statusText}`);
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
return response.json();
|
|
225
|
-
}
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
## Custos Estimados
|
|
229
|
-
|
|
230
|
-
| Recurso | Tier | Custo/mês |
|
|
231
|
-
|---------|------|-----------|
|
|
232
|
-
| Container App (API) | Consumption | ~$0-5 |
|
|
233
|
-
| Container App (Web) | Consumption | ~$0-5 |
|
|
234
|
-
| SQL Database | Free 32GB | $0 |
|
|
235
|
-
| Clerk | Free 10k MAU | $0 |
|
|
236
|
-
|
|
237
|
-
**Total**: < $10/mês para MVPs
|
|
238
|
-
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
*MORPH-SPEC by Polymorphism Tech*
|