proagents 1.0.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/LICENSE +21 -0
- package/README.md +170 -0
- package/bin/proagents.js +90 -0
- package/lib/commands/feature.js +125 -0
- package/lib/commands/fix.js +60 -0
- package/lib/commands/help.js +76 -0
- package/lib/commands/init.js +64 -0
- package/lib/commands/status.js +91 -0
- package/lib/index.js +28 -0
- package/package.json +52 -0
- package/proagents/.learning/global/common-patterns.json +77 -0
- package/proagents/.learning/global/user-preferences.json +76 -0
- package/proagents/.learning/projects/example-project/corrections.json +99 -0
- package/proagents/.learning/projects/example-project/feedback.json +109 -0
- package/proagents/.learning/projects/example-project/metrics.json +101 -0
- package/proagents/.learning/projects/example-project/patterns.json +102 -0
- package/proagents/.learning/schemas/README.md +48 -0
- package/proagents/.learning/schemas/corrections-schema.json +100 -0
- package/proagents/.learning/schemas/feedback-schema.json +144 -0
- package/proagents/.learning/schemas/metrics-schema.json +96 -0
- package/proagents/.learning/schemas/patterns-schema.json +82 -0
- package/proagents/.learning/schemas/project-patterns-schema.json +125 -0
- package/proagents/.learning/schemas/user-preferences-schema.json +136 -0
- package/proagents/GETTING-STARTED-STORY.md +708 -0
- package/proagents/README.md +99 -0
- package/proagents/WORKFLOW.md +1234 -0
- package/proagents/active-features/.gitkeep +0 -0
- package/proagents/active-features/README.md +176 -0
- package/proagents/active-features/_index.json +74 -0
- package/proagents/active-features/feature-user-auth/dependencies.json +81 -0
- package/proagents/active-features/feature-user-auth/files-modified.json +126 -0
- package/proagents/active-features/feature-user-auth/status.json +122 -0
- package/proagents/active-features/schemas/dependencies-schema.json +119 -0
- package/proagents/active-features/schemas/feature-schema.json +132 -0
- package/proagents/active-features/schemas/files-schema.json +100 -0
- package/proagents/active-features/schemas/index-schema.json +95 -0
- package/proagents/adr/README.md +302 -0
- package/proagents/adr/examples/api-versioning.md +297 -0
- package/proagents/adr/examples/database-choice.md +264 -0
- package/proagents/adr/template.md +273 -0
- package/proagents/ai-models/README.md +141 -0
- package/proagents/ai-models/cost-management.md +362 -0
- package/proagents/ai-models/fallbacks.md +342 -0
- package/proagents/ai-models/model-config.md +318 -0
- package/proagents/ai-models/task-routing.md +503 -0
- package/proagents/ai-training/README.md +155 -0
- package/proagents/ai-training/continuous-learning.md +413 -0
- package/proagents/ai-training/domain-knowledge.md +378 -0
- package/proagents/ai-training/pattern-learning.md +455 -0
- package/proagents/ai-training/training-data.md +337 -0
- package/proagents/ai-training/user-preferences.md +346 -0
- package/proagents/api-versioning/README.md +257 -0
- package/proagents/api-versioning/changelog-template.md +225 -0
- package/proagents/api-versioning/deprecation-workflow.md +470 -0
- package/proagents/api-versioning/versioning-strategy.md +291 -0
- package/proagents/approval-workflows/README.md +146 -0
- package/proagents/approval-workflows/approval-config.md +332 -0
- package/proagents/approval-workflows/approval-stages.md +503 -0
- package/proagents/approval-workflows/emergency-bypass.md +351 -0
- package/proagents/approval-workflows/examples.md +859 -0
- package/proagents/approval-workflows/notifications.md +320 -0
- package/proagents/automation/README.md +38 -0
- package/proagents/automation/ai-behavior-rules.md +339 -0
- package/proagents/automation/ai-prompt-injection.md +331 -0
- package/proagents/automation/auto-decisions.md +535 -0
- package/proagents/automation/decision-defaults.yaml +317 -0
- package/proagents/cache/README.md +110 -0
- package/proagents/cache/analysis-metadata.json +76 -0
- package/proagents/cache/conventions.json +125 -0
- package/proagents/cache/dependencies.json +85 -0
- package/proagents/cache/features.json +115 -0
- package/proagents/cache/patterns.json +105 -0
- package/proagents/cache/schemas/conventions-schema.json +138 -0
- package/proagents/cache/schemas/dependencies-schema.json +95 -0
- package/proagents/cache/schemas/features-schema.json +104 -0
- package/proagents/cache/schemas/metadata-schema.json +83 -0
- package/proagents/cache/schemas/patterns-schema.json +136 -0
- package/proagents/cache/schemas/structure-schema.json +72 -0
- package/proagents/cache/structure.json +109 -0
- package/proagents/changelog/2024/01/2024-01-10-api-url-config.md +41 -0
- package/proagents/changelog/2024/01/2024-01-12-login-bug-fix.md +69 -0
- package/proagents/changelog/2024/01/2024-01-15-user-auth-feature.md +99 -0
- package/proagents/changelog/CHANGELOG.md +82 -0
- package/proagents/changelog/README.md +327 -0
- package/proagents/changelog/entry-template.md +283 -0
- package/proagents/checklists/README.md +261 -0
- package/proagents/checklists/code-quality.md +137 -0
- package/proagents/checklists/code-review.md +148 -0
- package/proagents/checklists/pr-checklist.md +78 -0
- package/proagents/checklists/pre-deployment.md +132 -0
- package/proagents/checklists/pre-implementation.md +80 -0
- package/proagents/checklists/testing.md +120 -0
- package/proagents/cicd/README.md +338 -0
- package/proagents/cicd/azure-devops.md +267 -0
- package/proagents/cicd/github-actions.md +375 -0
- package/proagents/cicd/gitlab-ci.md +278 -0
- package/proagents/cicd/jenkins.md +317 -0
- package/proagents/cli/README.md +392 -0
- package/proagents/cli/commands-reference.md +893 -0
- package/proagents/cli/ide-integration.md +584 -0
- package/proagents/cli/shortcuts.md +394 -0
- package/proagents/cli/slash-commands.md +507 -0
- package/proagents/collaboration/README.md +143 -0
- package/proagents/collaboration/roles.md +248 -0
- package/proagents/collaboration/sessions.md +390 -0
- package/proagents/collaboration/sync.md +358 -0
- package/proagents/compliance/README.md +206 -0
- package/proagents/compliance/access-control.md +310 -0
- package/proagents/compliance/audit-logging.md +444 -0
- package/proagents/compliance/compliance-frameworks.md +429 -0
- package/proagents/compliance/reports.md +491 -0
- package/proagents/compliance/retention-policies.md +454 -0
- package/proagents/config/README.md +181 -0
- package/proagents/config/integrations/README.md +68 -0
- package/proagents/config/integrations/github.yaml +211 -0
- package/proagents/config/integrations/jira.yaml +144 -0
- package/proagents/config/integrations/linear.yaml +157 -0
- package/proagents/config/integrations/notion.yaml +203 -0
- package/proagents/config/integrations/slack.yaml +230 -0
- package/proagents/config/rules/README.md +73 -0
- package/proagents/config/rules/custom-rules.template.yaml +188 -0
- package/proagents/config/rules/validation-rules.template.yaml +177 -0
- package/proagents/config/standards/README.md +58 -0
- package/proagents/config/standards/architecture-rules.template.md +124 -0
- package/proagents/config/standards/coding-standards.template.md +107 -0
- package/proagents/config/standards/naming-conventions.template.md +114 -0
- package/proagents/config/standards/testing-standards.template.md +213 -0
- package/proagents/config/templates/README.md +74 -0
- package/proagents/config/templates/api-route.template.ts +142 -0
- package/proagents/config/templates/component.template.tsx +55 -0
- package/proagents/config/templates/hook.template.ts +93 -0
- package/proagents/config/templates/test.template.ts +171 -0
- package/proagents/config-versioning/README.md +120 -0
- package/proagents/config-versioning/changelog.md +300 -0
- package/proagents/config-versioning/rollback.md +283 -0
- package/proagents/config-versioning/versioning.md +330 -0
- package/proagents/contract-testing/README.md +223 -0
- package/proagents/contract-testing/contract-testing.md +614 -0
- package/proagents/contract-testing/pact-integration.md +507 -0
- package/proagents/contract-testing/schema-validation.md +565 -0
- package/proagents/cost/README.md +48 -0
- package/proagents/cost/cost-template.md +283 -0
- package/proagents/cost/estimation-framework.md +287 -0
- package/proagents/database/README.md +72 -0
- package/proagents/database/examples/001-create-users.sql +129 -0
- package/proagents/database/examples/002-add-preferences.sql +94 -0
- package/proagents/database/examples/003-add-index.sql +105 -0
- package/proagents/database/examples/004-rename-column.sql +122 -0
- package/proagents/database/examples/005-add-foreign-key.sql +142 -0
- package/proagents/database/examples/006-data-migration.sql +196 -0
- package/proagents/database/examples/007-drop-column.sql +163 -0
- package/proagents/database/examples/README.md +89 -0
- package/proagents/database/migration-workflow.md +478 -0
- package/proagents/database/rollback-scripts.md +487 -0
- package/proagents/database/safety-checks.md +447 -0
- package/proagents/dependency-management/README.md +140 -0
- package/proagents/dependency-management/automation.md +363 -0
- package/proagents/dependency-management/compatibility.md +319 -0
- package/proagents/dependency-management/security-scanning.md +413 -0
- package/proagents/dependency-management/update-policies.md +374 -0
- package/proagents/disaster-recovery/README.md +247 -0
- package/proagents/disaster-recovery/automation.md +366 -0
- package/proagents/disaster-recovery/backup-recovery.md +571 -0
- package/proagents/disaster-recovery/incident-response.md +565 -0
- package/proagents/disaster-recovery/rollback-procedures.md +499 -0
- package/proagents/disaster-recovery/runbooks.md +603 -0
- package/proagents/disaster-recovery/scenarios.md +892 -0
- package/proagents/disaster-recovery/testing.md +438 -0
- package/proagents/environments/README.md +244 -0
- package/proagents/environments/configuration.md +437 -0
- package/proagents/environments/promotion.md +434 -0
- package/proagents/environments/setup.md +420 -0
- package/proagents/examples/README.md +55 -0
- package/proagents/examples/backend-nodejs/README.md +188 -0
- package/proagents/examples/backend-nodejs/complete-conversation.md +601 -0
- package/proagents/examples/backend-nodejs/proagents.config.yaml +415 -0
- package/proagents/examples/backend-nodejs/workflow-example.md +909 -0
- package/proagents/examples/fullstack-nextjs/README.md +155 -0
- package/proagents/examples/fullstack-nextjs/complete-conversation.md +604 -0
- package/proagents/examples/fullstack-nextjs/proagents.config.yaml +287 -0
- package/proagents/examples/fullstack-nextjs/workflow-example.md +553 -0
- package/proagents/examples/mobile-react-native/README.md +171 -0
- package/proagents/examples/mobile-react-native/complete-conversation.md +825 -0
- package/proagents/examples/mobile-react-native/proagents.config.yaml +330 -0
- package/proagents/examples/mobile-react-native/workflow-example.md +723 -0
- package/proagents/examples/web-frontend-react/README.md +125 -0
- package/proagents/examples/web-frontend-react/complete-conversation.md +556 -0
- package/proagents/examples/web-frontend-react/proagents.config.yaml +183 -0
- package/proagents/examples/web-frontend-react/workflow-example.md +603 -0
- package/proagents/existing-projects/README.md +65 -0
- package/proagents/existing-projects/challenges.md +861 -0
- package/proagents/existing-projects/coexistence-mode.md +483 -0
- package/proagents/existing-projects/compatibility-assessment.md +541 -0
- package/proagents/existing-projects/gradual-adoption.md +515 -0
- package/proagents/existing-projects/migration-strategies.md +788 -0
- package/proagents/existing-projects/pattern-reconciliation.md +489 -0
- package/proagents/existing-projects/team-onboarding.md +617 -0
- package/proagents/existing-projects/technical-debt-handling.md +644 -0
- package/proagents/feature-flags/README.md +263 -0
- package/proagents/feature-flags/ab-testing.md +413 -0
- package/proagents/feature-flags/configuration.md +420 -0
- package/proagents/feature-flags/kill-switches.md +444 -0
- package/proagents/feature-flags/rollout-strategies.md +392 -0
- package/proagents/getting-started/README.md +60 -0
- package/proagents/getting-started/ai-training-setup.md +380 -0
- package/proagents/getting-started/ide-setup.md +195 -0
- package/proagents/getting-started/mcp-setup.md +239 -0
- package/proagents/getting-started/pm-integration.md +336 -0
- package/proagents/getting-started/prompt-engineering.md +478 -0
- package/proagents/getting-started/team-onboarding.md +236 -0
- package/proagents/git/README.md +68 -0
- package/proagents/git/branch-strategy.md +164 -0
- package/proagents/git/commit-conventions.md +241 -0
- package/proagents/git/pr-workflow.md +286 -0
- package/proagents/git/rollback-procedures.md +416 -0
- package/proagents/i18n/README.md +133 -0
- package/proagents/i18n/extraction.md +433 -0
- package/proagents/i18n/tms-integration.md +332 -0
- package/proagents/i18n/translation-workflow.md +413 -0
- package/proagents/i18n/validation.md +355 -0
- package/proagents/ide-integration/README.md +124 -0
- package/proagents/ide-integration/cline-config.md +429 -0
- package/proagents/ide-integration/continue-config.md +380 -0
- package/proagents/ide-integration/cursor-rules.md +280 -0
- package/proagents/ide-integration/github-copilot.md +384 -0
- package/proagents/ide-integration/windsurf-rules.md +314 -0
- package/proagents/integrations/README.md +97 -0
- package/proagents/integrations/pm/README.md +344 -0
- package/proagents/learning/README.md +136 -0
- package/proagents/learning/adaptation.md +305 -0
- package/proagents/learning/data-collection.md +283 -0
- package/proagents/learning/implementation-guide.md +865 -0
- package/proagents/learning/reports.md +306 -0
- package/proagents/logging/README.md +276 -0
- package/proagents/logging/aggregation.md +475 -0
- package/proagents/logging/log-levels.md +376 -0
- package/proagents/logging/sensitive-data.md +423 -0
- package/proagents/logging/structured-logging.md +406 -0
- package/proagents/mcp/README.md +133 -0
- package/proagents/mcp/context-providers.md +442 -0
- package/proagents/mcp/server-config.md +306 -0
- package/proagents/mcp/tools-definition.md +513 -0
- package/proagents/metrics/README.md +174 -0
- package/proagents/metrics/code-quality-kpis.md +461 -0
- package/proagents/metrics/deployment-metrics.md +517 -0
- package/proagents/metrics/developer-productivity.md +368 -0
- package/proagents/metrics/learning-effectiveness.md +478 -0
- package/proagents/migrations/README.md +77 -0
- package/proagents/migrations/from-claude-projects.md +312 -0
- package/proagents/migrations/from-cursor-rules.md +345 -0
- package/proagents/migrations/from-custom-workflows.md +410 -0
- package/proagents/monitoring/README.md +308 -0
- package/proagents/monitoring/alerting.md +449 -0
- package/proagents/monitoring/dashboards.md +454 -0
- package/proagents/monitoring/health-checks.md +436 -0
- package/proagents/monitoring/metrics.md +434 -0
- package/proagents/multi-project/README.md +170 -0
- package/proagents/multi-project/coordinated-deploy.md +510 -0
- package/proagents/multi-project/cross-project-deps.md +395 -0
- package/proagents/multi-project/unified-changelog.md +477 -0
- package/proagents/multi-project/walkthroughs/monorepo-setup.md +787 -0
- package/proagents/multi-project/workspace-config.md +408 -0
- package/proagents/notifications/README.md +151 -0
- package/proagents/notifications/channels.md +457 -0
- package/proagents/notifications/preferences.md +415 -0
- package/proagents/notifications/routing.md +449 -0
- package/proagents/notifications/scheduling.md +425 -0
- package/proagents/notifications/templates.md +446 -0
- package/proagents/offline-mode/README.md +145 -0
- package/proagents/offline-mode/caching.md +344 -0
- package/proagents/offline-mode/offline-operations.md +312 -0
- package/proagents/offline-mode/queue-specifications.md +679 -0
- package/proagents/offline-mode/sync.md +475 -0
- package/proagents/parallel-features/README.md +85 -0
- package/proagents/parallel-features/conflict-detection.md +226 -0
- package/proagents/parallel-features/dependency-management.md +392 -0
- package/proagents/parallel-features/merge-coordination.md +506 -0
- package/proagents/parallel-features/tracking-system.md +416 -0
- package/proagents/patterns/README.md +305 -0
- package/proagents/patterns/api-errors.md +453 -0
- package/proagents/patterns/async-errors.md +521 -0
- package/proagents/patterns/error-types.md +437 -0
- package/proagents/patterns/ui-errors.md +595 -0
- package/proagents/performance/README.md +59 -0
- package/proagents/performance/bundle-analysis.md +375 -0
- package/proagents/performance/load-testing.md +563 -0
- package/proagents/performance/runtime-metrics.md +489 -0
- package/proagents/performance/web-vitals.md +425 -0
- package/proagents/plugins/README.md +139 -0
- package/proagents/plugins/creating-plugins.md +504 -0
- package/proagents/plugins/plugin-api.md +467 -0
- package/proagents/plugins/plugin-registry.md +276 -0
- package/proagents/pm-integration/README.md +151 -0
- package/proagents/pm-integration/asana.md +346 -0
- package/proagents/pm-integration/github-issues.md +308 -0
- package/proagents/pm-integration/gitlab-issues.md +482 -0
- package/proagents/pm-integration/jira.md +364 -0
- package/proagents/pm-integration/linear.md +409 -0
- package/proagents/pm-integration/notion.md +275 -0
- package/proagents/pm-integration/sync-config.md +533 -0
- package/proagents/pm-integration/trello.md +159 -0
- package/proagents/proagents.config.yaml +213 -0
- package/proagents/prompts/00-init-wizard.md +426 -0
- package/proagents/prompts/00-init.md +219 -0
- package/proagents/prompts/01-analysis.md +244 -0
- package/proagents/prompts/02-requirements.md +399 -0
- package/proagents/prompts/03-ui-design.md +493 -0
- package/proagents/prompts/04-planning.md +505 -0
- package/proagents/prompts/05-implementation.md +518 -0
- package/proagents/prompts/06-testing.md +620 -0
- package/proagents/prompts/06.5-code-review.md +512 -0
- package/proagents/prompts/07-documentation.md +673 -0
- package/proagents/prompts/08-deployment.md +539 -0
- package/proagents/prompts/09-rollback.md +554 -0
- package/proagents/prompts/README.md +51 -0
- package/proagents/prompts/accessibility/README.md +146 -0
- package/proagents/prompts/accessibility/aria.md +276 -0
- package/proagents/prompts/accessibility/audit.md +233 -0
- package/proagents/prompts/accessibility/keyboard.md +392 -0
- package/proagents/prompts/accessibility/wcag.md +189 -0
- package/proagents/prompts/debugging/README.md +51 -0
- package/proagents/prompts/debugging/error-analysis.md +385 -0
- package/proagents/prompts/debugging/performance-debug.md +381 -0
- package/proagents/prompts/debugging/systematic.md +270 -0
- package/proagents/prompts/performance/README.md +47 -0
- package/proagents/prompts/performance/analyze.md +265 -0
- package/proagents/prompts/performance/optimize.md +347 -0
- package/proagents/prompts/refactoring/README.md +51 -0
- package/proagents/prompts/refactoring/architecture.md +531 -0
- package/proagents/prompts/refactoring/code-smells.md +174 -0
- package/proagents/prompts/refactoring/patterns.md +516 -0
- package/proagents/prompts/security-audit/README.md +197 -0
- package/proagents/prompts/security-audit/code-review.md +260 -0
- package/proagents/prompts/security-audit/vulnerability-scan.md +288 -0
- package/proagents/reporting/README.md +158 -0
- package/proagents/reporting/dashboards.md +366 -0
- package/proagents/reporting/exports.md +524 -0
- package/proagents/reporting/quality-metrics.md +385 -0
- package/proagents/reporting/templates/README.md +56 -0
- package/proagents/reporting/templates/dashboard-config.json +187 -0
- package/proagents/reporting/templates/metrics-queries.md +427 -0
- package/proagents/reporting/templates/react-dashboard.tsx +544 -0
- package/proagents/reporting/templates/widgets.md +451 -0
- package/proagents/reporting/velocity-metrics.md +340 -0
- package/proagents/reverse-engineering/README.md +151 -0
- package/proagents/reverse-engineering/architecture-extraction.md +325 -0
- package/proagents/reverse-engineering/code-analysis.md +377 -0
- package/proagents/reverse-engineering/dependency-mapping.md +567 -0
- package/proagents/reverse-engineering/diagram-generation.md +586 -0
- package/proagents/reverse-engineering/documentation-generation.md +468 -0
- package/proagents/reverse-engineering/pattern-detection.md +569 -0
- package/proagents/reverse-engineering/quality-assessment.md +733 -0
- package/proagents/rules/README.md +179 -0
- package/proagents/rules/custom-rules-template.yaml +286 -0
- package/proagents/rules/custom-rules.md +754 -0
- package/proagents/rules/validation-rules-template.yaml +517 -0
- package/proagents/runbooks/README.md +219 -0
- package/proagents/runbooks/dependency-vulnerability.md +505 -0
- package/proagents/runbooks/incident-response.md +451 -0
- package/proagents/runbooks/performance-degradation.md +584 -0
- package/proagents/runbooks/production-debugging.md +489 -0
- package/proagents/scaffolding/README.md +64 -0
- package/proagents/scaffolding/nextjs/README.md +578 -0
- package/proagents/scaffolding/nextjs/templates/api-route.ts.template +185 -0
- package/proagents/scaffolding/nextjs/templates/page.tsx.template +109 -0
- package/proagents/scaffolding/nextjs/templates/server-action.ts.template +204 -0
- package/proagents/scaffolding/nodejs/README.md +558 -0
- package/proagents/scaffolding/nodejs/templates/controller.ts.template +167 -0
- package/proagents/scaffolding/nodejs/templates/repository.ts.template +155 -0
- package/proagents/scaffolding/nodejs/templates/service.ts.template +207 -0
- package/proagents/scaffolding/project-types.md +401 -0
- package/proagents/scaffolding/react/README.md +399 -0
- package/proagents/scaffolding/react/templates/component.tsx.template +88 -0
- package/proagents/scaffolding/react/templates/hook.ts.template +127 -0
- package/proagents/scaffolding/react/templates/service.ts.template +155 -0
- package/proagents/scaffolding/react/templates/test.tsx.template +149 -0
- package/proagents/scaffolding/react-native/README.md +476 -0
- package/proagents/scaffolding/react-native/templates/hook.ts.template +226 -0
- package/proagents/scaffolding/react-native/templates/screen.tsx.template +247 -0
- package/proagents/secrets/README.md +278 -0
- package/proagents/secrets/access-control.md +443 -0
- package/proagents/secrets/rotation.md +403 -0
- package/proagents/secrets/scanning.md +487 -0
- package/proagents/secrets/storage.md +394 -0
- package/proagents/security/README.md +71 -0
- package/proagents/security/owasp-checklist.md +390 -0
- package/proagents/security/sast-guide.md +473 -0
- package/proagents/security/security-report-template.md +343 -0
- package/proagents/security/vulnerability-scanning.md +329 -0
- package/proagents/slash-commands.json +161 -0
- package/proagents/standards/README.md +120 -0
- package/proagents/standards/architecture-patterns.md +728 -0
- package/proagents/standards/architecture-rules-template.md +489 -0
- package/proagents/standards/coding-standards-template.md +489 -0
- package/proagents/standards/examples/README.md +61 -0
- package/proagents/standards/examples/nodejs-api.md +560 -0
- package/proagents/standards/examples/react-nextjs.md +428 -0
- package/proagents/standards/naming-conventions-template.md +526 -0
- package/proagents/standards/override-system.md +717 -0
- package/proagents/standards/testing-standards-template.md +220 -0
- package/proagents/team/README.md +256 -0
- package/proagents/team/code-ownership.md +306 -0
- package/proagents/team/communication-templates.md +441 -0
- package/proagents/team/handoff-protocol.md +380 -0
- package/proagents/team/ide-setup/README.md +103 -0
- package/proagents/team/ide-setup/cursor.md +276 -0
- package/proagents/team/ide-setup/jetbrains.md +330 -0
- package/proagents/team/ide-setup/neovim.md +640 -0
- package/proagents/team/ide-setup/vscode.md +348 -0
- package/proagents/team/onboarding.md +278 -0
- package/proagents/templates/README.md +57 -0
- package/proagents/templates/code-review-report.md +255 -0
- package/proagents/templates/codebase-analysis-report.md +315 -0
- package/proagents/templates/deployment-checklist.md +277 -0
- package/proagents/templates/feature-requirements.md +142 -0
- package/proagents/templates/feature-status.md +231 -0
- package/proagents/templates/implementation-plan.md +373 -0
- package/proagents/templates/rollback-plan.md +331 -0
- package/proagents/templates/test-plan.md +336 -0
- package/proagents/templates/ui-specification.md +431 -0
- package/proagents/testing-standards/README.md +229 -0
- package/proagents/testing-standards/coverage-requirements.md +198 -0
- package/proagents/testing-standards/mocking-guidelines.md +478 -0
- package/proagents/testing-standards/test-naming.md +485 -0
- package/proagents/testing-standards/test-patterns.md +488 -0
- package/proagents/troubleshooting/README.md +730 -0
- package/proagents/troubleshooting/ai-issues.md +601 -0
- package/proagents/troubleshooting/workflow-issues.md +571 -0
- package/proagents/ui-integration/README.md +77 -0
- package/proagents/ui-integration/figma-guide.md +217 -0
- package/proagents/ui-integration/manual-export-guide.md +358 -0
- package/proagents/ui-integration/sketch-interpretation.md +471 -0
- package/proagents/webhooks/README.md +126 -0
- package/proagents/webhooks/endpoints.md +298 -0
- package/proagents/webhooks/events.md +316 -0
- package/proagents/webhooks/payloads.md +325 -0
- package/proagents/webhooks/reliability.md +363 -0
- package/proagents/webhooks/security.md +380 -0
- package/proagents/workflow-modes/README.md +136 -0
- package/proagents/workflow-modes/deferred-tracking.md +405 -0
- package/proagents/workflow-modes/entry-modes.md +397 -0
- package/proagents/workflow-modes/guardrails.md +405 -0
- package/proagents/workflow-modes/mode-detection.md +358 -0
- package/proagents/workflow-modes/mode-switching.md +372 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
# ADR-0002: Use URL-Based API Versioning
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
|-------|-------|
|
|
7
|
+
| **Status** | Accepted |
|
|
8
|
+
| **Date** | 2024-01-20 |
|
|
9
|
+
| **Author** | @api-lead |
|
|
10
|
+
| **Reviewers** | @tech-lead, @frontend-lead, @mobile-lead |
|
|
11
|
+
| **Tags** | api, versioning, backend |
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Context
|
|
16
|
+
|
|
17
|
+
Our API is evolving rapidly, and we need to make breaking changes to improve the data model and fix design mistakes. However, we have multiple clients:
|
|
18
|
+
|
|
19
|
+
- Web application (controlled release cycle)
|
|
20
|
+
- iOS app (App Store review delays)
|
|
21
|
+
- Android app (Play Store delays)
|
|
22
|
+
- Third-party integrations (no control over update timeline)
|
|
23
|
+
|
|
24
|
+
We need a versioning strategy that allows us to:
|
|
25
|
+
- Make breaking changes without disrupting existing clients
|
|
26
|
+
- Maintain multiple versions during transition periods
|
|
27
|
+
- Deprecate old versions gracefully
|
|
28
|
+
- Keep the implementation manageable
|
|
29
|
+
|
|
30
|
+
Currently, our API has no versioning, and breaking changes require coordinated releases across all clients, which is becoming increasingly difficult.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Decision
|
|
35
|
+
|
|
36
|
+
We will implement **URL-based API versioning** with the following structure:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
https://api.example.com/v1/users
|
|
40
|
+
https://api.example.com/v2/users
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Rules:**
|
|
44
|
+
- Major version in URL path (`/v1/`, `/v2/`, etc.)
|
|
45
|
+
- Minor/patch changes within a version are backward compatible
|
|
46
|
+
- Support N-2 versions minimum (e.g., v3 current, v2 and v1 still supported)
|
|
47
|
+
- Deprecation period of 6 months before version removal
|
|
48
|
+
- Version-specific documentation and changelogs
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Rationale
|
|
53
|
+
|
|
54
|
+
URL-based versioning was chosen because:
|
|
55
|
+
|
|
56
|
+
1. **Visibility**: Version is immediately apparent in logs, monitoring, and debugging.
|
|
57
|
+
|
|
58
|
+
2. **Simplicity**: No header parsing required; easy to test with browser or curl.
|
|
59
|
+
|
|
60
|
+
3. **Routing**: Easy to route different versions to different server instances if needed.
|
|
61
|
+
|
|
62
|
+
4. **Caching**: CDN and proxy caching works naturally without custom rules.
|
|
63
|
+
|
|
64
|
+
5. **Documentation**: API docs can cleanly separate versions.
|
|
65
|
+
|
|
66
|
+
6. **Adoption**: Most widely used pattern, familiar to developers.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Consequences
|
|
71
|
+
|
|
72
|
+
### Positive
|
|
73
|
+
|
|
74
|
+
- **Clear separation** between API versions
|
|
75
|
+
- **Easy debugging** - version visible in all requests
|
|
76
|
+
- **Simple client implementation** - just change base URL
|
|
77
|
+
- **Independent deployment** - can deploy v2 without affecting v1
|
|
78
|
+
- **Gradual migration** - clients can upgrade on their own schedule
|
|
79
|
+
- **Clean deprecation** - can monitor and sunset old versions
|
|
80
|
+
|
|
81
|
+
### Negative
|
|
82
|
+
|
|
83
|
+
- **URL pollution** - version becomes part of the resource path
|
|
84
|
+
- **Duplication** - may need to duplicate code for multiple versions
|
|
85
|
+
- **Maintenance burden** - supporting multiple versions increases work
|
|
86
|
+
- **Not pure REST** - version is not a resource characteristic
|
|
87
|
+
|
|
88
|
+
### Neutral
|
|
89
|
+
|
|
90
|
+
- Requires documentation for each supported version
|
|
91
|
+
- Need monitoring per version to track adoption
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Alternatives Considered
|
|
96
|
+
|
|
97
|
+
### Alternative 1: Header-Based Versioning
|
|
98
|
+
|
|
99
|
+
**Description:** Version specified in HTTP header (`Accept: application/vnd.api.v1+json`)
|
|
100
|
+
|
|
101
|
+
**Pros:**
|
|
102
|
+
- Cleaner URLs
|
|
103
|
+
- More "RESTful"
|
|
104
|
+
- Flexible media type negotiation
|
|
105
|
+
|
|
106
|
+
**Cons:**
|
|
107
|
+
- Harder to test (can't just use browser)
|
|
108
|
+
- Version not visible in logs without custom parsing
|
|
109
|
+
- Caching requires header inspection
|
|
110
|
+
- More complex client implementation
|
|
111
|
+
|
|
112
|
+
**Why not chosen:** The debugging and caching complications outweigh the purity benefits.
|
|
113
|
+
|
|
114
|
+
### Alternative 2: Query Parameter Versioning
|
|
115
|
+
|
|
116
|
+
**Description:** Version in query string (`/users?version=1`)
|
|
117
|
+
|
|
118
|
+
**Pros:**
|
|
119
|
+
- URLs stay clean for latest version
|
|
120
|
+
- Easy to implement
|
|
121
|
+
|
|
122
|
+
**Cons:**
|
|
123
|
+
- Easy to forget parameter
|
|
124
|
+
- Caching complications
|
|
125
|
+
- Looks hacky
|
|
126
|
+
- Conflicts with actual query parameters
|
|
127
|
+
|
|
128
|
+
**Why not chosen:** Too easy to accidentally use wrong version; feels unprofessional.
|
|
129
|
+
|
|
130
|
+
### Alternative 3: No Versioning (Evolutionary API)
|
|
131
|
+
|
|
132
|
+
**Description:** Never make breaking changes; only additive changes.
|
|
133
|
+
|
|
134
|
+
**Pros:**
|
|
135
|
+
- No version management
|
|
136
|
+
- Single codebase
|
|
137
|
+
- Simple
|
|
138
|
+
|
|
139
|
+
**Cons:**
|
|
140
|
+
- Limits our ability to improve API design
|
|
141
|
+
- Technical debt accumulates
|
|
142
|
+
- Doesn't work for significant changes
|
|
143
|
+
|
|
144
|
+
**Why not chosen:** We need the flexibility to make breaking improvements to our API.
|
|
145
|
+
|
|
146
|
+
### Alternative 4: Date-Based Versioning
|
|
147
|
+
|
|
148
|
+
**Description:** Use dates in URL (`/2024-01-15/users`)
|
|
149
|
+
|
|
150
|
+
**Pros:**
|
|
151
|
+
- Clear when version was released
|
|
152
|
+
- Naturally ordered
|
|
153
|
+
|
|
154
|
+
**Cons:**
|
|
155
|
+
- Verbose URLs
|
|
156
|
+
- Confusing if version released on different dates
|
|
157
|
+
- Not a standard pattern
|
|
158
|
+
|
|
159
|
+
**Why not chosen:** Non-standard, potentially confusing for developers.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Implementation
|
|
164
|
+
|
|
165
|
+
### Approach
|
|
166
|
+
|
|
167
|
+
We will implement versioning as a first-class routing concern with shared code where possible.
|
|
168
|
+
|
|
169
|
+
### Structure
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
src/
|
|
173
|
+
├── api/
|
|
174
|
+
│ ├── v1/
|
|
175
|
+
│ │ ├── routes/
|
|
176
|
+
│ │ ├── controllers/
|
|
177
|
+
│ │ └── schemas/
|
|
178
|
+
│ ├── v2/
|
|
179
|
+
│ │ ├── routes/
|
|
180
|
+
│ │ ├── controllers/
|
|
181
|
+
│ │ └── schemas/
|
|
182
|
+
│ └── shared/
|
|
183
|
+
│ ├── middleware/
|
|
184
|
+
│ ├── services/
|
|
185
|
+
│ └── utils/
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Routing
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
// Server setup
|
|
192
|
+
import v1Router from './api/v1/routes';
|
|
193
|
+
import v2Router from './api/v2/routes';
|
|
194
|
+
|
|
195
|
+
app.use('/v1', v1Router);
|
|
196
|
+
app.use('/v2', v2Router);
|
|
197
|
+
|
|
198
|
+
// Default to latest
|
|
199
|
+
app.use('/api', v2Router);
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Version Lifecycle
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
206
|
+
│ Active │ → │ Current │ → │ Deprecated │ → │ Sunset │
|
|
207
|
+
│ (default) │ │ │ │ │ │ │
|
|
208
|
+
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
|
|
209
|
+
v2 v1 v0 (removed)
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Deprecation Headers
|
|
213
|
+
|
|
214
|
+
```typescript
|
|
215
|
+
// For deprecated versions
|
|
216
|
+
app.use('/v1', (req, res, next) => {
|
|
217
|
+
res.set('Deprecation', 'true');
|
|
218
|
+
res.set('Sunset', 'Sat, 15 Jun 2024 00:00:00 GMT');
|
|
219
|
+
res.set('Link', '</v2>; rel="successor-version"');
|
|
220
|
+
next();
|
|
221
|
+
});
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Phases
|
|
225
|
+
|
|
226
|
+
1. **Phase 1: Infrastructure** (Sprint 1)
|
|
227
|
+
- Set up versioned routing
|
|
228
|
+
- Create v1 namespace for existing API
|
|
229
|
+
- Add version monitoring
|
|
230
|
+
|
|
231
|
+
2. **Phase 2: Documentation** (Sprint 1)
|
|
232
|
+
- Version-specific API docs
|
|
233
|
+
- Migration guide template
|
|
234
|
+
- Deprecation policy documentation
|
|
235
|
+
|
|
236
|
+
3. **Phase 3: v2 Development** (Sprint 2-3)
|
|
237
|
+
- Design v2 schema
|
|
238
|
+
- Implement v2 endpoints
|
|
239
|
+
- Create migration guide
|
|
240
|
+
|
|
241
|
+
4. **Phase 4: Client Migration** (Sprint 4-6)
|
|
242
|
+
- Update web application
|
|
243
|
+
- Update mobile applications
|
|
244
|
+
- Notify third-party integrators
|
|
245
|
+
|
|
246
|
+
### Risks
|
|
247
|
+
|
|
248
|
+
| Risk | Probability | Impact | Mitigation |
|
|
249
|
+
|------|-------------|--------|------------|
|
|
250
|
+
| Clients don't migrate | Medium | High | Clear deprecation timeline, support |
|
|
251
|
+
| Code duplication | High | Medium | Shared services layer |
|
|
252
|
+
| Version proliferation | Low | Medium | Strict version policy, regular cleanup |
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Validation
|
|
257
|
+
|
|
258
|
+
### Success Criteria
|
|
259
|
+
|
|
260
|
+
- [ ] All existing clients work without changes on /v1
|
|
261
|
+
- [ ] New features can be added to /v2 without breaking /v1
|
|
262
|
+
- [ ] Version-specific monitoring shows clear adoption metrics
|
|
263
|
+
- [ ] Documentation clearly separates version information
|
|
264
|
+
- [ ] At least 80% of traffic on latest version within 6 months
|
|
265
|
+
|
|
266
|
+
### Metrics to Track
|
|
267
|
+
|
|
268
|
+
- Request count per version
|
|
269
|
+
- Error rate per version
|
|
270
|
+
- Client distribution per version
|
|
271
|
+
- Time to deprecation compliance
|
|
272
|
+
|
|
273
|
+
### Review Date
|
|
274
|
+
|
|
275
|
+
This decision will be reviewed on 2024-07-20 (6 months after implementation) to assess:
|
|
276
|
+
- Is the versioning strategy working?
|
|
277
|
+
- Are we maintaining too many versions?
|
|
278
|
+
- Should we adjust the deprecation timeline?
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## References
|
|
283
|
+
|
|
284
|
+
- [API Versioning Best Practices](https://www.postman.com/api-platform/api-versioning/)
|
|
285
|
+
- [Stripe API Versioning](https://stripe.com/docs/api/versioning)
|
|
286
|
+
- [GitHub API Versioning](https://docs.github.com/en/rest/overview/api-versions)
|
|
287
|
+
- Internal RFC: API Design Guidelines (link)
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Changelog
|
|
292
|
+
|
|
293
|
+
| Date | Author | Change |
|
|
294
|
+
|------|--------|--------|
|
|
295
|
+
| 2024-01-18 | @api-lead | Initial draft |
|
|
296
|
+
| 2024-01-19 | @api-lead | Added deprecation headers section |
|
|
297
|
+
| 2024-01-20 | @api-lead | Status changed to Accepted |
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
# ADR-0001: Use PostgreSQL for Primary Database
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
|-------|-------|
|
|
7
|
+
| **Status** | Accepted |
|
|
8
|
+
| **Date** | 2024-01-15 |
|
|
9
|
+
| **Author** | @tech-lead |
|
|
10
|
+
| **Reviewers** | @architect, @senior-dev, @dba |
|
|
11
|
+
| **Tags** | database, infrastructure, data |
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Context
|
|
16
|
+
|
|
17
|
+
Our application has grown beyond the capabilities of our current SQLite database. We're experiencing:
|
|
18
|
+
|
|
19
|
+
- Slow query performance with 10M+ records
|
|
20
|
+
- Limited concurrent connection support
|
|
21
|
+
- No support for advanced features like full-text search
|
|
22
|
+
- Inability to scale horizontally
|
|
23
|
+
|
|
24
|
+
We need to choose a production-grade database that can:
|
|
25
|
+
- Handle our current scale (10M records, 1000 req/s)
|
|
26
|
+
- Scale to 10x our current load
|
|
27
|
+
- Support complex queries and joins
|
|
28
|
+
- Provide reliability and data integrity
|
|
29
|
+
- Integrate with our Node.js backend
|
|
30
|
+
|
|
31
|
+
The team has varying experience with different database systems, but most are familiar with SQL-based databases.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Decision
|
|
36
|
+
|
|
37
|
+
We will migrate from SQLite to **PostgreSQL** as our primary database.
|
|
38
|
+
|
|
39
|
+
Specifically:
|
|
40
|
+
- Use **Amazon RDS for PostgreSQL** for managed hosting
|
|
41
|
+
- Start with **db.m5.large** instance (2 vCPU, 8 GB RAM)
|
|
42
|
+
- Enable **Multi-AZ** for high availability
|
|
43
|
+
- Use **read replicas** for read-heavy workloads
|
|
44
|
+
- Implement connection pooling with **PgBouncer**
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Rationale
|
|
49
|
+
|
|
50
|
+
PostgreSQL was chosen because:
|
|
51
|
+
|
|
52
|
+
1. **Performance**: PostgreSQL handles complex queries efficiently with its sophisticated query planner and indexing options.
|
|
53
|
+
|
|
54
|
+
2. **Scalability**: Supports read replicas, table partitioning, and connection pooling for horizontal scaling.
|
|
55
|
+
|
|
56
|
+
3. **Features**: Offers JSON support, full-text search, and advanced data types we need.
|
|
57
|
+
|
|
58
|
+
4. **Reliability**: ACID compliance, proven track record for data integrity.
|
|
59
|
+
|
|
60
|
+
5. **Ecosystem**: Excellent Node.js support via `pg` and `prisma`, plus tools like pgAdmin.
|
|
61
|
+
|
|
62
|
+
6. **Team Knowledge**: Two team members have production PostgreSQL experience.
|
|
63
|
+
|
|
64
|
+
7. **Managed Options**: AWS RDS provides automated backups, patching, and failover.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Consequences
|
|
69
|
+
|
|
70
|
+
### Positive
|
|
71
|
+
|
|
72
|
+
- **10x query performance improvement** for complex joins and aggregations
|
|
73
|
+
- **Better concurrency** with MVCC and proper connection pooling
|
|
74
|
+
- **Full-text search** without external dependencies
|
|
75
|
+
- **JSON support** for flexible schema evolution
|
|
76
|
+
- **Automated ops** with RDS (backups, patching, monitoring)
|
|
77
|
+
- **High availability** with Multi-AZ deployment
|
|
78
|
+
|
|
79
|
+
### Negative
|
|
80
|
+
|
|
81
|
+
- **Migration effort**: Estimated 2 weeks for data migration and testing
|
|
82
|
+
- **Operational cost**: ~$150/month for RDS vs $0 for SQLite
|
|
83
|
+
- **Complexity increase**: New infrastructure to manage and monitor
|
|
84
|
+
- **Learning curve**: Some team members unfamiliar with PostgreSQL specifics
|
|
85
|
+
|
|
86
|
+
### Neutral
|
|
87
|
+
|
|
88
|
+
- SQL syntax is similar, minimal code changes needed
|
|
89
|
+
- Existing ORM (Prisma) supports PostgreSQL
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Alternatives Considered
|
|
94
|
+
|
|
95
|
+
### Alternative 1: MySQL
|
|
96
|
+
|
|
97
|
+
**Description:** Another popular open-source relational database.
|
|
98
|
+
|
|
99
|
+
**Pros:**
|
|
100
|
+
- Wide adoption, lots of resources
|
|
101
|
+
- Good performance for simple queries
|
|
102
|
+
- Lower memory footprint
|
|
103
|
+
|
|
104
|
+
**Cons:**
|
|
105
|
+
- Weaker support for complex queries
|
|
106
|
+
- Less sophisticated query planner
|
|
107
|
+
- Limited JSON functionality
|
|
108
|
+
|
|
109
|
+
**Why not chosen:** PostgreSQL's superior query optimizer and JSON support better match our needs for complex analytics queries.
|
|
110
|
+
|
|
111
|
+
### Alternative 2: MongoDB
|
|
112
|
+
|
|
113
|
+
**Description:** Document-oriented NoSQL database.
|
|
114
|
+
|
|
115
|
+
**Pros:**
|
|
116
|
+
- Flexible schema
|
|
117
|
+
- Easy horizontal scaling
|
|
118
|
+
- Good for document-heavy workloads
|
|
119
|
+
|
|
120
|
+
**Cons:**
|
|
121
|
+
- Requires denormalization of our relational data
|
|
122
|
+
- No transactions across documents (until recently)
|
|
123
|
+
- Team has minimal MongoDB experience
|
|
124
|
+
|
|
125
|
+
**Why not chosen:** Our data model is inherently relational. Migrating to MongoDB would require significant data model changes and team training.
|
|
126
|
+
|
|
127
|
+
### Alternative 3: Amazon DynamoDB
|
|
128
|
+
|
|
129
|
+
**Description:** Fully managed NoSQL database service.
|
|
130
|
+
|
|
131
|
+
**Pros:**
|
|
132
|
+
- Fully managed, zero ops
|
|
133
|
+
- Excellent scaling
|
|
134
|
+
- Pay-per-use pricing
|
|
135
|
+
|
|
136
|
+
**Cons:**
|
|
137
|
+
- Limited query flexibility
|
|
138
|
+
- No SQL support
|
|
139
|
+
- Complex pricing model
|
|
140
|
+
- Requires complete application rewrite
|
|
141
|
+
|
|
142
|
+
**Why not chosen:** The query limitations and required application changes make this unsuitable for our use case.
|
|
143
|
+
|
|
144
|
+
### Alternative 4: Do Nothing (Keep SQLite)
|
|
145
|
+
|
|
146
|
+
**Description:** Continue using SQLite with optimizations.
|
|
147
|
+
|
|
148
|
+
**Pros:**
|
|
149
|
+
- No migration effort
|
|
150
|
+
- Zero operational cost
|
|
151
|
+
- Simple deployment
|
|
152
|
+
|
|
153
|
+
**Cons:**
|
|
154
|
+
- Performance issues will worsen
|
|
155
|
+
- Cannot support concurrent writes well
|
|
156
|
+
- Missing features we need
|
|
157
|
+
|
|
158
|
+
**Why not chosen:** SQLite cannot meet our current needs, let alone scale for future growth.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Implementation
|
|
163
|
+
|
|
164
|
+
### Approach
|
|
165
|
+
|
|
166
|
+
We will perform a phased migration:
|
|
167
|
+
1. Set up PostgreSQL infrastructure
|
|
168
|
+
2. Migrate schema and data
|
|
169
|
+
3. Run both databases in parallel
|
|
170
|
+
4. Validate data consistency
|
|
171
|
+
5. Switch traffic to PostgreSQL
|
|
172
|
+
6. Decommission SQLite
|
|
173
|
+
|
|
174
|
+
### Phases
|
|
175
|
+
|
|
176
|
+
1. **Phase 1: Infrastructure Setup** (Week 1)
|
|
177
|
+
- Provision RDS instance
|
|
178
|
+
- Set up VPC and security groups
|
|
179
|
+
- Configure PgBouncer
|
|
180
|
+
- Set up monitoring
|
|
181
|
+
|
|
182
|
+
2. **Phase 2: Schema Migration** (Week 1)
|
|
183
|
+
- Convert SQLite schema to PostgreSQL
|
|
184
|
+
- Set up Prisma for PostgreSQL
|
|
185
|
+
- Update connection strings
|
|
186
|
+
- Test queries locally
|
|
187
|
+
|
|
188
|
+
3. **Phase 3: Data Migration** (Week 2)
|
|
189
|
+
- Export data from SQLite
|
|
190
|
+
- Transform and import to PostgreSQL
|
|
191
|
+
- Validate data integrity
|
|
192
|
+
- Set up ongoing sync
|
|
193
|
+
|
|
194
|
+
4. **Phase 4: Parallel Running** (Week 2)
|
|
195
|
+
- Write to both databases
|
|
196
|
+
- Read from PostgreSQL
|
|
197
|
+
- Monitor for discrepancies
|
|
198
|
+
- Performance testing
|
|
199
|
+
|
|
200
|
+
5. **Phase 5: Cutover** (Week 2)
|
|
201
|
+
- Switch all traffic to PostgreSQL
|
|
202
|
+
- Monitor closely for 48 hours
|
|
203
|
+
- Keep SQLite as backup
|
|
204
|
+
|
|
205
|
+
6. **Phase 6: Cleanup** (Week 3)
|
|
206
|
+
- Remove SQLite code
|
|
207
|
+
- Remove dual-write logic
|
|
208
|
+
- Document new architecture
|
|
209
|
+
|
|
210
|
+
### Risks
|
|
211
|
+
|
|
212
|
+
| Risk | Probability | Impact | Mitigation |
|
|
213
|
+
|------|-------------|--------|------------|
|
|
214
|
+
| Data loss during migration | Low | Critical | Full backups, validation scripts |
|
|
215
|
+
| Performance regression | Medium | High | Load testing before cutover |
|
|
216
|
+
| Extended downtime | Low | High | Parallel running phase |
|
|
217
|
+
| Query compatibility issues | Medium | Medium | Early testing, Prisma abstraction |
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Validation
|
|
222
|
+
|
|
223
|
+
### Success Criteria
|
|
224
|
+
|
|
225
|
+
- [ ] All queries execute in < 500ms (p99)
|
|
226
|
+
- [ ] Zero data loss verified by row count and checksum comparison
|
|
227
|
+
- [ ] Application handles 2000 req/s in load testing
|
|
228
|
+
- [ ] 99.9% uptime maintained during migration
|
|
229
|
+
- [ ] No increase in application error rate
|
|
230
|
+
|
|
231
|
+
### Metrics to Track
|
|
232
|
+
|
|
233
|
+
- Query latency (p50, p95, p99)
|
|
234
|
+
- Connection pool utilization
|
|
235
|
+
- Database CPU and memory usage
|
|
236
|
+
- Replication lag (for read replicas)
|
|
237
|
+
- Application error rate
|
|
238
|
+
|
|
239
|
+
### Review Date
|
|
240
|
+
|
|
241
|
+
This decision will be reviewed on 2024-04-15 (3 months after implementation) to assess:
|
|
242
|
+
- Performance improvements achieved
|
|
243
|
+
- Operational burden
|
|
244
|
+
- Any unforeseen issues
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## References
|
|
249
|
+
|
|
250
|
+
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
|
|
251
|
+
- [Amazon RDS for PostgreSQL](https://aws.amazon.com/rds/postgresql/)
|
|
252
|
+
- [Prisma with PostgreSQL](https://www.prisma.io/docs/concepts/database-connectors/postgresql)
|
|
253
|
+
- Internal RFC: Database Evaluation (link)
|
|
254
|
+
- Performance benchmarks (link)
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Changelog
|
|
259
|
+
|
|
260
|
+
| Date | Author | Change |
|
|
261
|
+
|------|--------|--------|
|
|
262
|
+
| 2024-01-10 | @tech-lead | Initial draft |
|
|
263
|
+
| 2024-01-12 | @tech-lead | Updated based on architecture review |
|
|
264
|
+
| 2024-01-15 | @tech-lead | Status changed to Accepted |
|