specweave 0.21.1 → 0.21.3
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 +232 -5
- package/dist/plugins/specweave-github/lib/IssueStateManager.d.ts +98 -0
- package/dist/plugins/specweave-github/lib/IssueStateManager.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/IssueStateManager.js +146 -0
- package/dist/plugins/specweave-github/lib/IssueStateManager.js.map +1 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +6 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -1
- package/dist/src/cli/commands/check-hooks.d.ts +11 -0
- package/dist/src/cli/commands/check-hooks.d.ts.map +1 -0
- package/dist/src/cli/commands/check-hooks.js +144 -0
- package/dist/src/cli/commands/check-hooks.js.map +1 -0
- package/dist/src/cli/commands/cicd-monitor.js +3 -3
- package/dist/src/cli/commands/cicd-monitor.js.map +1 -1
- package/dist/src/cli/commands/import-docs.js +2 -2
- package/dist/src/cli/commands/import-docs.js.map +1 -1
- package/dist/src/cli/commands/init-multiproject.js +4 -4
- package/dist/src/cli/commands/init-multiproject.js.map +1 -1
- package/dist/src/cli/commands/migrate-to-multiproject.js +3 -3
- package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
- package/dist/src/cli/commands/plan/agent-invoker.d.ts +79 -0
- package/dist/src/cli/commands/plan/agent-invoker.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/agent-invoker.js +383 -0
- package/dist/src/cli/commands/plan/agent-invoker.js.map +1 -0
- package/dist/src/cli/commands/plan/increment-detector.d.ts +27 -0
- package/dist/src/cli/commands/plan/increment-detector.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/increment-detector.js +159 -0
- package/dist/src/cli/commands/plan/increment-detector.js.map +1 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.d.ts +45 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.js +229 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.js.map +1 -0
- package/dist/src/cli/commands/plan/plan-validator.d.ts +36 -0
- package/dist/src/cli/commands/plan/plan-validator.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/plan-validator.js +174 -0
- package/dist/src/cli/commands/plan/plan-validator.js.map +1 -0
- package/dist/src/cli/commands/plan/types.d.ts +170 -0
- package/dist/src/cli/commands/plan/types.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/types.js +42 -0
- package/dist/src/cli/commands/plan/types.js.map +1 -0
- package/dist/src/cli/commands/plan-command.d.ts +16 -0
- package/dist/src/cli/commands/plan-command.d.ts.map +1 -0
- package/dist/src/cli/commands/plan-command.js +127 -0
- package/dist/src/cli/commands/plan-command.js.map +1 -0
- package/dist/src/cli/commands/switch-project.js +3 -3
- package/dist/src/cli/commands/switch-project.js.map +1 -1
- package/dist/src/cli/commands/validate-parent-repo.js +1 -1
- package/dist/src/cli/commands/validate-parent-repo.js.map +1 -1
- package/dist/src/config/ConfigManager.d.ts +69 -0
- package/dist/src/config/ConfigManager.d.ts.map +1 -0
- package/dist/src/config/ConfigManager.js +130 -0
- package/dist/src/config/ConfigManager.js.map +1 -0
- package/dist/src/config/types.d.ts +1357 -0
- package/dist/src/config/types.d.ts.map +1 -0
- package/dist/src/config/types.js +67 -0
- package/dist/src/config/types.js.map +1 -0
- package/dist/src/core/brownfield/importer.d.ts +1 -1
- package/dist/src/core/brownfield/importer.d.ts.map +1 -1
- package/dist/src/core/brownfield/importer.js +3 -3
- package/dist/src/core/brownfield/importer.js.map +1 -1
- package/dist/src/core/cicd/config-loader.d.ts +1 -1
- package/dist/src/core/cicd/config-loader.d.ts.map +1 -1
- package/dist/src/core/cicd/index.d.ts +6 -6
- package/dist/src/core/cicd/index.d.ts.map +1 -1
- package/dist/src/core/cicd/index.js +6 -6
- package/dist/src/core/cicd/index.js.map +1 -1
- package/dist/src/core/cicd/monitor-service.d.ts +3 -3
- package/dist/src/core/cicd/monitor-service.d.ts.map +1 -1
- package/dist/src/core/cicd/monitor-service.js +3 -3
- package/dist/src/core/cicd/monitor-service.js.map +1 -1
- package/dist/src/core/cicd/notifier.d.ts +1 -1
- package/dist/src/core/cicd/notifier.d.ts.map +1 -1
- package/dist/src/core/cicd/state-manager.d.ts +1 -1
- package/dist/src/core/cicd/state-manager.d.ts.map +1 -1
- package/dist/src/core/cicd/state-manager.js +1 -1
- package/dist/src/core/cicd/state-manager.js.map +1 -1
- package/dist/src/core/cicd/workflow-monitor.d.ts +1 -1
- package/dist/src/core/cicd/workflow-monitor.d.ts.map +1 -1
- package/dist/src/core/cicd/workflow-monitor.js +1 -1
- package/dist/src/core/cicd/workflow-monitor.js.map +1 -1
- package/dist/src/core/cost-tracker.d.ts +2 -2
- package/dist/src/core/cost-tracker.d.ts.map +1 -1
- package/dist/src/core/cost-tracker.js +1 -1
- package/dist/src/core/cost-tracker.js.map +1 -1
- package/dist/src/core/hooks/HealthReporter.d.ts +55 -0
- package/dist/src/core/hooks/HealthReporter.d.ts.map +1 -0
- package/dist/src/core/hooks/HealthReporter.js +268 -0
- package/dist/src/core/hooks/HealthReporter.js.map +1 -0
- package/dist/src/core/hooks/HookAutoFixer.d.ts +41 -0
- package/dist/src/core/hooks/HookAutoFixer.d.ts.map +1 -0
- package/dist/src/core/hooks/HookAutoFixer.js +222 -0
- package/dist/src/core/hooks/HookAutoFixer.js.map +1 -0
- package/dist/src/core/hooks/HookExecutor.d.ts +57 -0
- package/dist/src/core/hooks/HookExecutor.d.ts.map +1 -0
- package/dist/src/core/hooks/HookExecutor.js +287 -0
- package/dist/src/core/hooks/HookExecutor.js.map +1 -0
- package/dist/src/core/hooks/HookHealthChecker.d.ts +51 -0
- package/dist/src/core/hooks/HookHealthChecker.d.ts.map +1 -0
- package/dist/src/core/hooks/HookHealthChecker.js +212 -0
- package/dist/src/core/hooks/HookHealthChecker.js.map +1 -0
- package/dist/src/core/hooks/HookScanner.d.ts +65 -0
- package/dist/src/core/hooks/HookScanner.d.ts.map +1 -0
- package/dist/src/core/hooks/HookScanner.js +214 -0
- package/dist/src/core/hooks/HookScanner.js.map +1 -0
- package/dist/src/core/hooks/types.d.ts +281 -0
- package/dist/src/core/hooks/types.d.ts.map +1 -0
- package/dist/src/core/hooks/types.js +10 -0
- package/dist/src/core/hooks/types.js.map +1 -0
- package/dist/src/core/iac/index.d.ts +10 -0
- package/dist/src/core/iac/index.d.ts.map +1 -0
- package/dist/src/core/iac/index.js +11 -0
- package/dist/src/core/iac/index.js.map +1 -0
- package/dist/src/core/iac/template-engine.d.ts +77 -0
- package/dist/src/core/iac/template-engine.d.ts.map +1 -0
- package/dist/src/core/iac/template-engine.js +182 -0
- package/dist/src/core/iac/template-engine.js.map +1 -0
- package/dist/src/core/increment/ac-status-manager.d.ts +115 -0
- package/dist/src/core/increment/ac-status-manager.d.ts.map +1 -0
- package/dist/src/core/increment/ac-status-manager.js +343 -0
- package/dist/src/core/increment/ac-status-manager.js.map +1 -0
- package/dist/src/core/increment/auto-transition-manager.d.ts +60 -0
- package/dist/src/core/increment/auto-transition-manager.d.ts.map +1 -0
- package/dist/src/core/increment/auto-transition-manager.js +192 -0
- package/dist/src/core/increment/auto-transition-manager.js.map +1 -0
- package/dist/src/core/increment/limits.d.ts +1 -1
- package/dist/src/core/increment/limits.d.ts.map +1 -1
- package/dist/src/core/increment/limits.js +2 -2
- package/dist/src/core/increment/limits.js.map +1 -1
- package/dist/src/core/increment/spec-sync-manager.d.ts +177 -0
- package/dist/src/core/increment/spec-sync-manager.d.ts.map +1 -0
- package/dist/src/core/increment/spec-sync-manager.js +496 -0
- package/dist/src/core/increment/spec-sync-manager.js.map +1 -0
- package/dist/src/core/increment/status-auto-transition.d.ts +46 -0
- package/dist/src/core/increment/status-auto-transition.d.ts.map +1 -0
- package/dist/src/core/increment/status-auto-transition.js +178 -0
- package/dist/src/core/increment/status-auto-transition.js.map +1 -0
- package/dist/src/core/increment/task-state-manager.d.ts +75 -0
- package/dist/src/core/increment/task-state-manager.d.ts.map +1 -0
- package/dist/src/core/increment/task-state-manager.js +117 -0
- package/dist/src/core/increment/task-state-manager.js.map +1 -0
- package/dist/src/core/living-docs/CodeValidator.d.ts +68 -0
- package/dist/src/core/living-docs/CodeValidator.d.ts.map +1 -0
- package/dist/src/core/living-docs/CodeValidator.js +160 -0
- package/dist/src/core/living-docs/CodeValidator.js.map +1 -0
- package/dist/src/core/living-docs/CompletionPropagator.d.ts +84 -0
- package/dist/src/core/living-docs/CompletionPropagator.d.ts.map +1 -0
- package/dist/src/core/living-docs/CompletionPropagator.js +205 -0
- package/dist/src/core/living-docs/CompletionPropagator.js.map +1 -0
- package/dist/src/core/living-docs/ProjectDetector.d.ts +29 -0
- package/dist/src/core/living-docs/ProjectDetector.d.ts.map +1 -0
- package/dist/src/core/living-docs/ProjectDetector.js +94 -0
- package/dist/src/core/living-docs/ProjectDetector.js.map +1 -0
- package/dist/src/core/living-docs/SpecDistributor.d.ts +55 -0
- package/dist/src/core/living-docs/SpecDistributor.d.ts.map +1 -0
- package/dist/src/core/living-docs/SpecDistributor.js +216 -0
- package/dist/src/core/living-docs/SpecDistributor.js.map +1 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts +116 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts.map +1 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.js +356 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.js.map +1 -0
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
- package/dist/src/core/living-docs/hierarchy-mapper.js +2 -1
- package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
- package/dist/src/core/living-docs/index.d.ts +1 -1
- package/dist/src/core/living-docs/index.d.ts.map +1 -1
- package/dist/src/core/living-docs/index.js +5 -1
- package/dist/src/core/living-docs/index.js.map +1 -1
- package/dist/src/core/living-docs/types.d.ts +70 -300
- package/dist/src/core/living-docs/types.d.ts.map +1 -1
- package/dist/src/core/living-docs/types.js +2 -10
- package/dist/src/core/living-docs/types.js.map +1 -1
- package/dist/src/core/project-manager.d.ts +1 -1
- package/dist/src/core/project-manager.d.ts.map +1 -1
- package/dist/src/core/project-manager.js +2 -2
- package/dist/src/core/project-manager.js.map +1 -1
- package/dist/src/core/qa/quality-gate-decider.d.ts +1 -1
- package/dist/src/core/qa/quality-gate-decider.d.ts.map +1 -1
- package/dist/src/core/qa/risk-calculator.d.ts +1 -1
- package/dist/src/core/qa/risk-calculator.d.ts.map +1 -1
- package/dist/src/core/repo-structure/setup-summary.d.ts +1 -1
- package/dist/src/core/repo-structure/setup-summary.d.ts.map +1 -1
- package/dist/src/core/rfc-generator-v2.d.ts +1 -1
- package/dist/src/core/rfc-generator-v2.d.ts.map +1 -1
- package/dist/src/core/rfc-generator-v2.js +1 -1
- package/dist/src/core/rfc-generator-v2.js.map +1 -1
- package/dist/src/core/serverless/context-detector.d.ts +12 -0
- package/dist/src/core/serverless/context-detector.d.ts.map +1 -0
- package/dist/src/core/serverless/context-detector.js +213 -0
- package/dist/src/core/serverless/context-detector.js.map +1 -0
- package/dist/src/core/serverless/cost-comparison.d.ts +73 -0
- package/dist/src/core/serverless/cost-comparison.d.ts.map +1 -0
- package/dist/src/core/serverless/cost-comparison.js +198 -0
- package/dist/src/core/serverless/cost-comparison.js.map +1 -0
- package/dist/src/core/serverless/cost-estimator.d.ts +69 -0
- package/dist/src/core/serverless/cost-estimator.d.ts.map +1 -0
- package/dist/src/core/serverless/cost-estimator.js +127 -0
- package/dist/src/core/serverless/cost-estimator.js.map +1 -0
- package/dist/src/core/serverless/cost-optimizer.d.ts +57 -0
- package/dist/src/core/serverless/cost-optimizer.d.ts.map +1 -0
- package/dist/src/core/serverless/cost-optimizer.js +221 -0
- package/dist/src/core/serverless/cost-optimizer.js.map +1 -0
- package/dist/src/core/serverless/index.d.ts +20 -0
- package/dist/src/core/serverless/index.d.ts.map +1 -0
- package/dist/src/core/serverless/index.js +26 -0
- package/dist/src/core/serverless/index.js.map +1 -0
- package/dist/src/core/serverless/learning-path-recommender.d.ts +152 -0
- package/dist/src/core/serverless/learning-path-recommender.d.ts.map +1 -0
- package/dist/src/core/serverless/learning-path-recommender.js +389 -0
- package/dist/src/core/serverless/learning-path-recommender.js.map +1 -0
- package/dist/src/core/serverless/platform-data-loader.d.ts +22 -0
- package/dist/src/core/serverless/platform-data-loader.d.ts.map +1 -0
- package/dist/src/core/serverless/platform-data-loader.js +49 -0
- package/dist/src/core/serverless/platform-data-loader.js.map +1 -0
- package/dist/src/core/serverless/platform-selector.d.ts +20 -0
- package/dist/src/core/serverless/platform-selector.d.ts.map +1 -0
- package/dist/src/core/serverless/platform-selector.js +279 -0
- package/dist/src/core/serverless/platform-selector.js.map +1 -0
- package/dist/src/core/serverless/recommendation-formatter.d.ts +24 -0
- package/dist/src/core/serverless/recommendation-formatter.d.ts.map +1 -0
- package/dist/src/core/serverless/recommendation-formatter.js +70 -0
- package/dist/src/core/serverless/recommendation-formatter.js.map +1 -0
- package/dist/src/core/serverless/suitability-analyzer.d.ts +22 -0
- package/dist/src/core/serverless/suitability-analyzer.d.ts.map +1 -0
- package/dist/src/core/serverless/suitability-analyzer.js +262 -0
- package/dist/src/core/serverless/suitability-analyzer.js.map +1 -0
- package/dist/src/core/serverless/types.d.ts +96 -0
- package/dist/src/core/serverless/types.d.ts.map +1 -0
- package/dist/src/core/serverless/types.js +5 -0
- package/dist/src/core/serverless/types.js.map +1 -0
- package/dist/src/core/sync/bidirectional-engine.d.ts +1 -1
- package/dist/src/core/sync/bidirectional-engine.d.ts.map +1 -1
- package/dist/src/core/sync/enhanced-content-builder.d.ts +1 -1
- package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
- package/dist/src/core/sync/profile-manager.d.ts +1 -1
- package/dist/src/core/sync/profile-manager.d.ts.map +1 -1
- package/dist/src/core/sync/profile-selector.d.ts +1 -1
- package/dist/src/core/sync/profile-selector.d.ts.map +1 -1
- package/dist/src/core/sync/profile-selector.js +1 -1
- package/dist/src/core/sync/profile-selector.js.map +1 -1
- package/dist/src/core/sync/project-context.d.ts +1 -1
- package/dist/src/core/sync/project-context.d.ts.map +1 -1
- package/dist/src/core/sync/rate-limiter.d.ts +1 -1
- package/dist/src/core/sync/rate-limiter.d.ts.map +1 -1
- package/dist/src/core/sync/status-sync-engine.d.ts +2 -2
- package/dist/src/core/sync/status-sync-engine.d.ts.map +1 -1
- package/dist/src/core/sync/status-sync-engine.js +2 -2
- package/dist/src/core/sync/status-sync-engine.js.map +1 -1
- package/dist/src/core/sync/time-range-selector.d.ts +1 -1
- package/dist/src/core/sync/time-range-selector.d.ts.map +1 -1
- package/dist/src/core/sync/time-range-selector.js +1 -1
- package/dist/src/core/sync/time-range-selector.js.map +1 -1
- package/dist/src/core/types/increment-metadata.d.ts +27 -0
- package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
- package/dist/src/core/types/increment-metadata.js +45 -1
- package/dist/src/core/types/increment-metadata.js.map +1 -1
- package/dist/src/core/types/sync-profile.d.ts +2 -0
- package/dist/src/core/types/sync-profile.d.ts.map +1 -1
- package/dist/src/core/types/sync-profile.js.map +1 -1
- package/dist/src/core/validation/increment-structure-validator.d.ts +47 -0
- package/dist/src/core/validation/increment-structure-validator.d.ts.map +1 -0
- package/dist/src/core/validation/increment-structure-validator.js +187 -0
- package/dist/src/core/validation/increment-structure-validator.js.map +1 -0
- package/dist/src/core/validation/three-file-validator.d.ts +82 -0
- package/dist/src/core/validation/three-file-validator.d.ts.map +1 -0
- package/dist/src/core/validation/three-file-validator.js +320 -0
- package/dist/src/core/validation/three-file-validator.js.map +1 -0
- package/dist/src/core/workflow/phase-detector.d.ts +103 -0
- package/dist/src/core/workflow/phase-detector.d.ts.map +1 -0
- package/dist/src/core/workflow/phase-detector.js +704 -0
- package/dist/src/core/workflow/phase-detector.js.map +1 -0
- package/dist/src/core/workflow/types.d.ts +153 -0
- package/dist/src/core/workflow/types.d.ts.map +1 -0
- package/dist/src/core/workflow/types.js +47 -0
- package/dist/src/core/workflow/types.js.map +1 -0
- package/dist/src/init/InitFlow.d.ts +37 -0
- package/dist/src/init/InitFlow.d.ts.map +1 -0
- package/dist/src/init/InitFlow.js +209 -0
- package/dist/src/init/InitFlow.js.map +1 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.d.ts +107 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.d.ts.map +1 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.js +405 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.js.map +1 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.d.ts +11 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.d.ts.map +1 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.js +92 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.js.map +1 -0
- package/dist/src/init/architecture/types.d.ts +251 -0
- package/dist/src/init/architecture/types.d.ts.map +1 -0
- package/dist/src/init/architecture/types.js +54 -0
- package/dist/src/init/architecture/types.js.map +1 -0
- package/dist/src/init/compliance/ComplianceDetector.d.ts +17 -0
- package/dist/src/init/compliance/ComplianceDetector.d.ts.map +1 -0
- package/dist/src/init/compliance/ComplianceDetector.js +64 -0
- package/dist/src/init/compliance/ComplianceDetector.js.map +1 -0
- package/dist/src/init/compliance/standards-database.d.ts +48 -0
- package/dist/src/init/compliance/standards-database.d.ts.map +1 -0
- package/dist/src/init/compliance/standards-database.js +506 -0
- package/dist/src/init/compliance/standards-database.js.map +1 -0
- package/dist/src/init/compliance/types.d.ts +91 -0
- package/dist/src/init/compliance/types.d.ts.map +1 -0
- package/dist/src/init/compliance/types.js +43 -0
- package/dist/src/init/compliance/types.js.map +1 -0
- package/dist/src/init/repo/GitHubAPIClient.d.ts +51 -0
- package/dist/src/init/repo/GitHubAPIClient.d.ts.map +1 -0
- package/dist/src/init/repo/GitHubAPIClient.js +144 -0
- package/dist/src/init/repo/GitHubAPIClient.js.map +1 -0
- package/dist/src/init/repo/RepositorySelector.d.ts +45 -0
- package/dist/src/init/repo/RepositorySelector.d.ts.map +1 -0
- package/dist/src/init/repo/RepositorySelector.js +106 -0
- package/dist/src/init/repo/RepositorySelector.js.map +1 -0
- package/dist/src/init/repo/types.d.ts +95 -0
- package/dist/src/init/repo/types.d.ts.map +1 -0
- package/dist/src/init/repo/types.js +25 -0
- package/dist/src/init/repo/types.js.map +1 -0
- package/dist/src/init/research/CompetitorAnalyzer.d.ts +79 -0
- package/dist/src/init/research/CompetitorAnalyzer.d.ts.map +1 -0
- package/dist/src/init/research/CompetitorAnalyzer.js +265 -0
- package/dist/src/init/research/CompetitorAnalyzer.js.map +1 -0
- package/dist/src/init/research/MarketDetector.d.ts +62 -0
- package/dist/src/init/research/MarketDetector.d.ts.map +1 -0
- package/dist/src/init/research/MarketDetector.js +247 -0
- package/dist/src/init/research/MarketDetector.js.map +1 -0
- package/dist/src/init/research/OpportunityScorer.d.ts +58 -0
- package/dist/src/init/research/OpportunityScorer.d.ts.map +1 -0
- package/dist/src/init/research/OpportunityScorer.js +194 -0
- package/dist/src/init/research/OpportunityScorer.js.map +1 -0
- package/dist/src/init/research/QuestionGenerator.d.ts +68 -0
- package/dist/src/init/research/QuestionGenerator.d.ts.map +1 -0
- package/dist/src/init/research/QuestionGenerator.js +244 -0
- package/dist/src/init/research/QuestionGenerator.js.map +1 -0
- package/dist/src/init/research/ReportGenerator.d.ts +36 -0
- package/dist/src/init/research/ReportGenerator.d.ts.map +1 -0
- package/dist/src/init/research/ReportGenerator.js +125 -0
- package/dist/src/init/research/ReportGenerator.js.map +1 -0
- package/dist/src/init/research/VisionAnalyzer.d.ts +129 -0
- package/dist/src/init/research/VisionAnalyzer.d.ts.map +1 -0
- package/dist/src/init/research/VisionAnalyzer.js +212 -0
- package/dist/src/init/research/VisionAnalyzer.js.map +1 -0
- package/dist/src/init/research/keyword-extractor.d.ts +78 -0
- package/dist/src/init/research/keyword-extractor.d.ts.map +1 -0
- package/dist/src/init/research/keyword-extractor.js +230 -0
- package/dist/src/init/research/keyword-extractor.js.map +1 -0
- package/dist/src/init/research/src/config/ConfigManager.d.ts +14 -0
- package/dist/src/init/research/src/config/ConfigManager.d.ts.map +1 -0
- package/dist/src/init/research/src/config/ConfigManager.js +45 -0
- package/dist/src/init/research/src/config/ConfigManager.js.map +1 -0
- package/dist/src/init/research/src/config/types.d.ts +102 -0
- package/dist/src/init/research/src/config/types.d.ts.map +1 -0
- package/dist/src/init/research/src/config/types.js +24 -0
- package/dist/src/init/research/src/config/types.js.map +1 -0
- package/dist/src/init/research/types.d.ts +183 -0
- package/dist/src/init/research/types.d.ts.map +1 -0
- package/dist/src/init/research/types.js +65 -0
- package/dist/src/init/research/types.js.map +1 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.d.ts +136 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.d.ts.map +1 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.js +360 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.js.map +1 -0
- package/dist/src/init/team/TeamRecommender.d.ts +122 -0
- package/dist/src/init/team/TeamRecommender.d.ts.map +1 -0
- package/dist/src/init/team/TeamRecommender.js +405 -0
- package/dist/src/init/team/TeamRecommender.js.map +1 -0
- package/dist/src/init/team/types.d.ts +95 -0
- package/dist/src/init/team/types.d.ts.map +1 -0
- package/dist/src/init/team/types.js +23 -0
- package/dist/src/init/team/types.js.map +1 -0
- package/dist/src/integrations/jira/jira-mapper.d.ts +1 -1
- package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
- package/dist/src/types/cost-tracking.d.ts +1 -1
- package/dist/src/types/cost-tracking.d.ts.map +1 -1
- package/dist/src/utils/cost-reporter.d.ts +2 -2
- package/dist/src/utils/cost-reporter.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/config-generator.d.ts +1 -1
- package/dist/src/utils/docs-preview/config-generator.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/config-generator.js +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.d.ts +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.js +4 -4
- package/dist/src/utils/docs-preview/docusaurus-setup.js.map +1 -1
- package/dist/src/utils/docs-preview/index.d.ts +6 -6
- package/dist/src/utils/docs-preview/index.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/index.js +6 -6
- package/dist/src/utils/docs-preview/index.js.map +1 -1
- package/dist/src/utils/docs-preview/package-installer.d.ts +1 -1
- package/dist/src/utils/docs-preview/package-installer.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/package-installer.js +1 -1
- package/dist/src/utils/docs-preview/package-installer.js.map +1 -1
- package/dist/src/utils/docs-preview/server-manager.d.ts +1 -1
- package/dist/src/utils/docs-preview/server-manager.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/server-manager.js +1 -1
- package/dist/src/utils/docs-preview/server-manager.js.map +1 -1
- package/dist/src/utils/docs-preview/sidebar-builder.d.ts +1 -1
- package/dist/src/utils/docs-preview/sidebar-builder.d.ts.map +1 -1
- package/dist/src/utils/generate-skills-index.d.ts +1 -1
- package/dist/src/utils/generate-skills-index.js +1 -1
- package/dist/src/utils/project-detection.js +1 -1
- package/dist/src/utils/project-detection.js.map +1 -1
- package/package.json +9 -3
- package/plugins/specweave/agents/architect/AGENT.md +605 -0
- package/plugins/specweave/agents/infrastructure/AGENT.md +760 -0
- package/plugins/specweave/agents/pm/AGENT.md +14 -13
- package/plugins/specweave/commands/specweave-check-hooks.md +186 -0
- package/plugins/specweave/commands/specweave-plan.md +151 -0
- package/plugins/specweave/commands/specweave-sync-acs.md +342 -0
- package/plugins/specweave/commands/specweave-validate.md +60 -11
- package/plugins/specweave/hooks/lib/update-status-line.sh +8 -4
- package/plugins/specweave/hooks/post-increment-change.sh +4 -0
- package/plugins/specweave/hooks/post-increment-completion.sh +7 -1
- package/plugins/specweave/hooks/post-increment-planning.sh +4 -0
- package/plugins/specweave/hooks/post-increment-status-change.sh +4 -0
- package/plugins/specweave/hooks/user-prompt-submit.sh +78 -0
- package/plugins/specweave/iac-templates/aws-lambda/README.md.hbs +280 -0
- package/plugins/specweave/iac-templates/aws-lambda/defaults.json +118 -0
- package/plugins/specweave/iac-templates/aws-lambda/environments/dev.defaults.json +46 -0
- package/plugins/specweave/iac-templates/aws-lambda/environments/prod.defaults.json +67 -0
- package/plugins/specweave/iac-templates/aws-lambda/environments/staging.defaults.json +47 -0
- package/plugins/specweave/iac-templates/aws-lambda/main.tf.hbs +241 -0
- package/plugins/specweave/iac-templates/aws-lambda/outputs.tf.hbs +61 -0
- package/plugins/specweave/iac-templates/aws-lambda/provider.tf.hbs +15 -0
- package/plugins/specweave/iac-templates/aws-lambda/variables.tf.hbs +88 -0
- package/plugins/specweave/iac-templates/azure-functions/README.md.hbs +315 -0
- package/plugins/specweave/iac-templates/azure-functions/defaults.json +65 -0
- package/plugins/specweave/iac-templates/azure-functions/environments/dev.defaults.json +30 -0
- package/plugins/specweave/iac-templates/azure-functions/environments/prod.defaults.json +34 -0
- package/plugins/specweave/iac-templates/azure-functions/environments/staging.defaults.json +31 -0
- package/plugins/specweave/iac-templates/azure-functions/iam.tf.hbs +34 -0
- package/plugins/specweave/iac-templates/azure-functions/main.tf.hbs +247 -0
- package/plugins/specweave/iac-templates/azure-functions/outputs.tf.hbs +72 -0
- package/plugins/specweave/iac-templates/azure-functions/provider.tf.hbs +14 -0
- package/plugins/specweave/iac-templates/azure-functions/variables.tf.hbs +64 -0
- package/plugins/specweave/iac-templates/firebase/README.md.hbs +487 -0
- package/plugins/specweave/iac-templates/firebase/defaults.json +55 -0
- package/plugins/specweave/iac-templates/firebase/environments/dev.defaults.json +44 -0
- package/plugins/specweave/iac-templates/firebase/environments/prod.defaults.json +52 -0
- package/plugins/specweave/iac-templates/firebase/environments/staging.defaults.json +43 -0
- package/plugins/specweave/iac-templates/firebase/iam.tf.hbs +75 -0
- package/plugins/specweave/iac-templates/firebase/main.tf.hbs +297 -0
- package/plugins/specweave/iac-templates/firebase/outputs.tf.hbs +67 -0
- package/plugins/specweave/iac-templates/firebase/provider.tf.hbs +26 -0
- package/plugins/specweave/iac-templates/firebase/variables.tf.hbs +68 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/README.md.hbs +330 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/defaults.json +69 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/environments/dev.defaults.json +33 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/environments/prod.defaults.json +40 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/environments/staging.defaults.json +33 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/iam.tf.hbs +54 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/main.tf.hbs +211 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/outputs.tf.hbs +44 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/provider.tf.hbs +14 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/variables.tf.hbs +82 -0
- package/plugins/specweave/iac-templates/supabase/README.md.hbs +534 -0
- package/plugins/specweave/iac-templates/supabase/defaults.json +69 -0
- package/plugins/specweave/iac-templates/supabase/environments/dev.defaults.json +55 -0
- package/plugins/specweave/iac-templates/supabase/environments/prod.defaults.json +75 -0
- package/plugins/specweave/iac-templates/supabase/environments/staging.defaults.json +54 -0
- package/plugins/specweave/iac-templates/supabase/iam.tf.hbs +146 -0
- package/plugins/specweave/iac-templates/supabase/main.tf.hbs +310 -0
- package/plugins/specweave/iac-templates/supabase/outputs.tf.hbs +74 -0
- package/plugins/specweave/iac-templates/supabase/provider.tf.hbs +19 -0
- package/plugins/specweave/iac-templates/supabase/variables.tf.hbs +78 -0
- package/plugins/specweave/knowledge-base/serverless/FRESHNESS.md +69 -0
- package/plugins/specweave/knowledge-base/serverless/learning-paths.json +865 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/aws-lambda.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/azure-functions.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/firebase.json +46 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/gcp-cloud-functions.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/supabase.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/schema.json +155 -0
- package/plugins/specweave/lib/hooks/auto-transition.js +50 -0
- package/plugins/specweave/lib/hooks/auto-transition.ts +84 -0
- package/plugins/specweave/lib/hooks/invoke-translator-skill.js +1 -1
- package/plugins/specweave/lib/hooks/invoke-translator-skill.ts +1 -1
- package/plugins/specweave/lib/hooks/sync-living-docs.js +4 -31
- package/plugins/specweave/lib/hooks/{sync-living-docs.ts → sync-living-docs.ts.DISABLED} +9 -48
- package/plugins/specweave/lib/hooks/translate-file.js +1 -1
- package/plugins/specweave/lib/hooks/translate-file.ts +1 -1
- package/plugins/specweave/lib/hooks/update-ac-status.js +24 -75
- package/plugins/specweave/lib/hooks/update-ac-status.ts +46 -135
- package/plugins/specweave/lib/hooks/update-tasks-md.js +115 -3
- package/plugins/specweave/lib/hooks/update-tasks-md.ts +182 -10
- package/plugins/specweave/lib/utils/validate-dev-setup.sh +133 -0
- package/plugins/specweave/skills/increment-planner/SKILL.md +25 -15
- package/plugins/specweave/skills/serverless-recommender/SKILL.md +368 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/iam.tf.hbs +137 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/main.tf.hbs +216 -0
- package/plugins/specweave-github/lib/IssueStateManager.js +117 -0
- package/plugins/specweave-github/lib/IssueStateManager.ts +231 -0
- package/plugins/specweave-github/lib/user-story-issue-builder.js +7 -0
- package/plugins/specweave-github/lib/user-story-issue-builder.ts +11 -0
- package/plugins/specweave-ui/.mcp.json +0 -10
- package/plugins/specweave-ui/README.md +26 -26
- package/plugins/specweave-ui/skills/browser-automation/SKILL.md +31 -18
- package/src/templates/tasks.md.template +51 -33
- package/dist/locales/de/.gitkeep +0 -0
- package/dist/locales/de/cli.json +0 -108
- package/dist/locales/en/cli.json +0 -287
- package/dist/locales/en/errors.json +0 -7
- package/dist/locales/en/templates.json +0 -6
- package/dist/locales/es/.gitkeep +0 -0
- package/dist/locales/es/cli.json +0 -41
- package/dist/locales/fr/.gitkeep +0 -0
- package/dist/locales/fr/cli.json +0 -108
- package/dist/locales/ja/.gitkeep +0 -0
- package/dist/locales/ja/cli.json +0 -108
- package/dist/locales/ko/.gitkeep +0 -0
- package/dist/locales/ko/cli.json +0 -108
- package/dist/locales/pt/.gitkeep +0 -0
- package/dist/locales/pt/cli.json +0 -108
- package/dist/locales/ru/.gitkeep +0 -0
- package/dist/locales/ru/cli.json +0 -269
- package/dist/locales/zh/.gitkeep +0 -0
- package/dist/locales/zh/cli.json +0 -108
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts +0 -89
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js +0 -226
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts +0 -60
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js +0 -201
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts +0 -42
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js +0 -123
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts +0 -45
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js +0 -132
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts +0 -33
- package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-parser.js +0 -419
- package/dist/plugins/specweave/lib/hooks/reflection-parser.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts +0 -56
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js +0 -239
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts +0 -64
- package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-storage.js +0 -305
- package/dist/plugins/specweave/lib/hooks/reflection-storage.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts +0 -43
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.js +0 -203
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts +0 -32
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +0 -405
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-file.d.ts +0 -59
- package/dist/plugins/specweave/lib/hooks/translate-file.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-file.js +0 -350
- package/dist/plugins/specweave/lib/hooks/translate-file.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts +0 -13
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.js +0 -175
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts +0 -164
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.js +0 -73
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts +0 -21
- package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-ac-status.js +0 -162
- package/dist/plugins/specweave/lib/hooks/update-ac-status.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts +0 -29
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.js +0 -203
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.js.map +0 -1
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts +0 -25
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -191
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts +0 -57
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +0 -248
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/types.d.ts +0 -82
- package/dist/plugins/specweave-kafka/lib/cli/types.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/types.js +0 -13
- package/dist/plugins/specweave-kafka/lib/cli/types.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts +0 -49
- package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/detector.js +0 -316
- package/dist/plugins/specweave-kafka/lib/mcp/detector.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts +0 -70
- package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/types.js +0 -23
- package/dist/plugins/specweave-kafka/lib/mcp/types.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts +0 -85
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.js +0 -281
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts +0 -75
- package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/sizing.js +0 -238
- package/dist/plugins/specweave-kafka/lib/utils/sizing.js.map +0 -1
- package/dist/spec-parser.js +0 -629
- package/dist/src/core/living-docs/spec-distributor.d.ts +0 -180
- package/dist/src/core/living-docs/spec-distributor.d.ts.map +0 -1
- package/dist/src/core/living-docs/spec-distributor.js +0 -1840
- package/dist/src/core/living-docs/spec-distributor.js.map +0 -1
- package/dist/src/core/sync/spec-content-sync.d.ts +0 -88
- package/dist/src/core/sync/spec-content-sync.d.ts.map +0 -1
- package/dist/src/core/sync/spec-content-sync.js +0 -5
- package/dist/src/core/sync/spec-content-sync.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -170
|
@@ -0,0 +1,534 @@
|
|
|
1
|
+
# {{projectName}} - Supabase Infrastructure
|
|
2
|
+
|
|
3
|
+
🚀 Generated by **SpecWeave Serverless Intelligence**
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This Terraform configuration deploys a full-stack serverless application on Supabase with the following components:
|
|
8
|
+
|
|
9
|
+
- **PostgreSQL Database**: Serverless Postgres with automatic scaling{{#if databaseName}}
|
|
10
|
+
- **Row Level Security (RLS)**: Database-level authorization{{/if}}
|
|
11
|
+
- **Authentication**: Email/password + OAuth providers
|
|
12
|
+
- **Storage**: File storage with access control
|
|
13
|
+
- **Edge Functions**: Deno-based serverless functions
|
|
14
|
+
- **Realtime**: WebSocket subscriptions to database changes
|
|
15
|
+
- **Auto-generated REST API**: PostgREST API for database access
|
|
16
|
+
|
|
17
|
+
## Architecture
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
{{#if databaseName}}
|
|
21
|
+
Internet → Supabase API Gateway → PostgreSQL (RLS)
|
|
22
|
+
↓ ↓
|
|
23
|
+
Edge Functions Realtime
|
|
24
|
+
↓
|
|
25
|
+
Storage
|
|
26
|
+
{{else}}
|
|
27
|
+
Internet → Supabase API Gateway → PostgreSQL
|
|
28
|
+
↓
|
|
29
|
+
Edge Functions
|
|
30
|
+
{{/if}}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Prerequisites
|
|
34
|
+
|
|
35
|
+
{{#unless selfHosted}}
|
|
36
|
+
1. **Supabase Account**: Sign up at https://supabase.com
|
|
37
|
+
2. **Supabase CLI**: `npm install -g supabase`
|
|
38
|
+
3. **Terraform** >= 1.0 installed
|
|
39
|
+
4. **Personal Access Token**: Create at https://app.supabase.com/account/tokens
|
|
40
|
+
{{else}}
|
|
41
|
+
1. **Docker** and **Docker Compose** installed
|
|
42
|
+
2. **Terraform** >= 1.0 installed
|
|
43
|
+
3. **Sufficient disk space** for PostgreSQL data
|
|
44
|
+
{{/unless}}
|
|
45
|
+
|
|
46
|
+
## Quick Start
|
|
47
|
+
|
|
48
|
+
{{#unless selfHosted}}
|
|
49
|
+
### 1. Login to Supabase
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
supabase login
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 2. Get Organization ID
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# List organizations
|
|
59
|
+
supabase orgs list
|
|
60
|
+
|
|
61
|
+
# Copy your organization ID
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 3. Create Access Token
|
|
65
|
+
|
|
66
|
+
1. Go to https://app.supabase.com/account/tokens
|
|
67
|
+
2. Create a new token
|
|
68
|
+
3. Copy the token value
|
|
69
|
+
|
|
70
|
+
### 4. Configure Terraform
|
|
71
|
+
|
|
72
|
+
Create `terraform.tfvars`:
|
|
73
|
+
|
|
74
|
+
```hcl
|
|
75
|
+
organization_id = "your-org-id"
|
|
76
|
+
supabase_access_token = "sbp_xxx"
|
|
77
|
+
database_password = "secure-password-min-12-chars"
|
|
78
|
+
project_name = "{{projectName}}"
|
|
79
|
+
environment = "{{environment}}"
|
|
80
|
+
region = "{{#if region}}{{region}}{{else}}us-east-1{{/if}}"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 5. Initialize Terraform
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
terraform init
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 6. Review Plan
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
terraform plan
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### 7. Deploy
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
terraform apply
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 8. Get Project Details
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Get API URL
|
|
105
|
+
terraform output api_url
|
|
106
|
+
|
|
107
|
+
# Get anonymous key (for client-side)
|
|
108
|
+
terraform output anon_key
|
|
109
|
+
|
|
110
|
+
# Get service role key (for server-side)
|
|
111
|
+
terraform output service_role_key
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 9. Initialize Local Development
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# Link to your project
|
|
118
|
+
supabase link --project-ref $(terraform output -raw project_ref)
|
|
119
|
+
|
|
120
|
+
# Pull remote schema
|
|
121
|
+
supabase db pull
|
|
122
|
+
|
|
123
|
+
# Start local development
|
|
124
|
+
supabase start
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
{{else}}
|
|
128
|
+
### 1. Configure Environment
|
|
129
|
+
|
|
130
|
+
Create `terraform.tfvars`:
|
|
131
|
+
|
|
132
|
+
```hcl
|
|
133
|
+
database_password = "secure-password-min-12-chars"
|
|
134
|
+
project_name = "{{projectName}}"
|
|
135
|
+
environment = "{{environment}}"
|
|
136
|
+
data_path = "/var/lib/supabase"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### 2. Initialize Terraform
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
terraform init
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 3. Deploy Self-Hosted Stack
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
terraform apply
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### 4. Access Services
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# API Gateway
|
|
155
|
+
API_URL=$(terraform output -raw api_url)
|
|
156
|
+
|
|
157
|
+
# Studio (Admin UI)
|
|
158
|
+
STUDIO_URL=$(terraform output -raw studio_url)
|
|
159
|
+
|
|
160
|
+
# PostgreSQL
|
|
161
|
+
DB_URL=$(terraform output -raw database_url)
|
|
162
|
+
|
|
163
|
+
echo "API: $API_URL"
|
|
164
|
+
echo "Studio: $STUDIO_URL"
|
|
165
|
+
echo "Database: $DB_URL"
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
{{/unless}}
|
|
169
|
+
|
|
170
|
+
## Configuration
|
|
171
|
+
|
|
172
|
+
### Variables
|
|
173
|
+
|
|
174
|
+
Edit `terraform.tfvars` to customize:
|
|
175
|
+
|
|
176
|
+
```hcl
|
|
177
|
+
{{#unless selfHosted}}
|
|
178
|
+
organization_id = "your-org-id"
|
|
179
|
+
supabase_access_token = "sbp_xxx"
|
|
180
|
+
{{/unless}}
|
|
181
|
+
project_name = "{{projectName}}"
|
|
182
|
+
environment = "{{environment}}"
|
|
183
|
+
database_password = "secure-password-min-12-chars"
|
|
184
|
+
region = "{{#if region}}{{region}}{{else}}us-east-1{{/if}}"
|
|
185
|
+
{{#if databaseName}}
|
|
186
|
+
database_name = "{{databaseName}}"
|
|
187
|
+
{{/if}}
|
|
188
|
+
function_name = "{{functionName}}"
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Client Configuration
|
|
192
|
+
|
|
193
|
+
After deployment, configure your client app:
|
|
194
|
+
|
|
195
|
+
```javascript
|
|
196
|
+
// supabaseClient.js
|
|
197
|
+
import { createClient } from '@supabase/supabase-js'
|
|
198
|
+
|
|
199
|
+
const supabaseUrl = process.env.SUPABASE_URL
|
|
200
|
+
const supabaseAnonKey = process.env.SUPABASE_ANON_KEY
|
|
201
|
+
|
|
202
|
+
export const supabase = createClient(supabaseUrl, supabaseAnonKey)
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Outputs
|
|
206
|
+
|
|
207
|
+
After deployment, Terraform provides these outputs:
|
|
208
|
+
|
|
209
|
+
{{#unless selfHosted}}
|
|
210
|
+
- `project_id`: Supabase project ID
|
|
211
|
+
- `api_url`: API endpoint URL
|
|
212
|
+
- `anon_key`: Public (anonymous) API key
|
|
213
|
+
- `service_role_key`: Private (admin) API key
|
|
214
|
+
- `database_url`: PostgreSQL connection string
|
|
215
|
+
- `studio_url`: Supabase Studio URL
|
|
216
|
+
{{else}}
|
|
217
|
+
- `api_url`: Self-hosted API URL
|
|
218
|
+
- `studio_url`: Self-hosted Studio URL
|
|
219
|
+
- `database_url`: PostgreSQL connection string
|
|
220
|
+
{{/unless}}
|
|
221
|
+
|
|
222
|
+
## Resource Details
|
|
223
|
+
|
|
224
|
+
{{#unless selfHosted}}
|
|
225
|
+
### Supabase Project
|
|
226
|
+
|
|
227
|
+
- **Plan**: {{#if (eq environment "prod")}}Pro (production features){{else}}Free (generous limits){{/if}}
|
|
228
|
+
- **Region**: {{#if region}}{{region}}{{else}}us-east-1{{/if}}
|
|
229
|
+
- **Database**: PostgreSQL 15 (serverless)
|
|
230
|
+
- **Auto-scaling**: Automatic based on usage
|
|
231
|
+
|
|
232
|
+
{{/unless}}
|
|
233
|
+
|
|
234
|
+
### PostgreSQL Database
|
|
235
|
+
|
|
236
|
+
- **Version**: PostgreSQL 15
|
|
237
|
+
- **Extensions**: uuid-ossp, pgcrypto{{#if enablePostgis}}, PostGIS{{/if}}{{#if enableVectors}}, pgvector{{/if}}
|
|
238
|
+
{{#if databaseName}}
|
|
239
|
+
- **Tables**: Items table with RLS policies
|
|
240
|
+
- **Indexes**: Optimized for common queries
|
|
241
|
+
- **Triggers**: Auto-update timestamps
|
|
242
|
+
{{/if}}
|
|
243
|
+
|
|
244
|
+
### Row Level Security (RLS)
|
|
245
|
+
|
|
246
|
+
{{#if databaseName}}
|
|
247
|
+
```sql
|
|
248
|
+
-- Users can only access their own data
|
|
249
|
+
CREATE POLICY "Users can view their own items"
|
|
250
|
+
ON items FOR SELECT
|
|
251
|
+
USING (auth.uid() = user_id);
|
|
252
|
+
```
|
|
253
|
+
{{/if}}
|
|
254
|
+
|
|
255
|
+
RLS ensures database-level authorization - even with direct database access, users can only see their own data.
|
|
256
|
+
|
|
257
|
+
### Authentication
|
|
258
|
+
|
|
259
|
+
- **Email/Password**: Enabled
|
|
260
|
+
- **Email Confirmation**: {{#if (eq environment "prod")}}Required{{else}}Optional{{/if}}
|
|
261
|
+
- **Password Minimum**: {{#if (eq environment "prod")}}12 characters{{else}}8 characters{{/if}}
|
|
262
|
+
- **JWT Expiry**: {{#if (eq environment "prod")}}1 hour{{else}}24 hours{{/if}}
|
|
263
|
+
{{#if enableOAuth}}
|
|
264
|
+
- **OAuth Providers**: Google, GitHub
|
|
265
|
+
{{/if}}
|
|
266
|
+
|
|
267
|
+
### Storage Buckets
|
|
268
|
+
|
|
269
|
+
- **Public Bucket**: Public read access, file size limit {{#if (eq environment "prod")}}10MB{{else}}50MB{{/if}}
|
|
270
|
+
- **Private Bucket**: User-specific folders with RLS
|
|
271
|
+
- **Allowed Types**: Images (JPEG, PNG, GIF, WebP), PDFs
|
|
272
|
+
|
|
273
|
+
### Edge Functions
|
|
274
|
+
|
|
275
|
+
Deploy Deno-based serverless functions:
|
|
276
|
+
|
|
277
|
+
```typescript
|
|
278
|
+
// supabase/functions/{{functionName}}/index.ts
|
|
279
|
+
import { serve } from "https://deno.land/std@0.177.0/http/server.ts"
|
|
280
|
+
{{#if databaseName}}
|
|
281
|
+
import { createClient } from 'https://esm.sh/@supabase/supabase-js@2'
|
|
282
|
+
|
|
283
|
+
const supabase = createClient(
|
|
284
|
+
Deno.env.get('SUPABASE_URL') ?? '',
|
|
285
|
+
Deno.env.get('SUPABASE_SERVICE_ROLE_KEY') ?? ''
|
|
286
|
+
)
|
|
287
|
+
{{/if}}
|
|
288
|
+
|
|
289
|
+
serve(async (req) => {
|
|
290
|
+
{{#if databaseName}}
|
|
291
|
+
const { data, error } = await supabase
|
|
292
|
+
.from('items')
|
|
293
|
+
.select('*')
|
|
294
|
+
|
|
295
|
+
return new Response(JSON.stringify({ data }), {
|
|
296
|
+
headers: { 'Content-Type': 'application/json' },
|
|
297
|
+
})
|
|
298
|
+
{{else}}
|
|
299
|
+
return new Response(JSON.stringify({ message: 'Hello from Edge Function!' }), {
|
|
300
|
+
headers: { 'Content-Type': 'application/json' },
|
|
301
|
+
})
|
|
302
|
+
{{/if}}
|
|
303
|
+
})
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
Deploy:
|
|
307
|
+
```bash
|
|
308
|
+
supabase functions deploy {{functionName}}
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## Security Best Practices
|
|
312
|
+
|
|
313
|
+
✅ **Implemented**:
|
|
314
|
+
- Row Level Security (RLS) on all tables
|
|
315
|
+
- Service account with least privilege
|
|
316
|
+
- Storage access control policies{{#if (eq environment "prod")}}
|
|
317
|
+
- Email confirmation required
|
|
318
|
+
- Strong password requirements (12+ chars)
|
|
319
|
+
- Shorter JWT expiry (1 hour){{/if}}
|
|
320
|
+
|
|
321
|
+
⚠️ **TODO**:
|
|
322
|
+
- Enable MFA (multi-factor authentication)
|
|
323
|
+
- Configure custom SMTP for emails
|
|
324
|
+
- Set up database backups
|
|
325
|
+
- Add rate limiting
|
|
326
|
+
- Enable audit logging
|
|
327
|
+
- Configure network restrictions
|
|
328
|
+
|
|
329
|
+
## Cost Estimation
|
|
330
|
+
|
|
331
|
+
{{#unless selfHosted}}
|
|
332
|
+
### Free Tier (Always Free)
|
|
333
|
+
|
|
334
|
+
Supabase offers a generous free tier:
|
|
335
|
+
- **Database**: 500 MB storage, unlimited API requests
|
|
336
|
+
- **Auth**: Unlimited users
|
|
337
|
+
- **Storage**: 1 GB
|
|
338
|
+
- **Edge Functions**: 500K invocations/month
|
|
339
|
+
- **Realtime**: 200 concurrent connections
|
|
340
|
+
|
|
341
|
+
### Estimated Monthly Cost (Pro Plan)
|
|
342
|
+
|
|
343
|
+
**Development (Free Tier)**:
|
|
344
|
+
- Database: $0.00 (within 500 MB)
|
|
345
|
+
- Auth: $0.00 (unlimited)
|
|
346
|
+
- Storage: $0.00 (within 1 GB)
|
|
347
|
+
- Functions: $0.00 (within 500K)
|
|
348
|
+
- **Total**: $0.00/month
|
|
349
|
+
|
|
350
|
+
**Staging (Free or Pro)**:
|
|
351
|
+
- Pro Plan Base: $25/month
|
|
352
|
+
- Additional Database: ~$5/month
|
|
353
|
+
- Additional Storage: ~$2/month
|
|
354
|
+
- **Total**: ~$32/month
|
|
355
|
+
|
|
356
|
+
**Production (Pro Plan)**:
|
|
357
|
+
- Pro Plan Base: $25/month
|
|
358
|
+
- Database (2GB): ~$10/month
|
|
359
|
+
- Storage (10GB): ~$5/month
|
|
360
|
+
- Edge Functions (2M): ~$5/month
|
|
361
|
+
- **Total**: ~$45/month
|
|
362
|
+
|
|
363
|
+
💡 **Tip**: Free tier is excellent for MVPs and small apps. Pro plan adds: Daily backups, 8GB database, priority support.
|
|
364
|
+
|
|
365
|
+
{{else}}
|
|
366
|
+
### Self-Hosted Costs
|
|
367
|
+
|
|
368
|
+
Self-hosted Supabase runs on your infrastructure:
|
|
369
|
+
- **Server**: Your hosting cost (e.g., $10-50/month VPS)
|
|
370
|
+
- **Storage**: Depends on your disk usage
|
|
371
|
+
- **Bandwidth**: Depends on your hosting provider
|
|
372
|
+
- **Total**: $10-100/month (varies by provider)
|
|
373
|
+
|
|
374
|
+
**Pros**: Full control, data privacy, no usage limits
|
|
375
|
+
**Cons**: Manual updates, backups, scaling
|
|
376
|
+
|
|
377
|
+
{{/unless}}
|
|
378
|
+
|
|
379
|
+
## Monitoring
|
|
380
|
+
|
|
381
|
+
{{#unless selfHosted}}
|
|
382
|
+
### Supabase Dashboard
|
|
383
|
+
|
|
384
|
+
Monitor in [Supabase Dashboard](https://app.supabase.com):
|
|
385
|
+
|
|
386
|
+
- **Database Performance**: Query performance, active connections
|
|
387
|
+
- **API Usage**: Request rate, response times
|
|
388
|
+
- **Auth Analytics**: Sign-ups, active users
|
|
389
|
+
- **Storage Usage**: Files, bandwidth
|
|
390
|
+
- **Edge Functions**: Invocations, errors
|
|
391
|
+
|
|
392
|
+
### Logs
|
|
393
|
+
|
|
394
|
+
```bash
|
|
395
|
+
# View function logs
|
|
396
|
+
supabase functions logs {{functionName}}
|
|
397
|
+
|
|
398
|
+
# View database logs
|
|
399
|
+
supabase db logs
|
|
400
|
+
|
|
401
|
+
# Stream realtime logs
|
|
402
|
+
supabase logs --follow
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
### Recommended Alerts
|
|
406
|
+
|
|
407
|
+
Set up alerts in Supabase Dashboard:
|
|
408
|
+
- Database usage > 80%
|
|
409
|
+
- API error rate > 5%
|
|
410
|
+
- Storage usage > 80%
|
|
411
|
+
- Edge function errors
|
|
412
|
+
|
|
413
|
+
{{else}}
|
|
414
|
+
### Self-Hosted Monitoring
|
|
415
|
+
|
|
416
|
+
- **PostgreSQL Metrics**: Use pgAdmin or custom scripts
|
|
417
|
+
- **Docker Stats**: `docker stats`
|
|
418
|
+
- **Logs**: `docker logs supabase-db-{{environment}}`
|
|
419
|
+
|
|
420
|
+
{{/unless}}
|
|
421
|
+
|
|
422
|
+
## Deployment Workflow
|
|
423
|
+
|
|
424
|
+
### Development
|
|
425
|
+
|
|
426
|
+
```bash
|
|
427
|
+
terraform workspace new dev
|
|
428
|
+
terraform workspace select dev
|
|
429
|
+
terraform apply -var="environment=dev"
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### Staging
|
|
433
|
+
|
|
434
|
+
```bash
|
|
435
|
+
terraform workspace new staging
|
|
436
|
+
terraform workspace select staging
|
|
437
|
+
terraform apply -var="environment=staging"
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
### Production
|
|
441
|
+
|
|
442
|
+
```bash
|
|
443
|
+
terraform workspace new prod
|
|
444
|
+
terraform workspace select prod
|
|
445
|
+
terraform apply -var="environment=prod"
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
## Database Migrations
|
|
449
|
+
|
|
450
|
+
### Create Migration
|
|
451
|
+
|
|
452
|
+
```bash
|
|
453
|
+
supabase migration new create_items_table
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
### Write SQL
|
|
457
|
+
|
|
458
|
+
```sql
|
|
459
|
+
-- supabase/migrations/20240101000000_create_items_table.sql
|
|
460
|
+
CREATE TABLE items (
|
|
461
|
+
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
462
|
+
user_id UUID REFERENCES auth.users(id),
|
|
463
|
+
title TEXT NOT NULL,
|
|
464
|
+
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
465
|
+
);
|
|
466
|
+
|
|
467
|
+
ALTER TABLE items ENABLE ROW LEVEL SECURITY;
|
|
468
|
+
|
|
469
|
+
CREATE POLICY "Users can view their own items"
|
|
470
|
+
ON items FOR SELECT
|
|
471
|
+
USING (auth.uid() = user_id);
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
### Apply Migration
|
|
475
|
+
|
|
476
|
+
```bash
|
|
477
|
+
supabase db push
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
## Cleanup
|
|
481
|
+
|
|
482
|
+
To destroy all resources:
|
|
483
|
+
|
|
484
|
+
```bash
|
|
485
|
+
terraform destroy
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
⚠️ **Warning**: This will permanently delete:
|
|
489
|
+
- PostgreSQL database and all data
|
|
490
|
+
- Authentication users
|
|
491
|
+
- Storage files
|
|
492
|
+
- Edge functions
|
|
493
|
+
|
|
494
|
+
## Troubleshooting
|
|
495
|
+
|
|
496
|
+
**"Organization not found"?**
|
|
497
|
+
1. Verify organization ID: `supabase orgs list`
|
|
498
|
+
2. Check access token has correct permissions
|
|
499
|
+
|
|
500
|
+
**RLS policies not working?**
|
|
501
|
+
1. Verify table has RLS enabled: `ALTER TABLE ... ENABLE ROW LEVEL SECURITY`
|
|
502
|
+
2. Check policy syntax in Supabase Studio
|
|
503
|
+
3. Test with different user contexts
|
|
504
|
+
|
|
505
|
+
**Edge function deployment failing?**
|
|
506
|
+
1. Check Deno runtime compatibility
|
|
507
|
+
2. Verify function syntax: `deno check index.ts`
|
|
508
|
+
3. Review function logs: `supabase functions logs`
|
|
509
|
+
|
|
510
|
+
**Database connection issues?**
|
|
511
|
+
1. Check connection string format
|
|
512
|
+
2. Verify database password
|
|
513
|
+
3. Ensure IP allowlist (if configured)
|
|
514
|
+
|
|
515
|
+
## Next Steps
|
|
516
|
+
|
|
517
|
+
1. **Customize RLS Policies**: Tailor to your data model
|
|
518
|
+
2. **Add Realtime Subscriptions**: Listen to database changes
|
|
519
|
+
3. **Configure OAuth**: Add Google, GitHub, etc.
|
|
520
|
+
4. **Set Up Backups**: Enable point-in-time recovery (Pro plan)
|
|
521
|
+
5. **Add Edge Functions**: Deploy serverless business logic
|
|
522
|
+
6. **Enable Storage**: Configure file uploads
|
|
523
|
+
|
|
524
|
+
## Resources
|
|
525
|
+
|
|
526
|
+
- [Supabase Documentation](https://supabase.com/docs)
|
|
527
|
+
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
|
|
528
|
+
- [PostgREST Documentation](https://postgrest.org/)
|
|
529
|
+
- [Supabase CLI Reference](https://supabase.com/docs/reference/cli)
|
|
530
|
+
- [Row Level Security Guide](https://supabase.com/docs/guides/auth/row-level-security)
|
|
531
|
+
|
|
532
|
+
---
|
|
533
|
+
|
|
534
|
+
**Generated by SpecWeave** | [Learn More](https://spec-weave.com)
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"platform": "supabase",
|
|
3
|
+
"region": "us-east-1",
|
|
4
|
+
"selfHosted": false,
|
|
5
|
+
"enableAuth": true,
|
|
6
|
+
"enableStorage": true,
|
|
7
|
+
"enableRealtime": true,
|
|
8
|
+
"enablePostgis": false,
|
|
9
|
+
"enableVectors": false,
|
|
10
|
+
"database": {
|
|
11
|
+
"version": "15",
|
|
12
|
+
"extensions": ["uuid-ossp", "pgcrypto"],
|
|
13
|
+
"maxConnections": {
|
|
14
|
+
"dev": 50,
|
|
15
|
+
"staging": 100,
|
|
16
|
+
"prod": 200
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"auth": {
|
|
20
|
+
"providers": ["email"],
|
|
21
|
+
"emailConfirmRequired": {
|
|
22
|
+
"dev": false,
|
|
23
|
+
"staging": false,
|
|
24
|
+
"prod": true
|
|
25
|
+
},
|
|
26
|
+
"passwordMinLength": {
|
|
27
|
+
"dev": 8,
|
|
28
|
+
"staging": 10,
|
|
29
|
+
"prod": 12
|
|
30
|
+
},
|
|
31
|
+
"jwtExpiry": {
|
|
32
|
+
"dev": 86400,
|
|
33
|
+
"staging": 7200,
|
|
34
|
+
"prod": 3600
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"storage": {
|
|
38
|
+
"publicBucket": {
|
|
39
|
+
"name": "public",
|
|
40
|
+
"public": true,
|
|
41
|
+
"fileSizeLimit": {
|
|
42
|
+
"dev": 52428800,
|
|
43
|
+
"staging": 20971520,
|
|
44
|
+
"prod": 10485760
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"privateBucket": {
|
|
48
|
+
"name": "private",
|
|
49
|
+
"public": false,
|
|
50
|
+
"fileSizeLimit": {
|
|
51
|
+
"dev": 52428800,
|
|
52
|
+
"staging": 20971520,
|
|
53
|
+
"prod": 10485760
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"api": {
|
|
58
|
+
"maxRows": {
|
|
59
|
+
"dev": 100000,
|
|
60
|
+
"staging": 10000,
|
|
61
|
+
"prod": 1000
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"plan": {
|
|
65
|
+
"dev": "free",
|
|
66
|
+
"staging": "free",
|
|
67
|
+
"prod": "pro"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"environment": "dev",
|
|
3
|
+
"region": "us-east-1",
|
|
4
|
+
"plan": "free",
|
|
5
|
+
"selfHosted": false,
|
|
6
|
+
"database": {
|
|
7
|
+
"maxConnections": 50,
|
|
8
|
+
"extensions": ["uuid-ossp", "pgcrypto"]
|
|
9
|
+
},
|
|
10
|
+
"auth": {
|
|
11
|
+
"providers": ["email"],
|
|
12
|
+
"emailConfirmRequired": false,
|
|
13
|
+
"passwordMinLength": 8,
|
|
14
|
+
"jwtExpiry": 86400,
|
|
15
|
+
"enableSignup": true,
|
|
16
|
+
"doubleConfirmChanges": false
|
|
17
|
+
},
|
|
18
|
+
"storage": {
|
|
19
|
+
"publicBucket": {
|
|
20
|
+
"fileSizeLimit": 52428800,
|
|
21
|
+
"allowedMimeTypes": ["image/*", "application/pdf"]
|
|
22
|
+
},
|
|
23
|
+
"privateBucket": {
|
|
24
|
+
"fileSizeLimit": 52428800,
|
|
25
|
+
"allowedMimeTypes": ["image/*", "application/pdf", "application/json"]
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"api": {
|
|
29
|
+
"maxRows": 100000
|
|
30
|
+
},
|
|
31
|
+
"rls": {
|
|
32
|
+
"strictMode": false,
|
|
33
|
+
"defaultDeny": false
|
|
34
|
+
},
|
|
35
|
+
"costOptimization": {
|
|
36
|
+
"description": "Free tier optimized - Generous limits for development",
|
|
37
|
+
"estimatedMonthlyCost": "$0",
|
|
38
|
+
"freeTierEligible": true,
|
|
39
|
+
"plan": "Free",
|
|
40
|
+
"limits": {
|
|
41
|
+
"database": "500 MB",
|
|
42
|
+
"storage": "1 GB",
|
|
43
|
+
"edgeFunctions": "500K invocations/month",
|
|
44
|
+
"bandwidth": "2 GB",
|
|
45
|
+
"realtime": "200 concurrent connections"
|
|
46
|
+
},
|
|
47
|
+
"notes": [
|
|
48
|
+
"Perfect for MVPs and prototypes",
|
|
49
|
+
"No credit card required",
|
|
50
|
+
"Unlimited API requests",
|
|
51
|
+
"Unlimited auth users",
|
|
52
|
+
"Daily backups (7-day retention)"
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
}
|