aigroup-workflow 2.2.0 → 2.2.2
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/commands/fix-build.md +10 -5
- package/.claude/commands/init-project.md +13 -8
- package/.claude/commands/plan.md +15 -8
- package/.claude/commands/review.md +12 -6
- package/.claude/commands/tdd.md +11 -5
- package/.claude/commands/workflow-start.md +20 -11
- package/.claude/settings.json +28 -0
- package/.codex/agents/architect.toml +207 -0
- package/.codex/agents/build-error-resolver.toml +110 -0
- package/.codex/agents/code-reviewer.toml +233 -0
- package/.codex/agents/doc-updater.toml +103 -0
- package/.codex/agents/e2e-runner.toml +103 -0
- package/.codex/agents/get-current-datetime.toml +23 -0
- package/.codex/agents/init-architect.toml +181 -0
- package/.codex/agents/planner.toml +208 -0
- package/.codex/agents/refactor-cleaner.toml +81 -0
- package/.codex/agents/rust-reviewer.toml +90 -0
- package/.codex/agents/security-reviewer.toml +104 -0
- package/.codex/agents/tdd-guide.toml +87 -0
- package/AGENTS.md +2 -2
- package/CLAUDE.md +23 -1
- package/LICENSE +20 -20
- package/README.md +333 -333
- package/agents/a11y-architect.md +141 -141
- package/agents/architect.md +211 -211
- package/agents/build-error-resolver.md +114 -114
- package/agents/chief-of-staff.md +151 -151
- package/agents/code-architect.md +71 -71
- package/agents/code-explorer.md +69 -69
- package/agents/code-reviewer.md +237 -237
- package/agents/code-simplifier.md +47 -47
- package/agents/comment-analyzer.md +45 -45
- package/agents/conversation-analyzer.md +52 -52
- package/agents/cpp-build-resolver.md +90 -90
- package/agents/cpp-reviewer.md +72 -72
- package/agents/csharp-reviewer.md +101 -101
- package/agents/dart-build-resolver.md +201 -201
- package/agents/database-reviewer.md +91 -91
- package/agents/doc-updater.md +107 -107
- package/agents/docs-lookup.md +68 -68
- package/agents/e2e-runner.md +107 -107
- package/agents/flutter-reviewer.md +243 -243
- package/agents/gan-evaluator.md +209 -209
- package/agents/gan-generator.md +131 -131
- package/agents/gan-planner.md +99 -99
- package/agents/get-current-datetime.md +26 -26
- package/agents/go-build-resolver.md +94 -94
- package/agents/go-reviewer.md +76 -76
- package/agents/harness-optimizer.md +35 -35
- package/agents/healthcare-reviewer.md +83 -83
- package/agents/java-build-resolver.md +153 -153
- package/agents/java-reviewer.md +92 -92
- package/agents/kotlin-build-resolver.md +118 -118
- package/agents/kotlin-reviewer.md +159 -159
- package/agents/loop-operator.md +36 -36
- package/agents/opensource-forker.md +198 -198
- package/agents/opensource-packager.md +249 -249
- package/agents/opensource-sanitizer.md +188 -188
- package/agents/performance-optimizer.md +446 -446
- package/agents/planner.md +212 -212
- package/agents/pr-test-analyzer.md +45 -45
- package/agents/python-reviewer.md +98 -98
- package/agents/pytorch-build-resolver.md +120 -120
- package/agents/refactor-cleaner.md +85 -85
- package/agents/rust-build-resolver.md +148 -148
- package/agents/rust-reviewer.md +94 -94
- package/agents/security-reviewer.md +108 -108
- package/agents/seo-specialist.md +59 -59
- package/agents/silent-failure-hunter.md +50 -50
- package/agents/tdd-guide.md +91 -91
- package/agents/type-design-analyzer.md +41 -41
- package/agents/typescript-reviewer.md +112 -112
- package/cli/commands/update.mjs +1 -1
- package/cli/utils/scaffold.mjs +53 -0
- package/docs/rules/agents.md +166 -50
- package/docs/rules/cpp/coding-style.md +44 -44
- package/docs/rules/cpp/hooks.md +39 -39
- package/docs/rules/cpp/patterns.md +51 -51
- package/docs/rules/cpp/security.md +51 -51
- package/docs/rules/cpp/testing.md +44 -44
- package/docs/rules/csharp/coding-style.md +72 -72
- package/docs/rules/csharp/hooks.md +25 -25
- package/docs/rules/csharp/patterns.md +50 -50
- package/docs/rules/csharp/security.md +58 -58
- package/docs/rules/csharp/testing.md +46 -46
- package/docs/rules/dart/coding-style.md +159 -159
- package/docs/rules/dart/hooks.md +66 -66
- package/docs/rules/dart/patterns.md +261 -261
- package/docs/rules/dart/security.md +135 -135
- package/docs/rules/dart/testing.md +215 -215
- package/docs/rules/golang/coding-style.md +32 -32
- package/docs/rules/golang/hooks.md +17 -17
- package/docs/rules/golang/patterns.md +45 -45
- package/docs/rules/golang/security.md +34 -34
- package/docs/rules/golang/testing.md +31 -31
- package/docs/rules/java/coding-style.md +114 -114
- package/docs/rules/java/hooks.md +18 -18
- package/docs/rules/java/patterns.md +146 -146
- package/docs/rules/java/security.md +100 -100
- package/docs/rules/java/testing.md +131 -131
- package/docs/rules/kotlin/coding-style.md +86 -86
- package/docs/rules/kotlin/hooks.md +17 -17
- package/docs/rules/kotlin/patterns.md +146 -146
- package/docs/rules/kotlin/security.md +82 -82
- package/docs/rules/kotlin/testing.md +128 -128
- package/docs/rules/perl/coding-style.md +46 -46
- package/docs/rules/perl/hooks.md +22 -22
- package/docs/rules/perl/patterns.md +76 -76
- package/docs/rules/perl/security.md +69 -69
- package/docs/rules/perl/testing.md +54 -54
- package/docs/rules/php/coding-style.md +40 -40
- package/docs/rules/php/hooks.md +24 -24
- package/docs/rules/php/patterns.md +33 -33
- package/docs/rules/php/security.md +37 -37
- package/docs/rules/php/testing.md +39 -39
- package/docs/rules/python/coding-style.md +42 -42
- package/docs/rules/python/hooks.md +19 -19
- package/docs/rules/python/patterns.md +39 -39
- package/docs/rules/python/security.md +30 -30
- package/docs/rules/python/testing.md +38 -38
- package/docs/rules/rust/coding-style.md +151 -151
- package/docs/rules/rust/hooks.md +16 -16
- package/docs/rules/rust/patterns.md +168 -168
- package/docs/rules/rust/security.md +141 -141
- package/docs/rules/rust/testing.md +154 -154
- package/docs/rules/swift/coding-style.md +47 -47
- package/docs/rules/swift/hooks.md +20 -20
- package/docs/rules/swift/patterns.md +66 -66
- package/docs/rules/swift/security.md +33 -33
- package/docs/rules/swift/testing.md +45 -45
- package/docs/rules/typescript/coding-style.md +199 -199
- package/docs/rules/typescript/hooks.md +22 -22
- package/docs/rules/typescript/patterns.md +52 -52
- package/docs/rules/typescript/security.md +28 -28
- package/docs/rules/typescript/testing.md +18 -18
- package/docs/rules/web/coding-style.md +96 -96
- package/docs/rules/web/design-quality.md +62 -62
- package/docs/rules/web/hooks.md +120 -120
- package/docs/rules/web/patterns.md +79 -79
- package/docs/rules/web/performance.md +64 -64
- package/docs/rules/web/security.md +57 -57
- package/docs/rules/web/testing.md +55 -55
- package/docs/templates/README.md +36 -36
- package/docs/templates/ai-project-final.md +124 -124
- package/docs/templates/ai-project.md +105 -105
- package/docs/templates/api.md +157 -157
- package/docs/templates/bug.md +62 -62
- package/docs/templates/code-review.md +87 -87
- package/docs/templates/generic.md +116 -116
- package/docs/templates/implementation-plan.md +1 -1
- package/docs/templates/meeting.md +68 -68
- package/docs/templates/prd.md +98 -98
- package/docs/templates/ui.md +134 -134
- package/docs/workflow-pipeline.md +11 -10
- package/package.json +40 -39
- package/scripts/hooks/checks/orchestration-artifacts.cjs +28 -23
- package/scripts/hooks/checks/workflow-state.cjs +4 -5
- package/scripts/orchestration/lib/orchestrator.cjs +344 -117
- package/scripts/orchestration/lib/validate.cjs +145 -0
- package/scripts/orchestration/session.cjs +88 -44
- package/skills/SUPERPOWERS-LICENSE +21 -21
- package/skills/ai-ml/fine-tuning-expert/SKILL.md +162 -162
- package/skills/ai-ml/fine-tuning-expert/references/dataset-preparation.md +540 -540
- package/skills/ai-ml/fine-tuning-expert/references/deployment-optimization.md +673 -673
- package/skills/ai-ml/fine-tuning-expert/references/evaluation-metrics.md +597 -597
- package/skills/ai-ml/fine-tuning-expert/references/hyperparameter-tuning.md +565 -565
- package/skills/ai-ml/fine-tuning-expert/references/lora-peft.md +347 -347
- package/skills/ai-ml/ml-pipeline/SKILL.md +159 -159
- package/skills/ai-ml/ml-pipeline/references/experiment-tracking.md +833 -833
- package/skills/ai-ml/ml-pipeline/references/feature-engineering.md +631 -631
- package/skills/ai-ml/ml-pipeline/references/model-validation.md +978 -978
- package/skills/ai-ml/ml-pipeline/references/pipeline-orchestration.md +907 -907
- package/skills/ai-ml/ml-pipeline/references/training-pipelines.md +782 -782
- package/skills/ai-ml/rag-architect/SKILL.md +194 -194
- package/skills/ai-ml/rag-architect/references/chunking-strategies.md +878 -878
- package/skills/ai-ml/rag-architect/references/embedding-models.md +561 -561
- package/skills/ai-ml/rag-architect/references/rag-evaluation.md +833 -833
- package/skills/ai-ml/rag-architect/references/retrieval-optimization.md +795 -795
- package/skills/ai-ml/rag-architect/references/vector-databases.md +589 -589
- package/skills/ai-ml/spark-engineer/SKILL.md +148 -148
- package/skills/ai-ml/spark-engineer/references/partitioning-caching.md +543 -543
- package/skills/ai-ml/spark-engineer/references/performance-tuning.md +544 -544
- package/skills/ai-ml/spark-engineer/references/rdd-operations.md +599 -599
- package/skills/ai-ml/spark-engineer/references/spark-sql-dataframes.md +474 -474
- package/skills/ai-ml/spark-engineer/references/streaming-patterns.md +786 -786
- package/skills/backend/api-designer/SKILL.md +217 -217
- package/skills/backend/api-designer/references/error-handling.md +541 -541
- package/skills/backend/api-designer/references/openapi.md +824 -824
- package/skills/backend/api-designer/references/pagination.md +494 -494
- package/skills/backend/api-designer/references/rest-patterns.md +335 -335
- package/skills/backend/api-designer/references/versioning.md +391 -391
- package/skills/backend/architecture-designer/SKILL.md +117 -117
- package/skills/backend/architecture-designer/references/adr-template.md +116 -116
- package/skills/backend/architecture-designer/references/architecture-patterns.md +111 -111
- package/skills/backend/architecture-designer/references/database-selection.md +102 -102
- package/skills/backend/architecture-designer/references/nfr-checklist.md +112 -112
- package/skills/backend/architecture-designer/references/system-design.md +100 -100
- package/skills/backend/code-documenter/SKILL.md +147 -147
- package/skills/backend/code-documenter/references/api-docs-fastapi-django.md +166 -166
- package/skills/backend/code-documenter/references/api-docs-nestjs-express.md +220 -220
- package/skills/backend/code-documenter/references/coverage-reports.md +125 -125
- package/skills/backend/code-documenter/references/documentation-systems.md +333 -333
- package/skills/backend/code-documenter/references/interactive-api-docs.md +531 -531
- package/skills/backend/code-documenter/references/python-docstrings.md +121 -121
- package/skills/backend/code-documenter/references/typescript-jsdoc.md +145 -145
- package/skills/backend/code-documenter/references/user-guides-tutorials.md +530 -530
- package/skills/backend/debugging-wizard/SKILL.md +105 -105
- package/skills/backend/debugging-wizard/references/common-patterns.md +132 -132
- package/skills/backend/debugging-wizard/references/debugging-tools.md +140 -140
- package/skills/backend/debugging-wizard/references/quick-fixes.md +177 -177
- package/skills/backend/debugging-wizard/references/strategies.md +142 -142
- package/skills/backend/debugging-wizard/references/systematic-debugging.md +367 -367
- package/skills/backend/feature-forge/SKILL.md +98 -98
- package/skills/backend/feature-forge/references/acceptance-criteria.md +104 -104
- package/skills/backend/feature-forge/references/ears-syntax.md +99 -99
- package/skills/backend/feature-forge/references/interview-questions.md +150 -150
- package/skills/backend/feature-forge/references/pre-discovery-subagents.md +54 -54
- package/skills/backend/feature-forge/references/specification-template.md +103 -103
- package/skills/backend/fullstack-guardian/SKILL.md +105 -105
- package/skills/backend/fullstack-guardian/references/api-design-standards.md +307 -307
- package/skills/backend/fullstack-guardian/references/architecture-decisions.md +350 -350
- package/skills/backend/fullstack-guardian/references/backend-patterns.md +237 -237
- package/skills/backend/fullstack-guardian/references/common-patterns.md +134 -134
- package/skills/backend/fullstack-guardian/references/deliverables-checklist.md +354 -354
- package/skills/backend/fullstack-guardian/references/design-template.md +91 -91
- package/skills/backend/fullstack-guardian/references/error-handling.md +135 -135
- package/skills/backend/fullstack-guardian/references/frontend-patterns.md +340 -340
- package/skills/backend/fullstack-guardian/references/integration-patterns.md +333 -333
- package/skills/backend/fullstack-guardian/references/security-checklist.md +106 -106
- package/skills/backend/graphql-architect/SKILL.md +146 -146
- package/skills/backend/graphql-architect/references/federation.md +418 -418
- package/skills/backend/graphql-architect/references/migration-from-rest.md +1141 -1141
- package/skills/backend/graphql-architect/references/resolvers.md +425 -425
- package/skills/backend/graphql-architect/references/schema-design.md +393 -393
- package/skills/backend/graphql-architect/references/security.md +569 -569
- package/skills/backend/graphql-architect/references/subscriptions.md +510 -510
- package/skills/backend/legacy-modernizer/SKILL.md +137 -137
- package/skills/backend/legacy-modernizer/references/legacy-testing.md +381 -381
- package/skills/backend/legacy-modernizer/references/migration-strategies.md +423 -423
- package/skills/backend/legacy-modernizer/references/refactoring-patterns.md +395 -395
- package/skills/backend/legacy-modernizer/references/strangler-fig-pattern.md +281 -281
- package/skills/backend/legacy-modernizer/references/system-assessment.md +487 -487
- package/skills/backend/microservices-architect/SKILL.md +164 -164
- package/skills/backend/microservices-architect/references/communication.md +499 -499
- package/skills/backend/microservices-architect/references/data.md +721 -721
- package/skills/backend/microservices-architect/references/decomposition.md +344 -344
- package/skills/backend/microservices-architect/references/observability.md +805 -805
- package/skills/backend/microservices-architect/references/patterns.md +603 -603
- package/skills/database/database-optimizer/SKILL.md +147 -147
- package/skills/database/database-optimizer/references/index-strategies.md +331 -331
- package/skills/database/database-optimizer/references/monitoring-analysis.md +501 -501
- package/skills/database/database-optimizer/references/mysql-tuning.md +452 -452
- package/skills/database/database-optimizer/references/postgresql-tuning.md +413 -413
- package/skills/database/database-optimizer/references/query-optimization.md +251 -251
- package/skills/database/postgres-pro/SKILL.md +152 -152
- package/skills/database/postgres-pro/references/extensions.md +404 -404
- package/skills/database/postgres-pro/references/jsonb.md +321 -321
- package/skills/database/postgres-pro/references/maintenance.md +481 -481
- package/skills/database/postgres-pro/references/performance.md +265 -265
- package/skills/database/postgres-pro/references/replication.md +446 -446
- package/skills/database/sql-pro/SKILL.md +129 -129
- package/skills/database/sql-pro/references/database-design.md +402 -402
- package/skills/database/sql-pro/references/dialect-differences.md +419 -419
- package/skills/database/sql-pro/references/optimization.md +384 -384
- package/skills/database/sql-pro/references/query-patterns.md +285 -285
- package/skills/database/sql-pro/references/window-functions.md +328 -328
- package/skills/dotnet/csharp-developer/SKILL.md +125 -125
- package/skills/dotnet/csharp-developer/references/aspnet-core.md +394 -394
- package/skills/dotnet/csharp-developer/references/blazor.md +553 -553
- package/skills/dotnet/csharp-developer/references/entity-framework.md +409 -409
- package/skills/dotnet/csharp-developer/references/modern-csharp.md +248 -248
- package/skills/dotnet/csharp-developer/references/performance.md +498 -498
- package/skills/dotnet/dotnet-core-expert/SKILL.md +138 -138
- package/skills/dotnet/dotnet-core-expert/references/authentication.md +546 -546
- package/skills/dotnet/dotnet-core-expert/references/clean-architecture.md +455 -455
- package/skills/dotnet/dotnet-core-expert/references/cloud-native.md +548 -548
- package/skills/dotnet/dotnet-core-expert/references/entity-framework.md +440 -440
- package/skills/dotnet/dotnet-core-expert/references/minimal-apis.md +319 -319
- package/skills/frontend/angular-architect/SKILL.md +152 -152
- package/skills/frontend/angular-architect/references/components.md +297 -297
- package/skills/frontend/angular-architect/references/ngrx.md +401 -401
- package/skills/frontend/angular-architect/references/routing.md +361 -361
- package/skills/frontend/angular-architect/references/rxjs.md +319 -319
- package/skills/frontend/angular-architect/references/testing.md +405 -405
- package/skills/frontend/design-commands/design.md +91 -91
- package/skills/frontend/design-commands/handoff.md +97 -97
- package/skills/frontend/design-commands/prototype.md +120 -120
- package/skills/frontend/design-commands/spec.md +160 -160
- package/skills/frontend/design-commands/style.md +78 -78
- package/skills/frontend/flutter-expert/SKILL.md +138 -138
- package/skills/frontend/flutter-expert/references/bloc-state.md +259 -259
- package/skills/frontend/flutter-expert/references/gorouter-navigation.md +119 -119
- package/skills/frontend/flutter-expert/references/performance.md +99 -99
- package/skills/frontend/flutter-expert/references/project-structure.md +118 -118
- package/skills/frontend/flutter-expert/references/riverpod-state.md +130 -130
- package/skills/frontend/flutter-expert/references/widget-patterns.md +123 -123
- package/skills/frontend/nextjs-developer/SKILL.md +143 -143
- package/skills/frontend/nextjs-developer/references/app-router.md +311 -311
- package/skills/frontend/nextjs-developer/references/data-fetching.md +482 -482
- package/skills/frontend/nextjs-developer/references/deployment.md +545 -545
- package/skills/frontend/nextjs-developer/references/server-actions.md +462 -462
- package/skills/frontend/nextjs-developer/references/server-components.md +384 -384
- package/skills/frontend/react-expert/SKILL.md +149 -149
- package/skills/frontend/react-expert/references/hooks-patterns.md +162 -162
- package/skills/frontend/react-expert/references/migration-class-to-modern.md +1119 -1119
- package/skills/frontend/react-expert/references/performance.md +168 -168
- package/skills/frontend/react-expert/references/react-19-features.md +174 -174
- package/skills/frontend/react-expert/references/server-components.md +143 -143
- package/skills/frontend/react-expert/references/state-management.md +171 -171
- package/skills/frontend/react-expert/references/testing-react.md +174 -174
- package/skills/frontend/react-native-expert/SKILL.md +185 -185
- package/skills/frontend/react-native-expert/references/expo-router.md +187 -187
- package/skills/frontend/react-native-expert/references/list-optimization.md +204 -204
- package/skills/frontend/react-native-expert/references/platform-handling.md +188 -188
- package/skills/frontend/react-native-expert/references/project-structure.md +171 -171
- package/skills/frontend/react-native-expert/references/storage-hooks.md +173 -173
- package/skills/frontend/senior-frontend/SKILL.md +477 -477
- package/skills/frontend/senior-frontend/references/frontend_best_practices.md +806 -806
- package/skills/frontend/senior-frontend/references/nextjs_optimization_guide.md +724 -724
- package/skills/frontend/senior-frontend/references/react_patterns.md +746 -746
- package/skills/frontend/senior-frontend/scripts/bundle_analyzer.py +407 -407
- package/skills/frontend/senior-frontend/scripts/component_generator.py +329 -329
- package/skills/frontend/senior-frontend/scripts/frontend_scaffolder.py +1005 -1005
- package/skills/frontend/ui-ux-pro-max/SKILL.md +386 -386
- package/skills/frontend/ui-ux-pro-max/data/charts.csv +26 -26
- package/skills/frontend/ui-ux-pro-max/data/colors.csv +97 -97
- package/skills/frontend/ui-ux-pro-max/data/icons.csv +101 -101
- package/skills/frontend/ui-ux-pro-max/data/landing.csv +31 -31
- package/skills/frontend/ui-ux-pro-max/data/products.csv +96 -96
- package/skills/frontend/ui-ux-pro-max/data/react-performance.csv +45 -45
- package/skills/frontend/ui-ux-pro-max/data/stacks/astro.csv +54 -54
- package/skills/frontend/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
- package/skills/frontend/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
- package/skills/frontend/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
- package/skills/frontend/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
- package/skills/frontend/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
- package/skills/frontend/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
- package/skills/frontend/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
- package/skills/frontend/ui-ux-pro-max/data/stacks/react.csv +54 -54
- package/skills/frontend/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
- package/skills/frontend/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
- package/skills/frontend/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
- package/skills/frontend/ui-ux-pro-max/data/stacks/vue.csv +50 -50
- package/skills/frontend/ui-ux-pro-max/data/styles.csv +68 -68
- package/skills/frontend/ui-ux-pro-max/data/typography.csv +57 -57
- package/skills/frontend/ui-ux-pro-max/data/ui-reasoning.csv +101 -101
- package/skills/frontend/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
- package/skills/frontend/ui-ux-pro-max/data/web-interface.csv +31 -31
- package/skills/frontend/ui-ux-pro-max/scripts/core.py +253 -253
- package/skills/frontend/ui-ux-pro-max/scripts/design_system.py +1067 -1067
- package/skills/frontend/ui-ux-pro-max/scripts/search.py +114 -114
- package/skills/frontend/vue-expert/SKILL.md +98 -98
- package/skills/frontend/vue-expert/references/build-tooling.md +480 -480
- package/skills/frontend/vue-expert/references/components.md +448 -448
- package/skills/frontend/vue-expert/references/composition-api.md +299 -299
- package/skills/frontend/vue-expert/references/mobile-hybrid.md +636 -636
- package/skills/frontend/vue-expert/references/nuxt.md +669 -669
- package/skills/frontend/vue-expert/references/state-management.md +449 -449
- package/skills/frontend/vue-expert/references/typescript.md +584 -584
- package/skills/frontend/vue-expert-js/SKILL.md +167 -167
- package/skills/frontend/vue-expert-js/references/component-architecture.md +219 -219
- package/skills/frontend/vue-expert-js/references/composables-patterns.md +183 -183
- package/skills/frontend/vue-expert-js/references/jsdoc-typing.md +535 -535
- package/skills/frontend/vue-expert-js/references/state-management.md +249 -249
- package/skills/frontend/vue-expert-js/references/testing-patterns.md +237 -237
- package/skills/go-rust-cpp/cpp-pro/SKILL.md +115 -115
- package/skills/go-rust-cpp/cpp-pro/references/build-tooling.md +440 -440
- package/skills/go-rust-cpp/cpp-pro/references/concurrency.md +437 -437
- package/skills/go-rust-cpp/cpp-pro/references/memory-performance.md +397 -397
- package/skills/go-rust-cpp/cpp-pro/references/modern-cpp.md +304 -304
- package/skills/go-rust-cpp/cpp-pro/references/templates.md +357 -357
- package/skills/go-rust-cpp/golang-pro/SKILL.md +122 -122
- package/skills/go-rust-cpp/golang-pro/references/concurrency.md +329 -329
- package/skills/go-rust-cpp/golang-pro/references/generics.md +442 -442
- package/skills/go-rust-cpp/golang-pro/references/interfaces.md +432 -432
- package/skills/go-rust-cpp/golang-pro/references/project-structure.md +477 -477
- package/skills/go-rust-cpp/golang-pro/references/testing.md +451 -451
- package/skills/go-rust-cpp/rust-engineer/SKILL.md +167 -167
- package/skills/go-rust-cpp/rust-engineer/references/async.md +458 -458
- package/skills/go-rust-cpp/rust-engineer/references/error-handling.md +334 -334
- package/skills/go-rust-cpp/rust-engineer/references/ownership.md +278 -278
- package/skills/go-rust-cpp/rust-engineer/references/testing.md +470 -470
- package/skills/go-rust-cpp/rust-engineer/references/traits.md +413 -413
- package/skills/infra/cli-developer/SKILL.md +113 -113
- package/skills/infra/cli-developer/references/design-patterns.md +221 -221
- package/skills/infra/cli-developer/references/go-cli.md +540 -540
- package/skills/infra/cli-developer/references/node-cli.md +383 -383
- package/skills/infra/cli-developer/references/python-cli.md +422 -422
- package/skills/infra/cli-developer/references/ux-patterns.md +448 -448
- package/skills/infra/cloud-architect/SKILL.md +216 -216
- package/skills/infra/cloud-architect/references/aws.md +394 -394
- package/skills/infra/cloud-architect/references/azure.md +562 -562
- package/skills/infra/cloud-architect/references/cost.md +582 -582
- package/skills/infra/cloud-architect/references/gcp.md +633 -633
- package/skills/infra/cloud-architect/references/multi-cloud.md +483 -483
- package/skills/infra/devops-engineer/SKILL.md +144 -144
- package/skills/infra/devops-engineer/references/deployment-strategies.md +241 -241
- package/skills/infra/devops-engineer/references/docker-patterns.md +113 -113
- package/skills/infra/devops-engineer/references/github-actions.md +139 -139
- package/skills/infra/devops-engineer/references/incident-response.md +331 -331
- package/skills/infra/devops-engineer/references/kubernetes.md +154 -154
- package/skills/infra/devops-engineer/references/platform-engineering.md +417 -417
- package/skills/infra/devops-engineer/references/release-automation.md +527 -527
- package/skills/infra/devops-engineer/references/terraform-iac.md +141 -141
- package/skills/infra/kubernetes-specialist/SKILL.md +241 -241
- package/skills/infra/kubernetes-specialist/references/configuration.md +452 -452
- package/skills/infra/kubernetes-specialist/references/cost-optimization.md +458 -458
- package/skills/infra/kubernetes-specialist/references/custom-operators.md +563 -563
- package/skills/infra/kubernetes-specialist/references/gitops.md +530 -530
- package/skills/infra/kubernetes-specialist/references/helm-charts.md +912 -912
- package/skills/infra/kubernetes-specialist/references/multi-cluster.md +507 -507
- package/skills/infra/kubernetes-specialist/references/networking.md +447 -447
- package/skills/infra/kubernetes-specialist/references/service-mesh.md +459 -459
- package/skills/infra/kubernetes-specialist/references/storage.md +535 -535
- package/skills/infra/kubernetes-specialist/references/troubleshooting.md +414 -414
- package/skills/infra/kubernetes-specialist/references/workloads.md +377 -377
- package/skills/infra/mcp-developer/SKILL.md +143 -143
- package/skills/infra/mcp-developer/references/protocol.md +244 -244
- package/skills/infra/mcp-developer/references/python-sdk.md +367 -367
- package/skills/infra/mcp-developer/references/resources.md +554 -554
- package/skills/infra/mcp-developer/references/tools.md +480 -480
- package/skills/infra/mcp-developer/references/typescript-sdk.md +350 -350
- package/skills/infra/monitoring-expert/SKILL.md +176 -176
- package/skills/infra/monitoring-expert/references/alerting-rules.md +141 -141
- package/skills/infra/monitoring-expert/references/application-profiling.md +331 -331
- package/skills/infra/monitoring-expert/references/capacity-planning.md +344 -344
- package/skills/infra/monitoring-expert/references/dashboards.md +126 -126
- package/skills/infra/monitoring-expert/references/opentelemetry.md +123 -123
- package/skills/infra/monitoring-expert/references/performance-testing.md +269 -269
- package/skills/infra/monitoring-expert/references/prometheus-metrics.md +136 -136
- package/skills/infra/monitoring-expert/references/structured-logging.md +142 -142
- package/skills/infra/sre-engineer/SKILL.md +181 -181
- package/skills/infra/sre-engineer/references/automation-toil.md +492 -492
- package/skills/infra/sre-engineer/references/error-budget-policy.md +334 -334
- package/skills/infra/sre-engineer/references/incident-chaos.md +576 -576
- package/skills/infra/sre-engineer/references/monitoring-alerting.md +424 -424
- package/skills/infra/sre-engineer/references/slo-sli-management.md +238 -238
- package/skills/infra/terraform-engineer/SKILL.md +143 -143
- package/skills/infra/terraform-engineer/references/best-practices.md +583 -583
- package/skills/infra/terraform-engineer/references/module-patterns.md +297 -297
- package/skills/infra/terraform-engineer/references/providers.md +452 -452
- package/skills/infra/terraform-engineer/references/state-management.md +371 -371
- package/skills/infra/terraform-engineer/references/testing.md +486 -486
- package/skills/infra/websocket-engineer/SKILL.md +168 -168
- package/skills/infra/websocket-engineer/references/alternatives.md +391 -391
- package/skills/infra/websocket-engineer/references/patterns.md +400 -400
- package/skills/infra/websocket-engineer/references/protocol.md +195 -195
- package/skills/infra/websocket-engineer/references/scaling.md +333 -333
- package/skills/infra/websocket-engineer/references/security.md +474 -474
- package/skills/java/java-architect/SKILL.md +132 -132
- package/skills/java/java-architect/references/jpa-optimization.md +393 -393
- package/skills/java/java-architect/references/reactive-webflux.md +356 -356
- package/skills/java/java-architect/references/spring-boot-setup.md +269 -269
- package/skills/java/java-architect/references/spring-security.md +445 -445
- package/skills/java/java-architect/references/testing-patterns.md +500 -500
- package/skills/java/kotlin-specialist/SKILL.md +147 -147
- package/skills/java/kotlin-specialist/references/android-compose.md +419 -419
- package/skills/java/kotlin-specialist/references/coroutines-flow.md +276 -276
- package/skills/java/kotlin-specialist/references/dsl-idioms.md +421 -421
- package/skills/java/kotlin-specialist/references/ktor-server.md +426 -426
- package/skills/java/kotlin-specialist/references/multiplatform-kmp.md +380 -380
- package/skills/java/spring-boot-engineer/SKILL.md +195 -195
- package/skills/java/spring-boot-engineer/references/cloud.md +498 -498
- package/skills/java/spring-boot-engineer/references/data.md +381 -381
- package/skills/java/spring-boot-engineer/references/security.md +459 -459
- package/skills/java/spring-boot-engineer/references/testing.md +545 -545
- package/skills/java/spring-boot-engineer/references/web.md +295 -295
- package/skills/javascript/javascript-pro/SKILL.md +132 -132
- package/skills/javascript/javascript-pro/references/async-patterns.md +334 -334
- package/skills/javascript/javascript-pro/references/browser-apis.md +398 -398
- package/skills/javascript/javascript-pro/references/modern-syntax.md +272 -272
- package/skills/javascript/javascript-pro/references/modules.md +357 -357
- package/skills/javascript/javascript-pro/references/node-essentials.md +471 -471
- package/skills/javascript/nestjs-expert/SKILL.md +206 -206
- package/skills/javascript/nestjs-expert/references/authentication.md +166 -166
- package/skills/javascript/nestjs-expert/references/controllers-routing.md +111 -111
- package/skills/javascript/nestjs-expert/references/dtos-validation.md +153 -153
- package/skills/javascript/nestjs-expert/references/migration-from-express.md +1237 -1237
- package/skills/javascript/nestjs-expert/references/services-di.md +140 -140
- package/skills/javascript/nestjs-expert/references/testing-patterns.md +186 -186
- package/skills/javascript/typescript-pro/SKILL.md +145 -145
- package/skills/javascript/typescript-pro/references/advanced-types.md +259 -259
- package/skills/javascript/typescript-pro/references/configuration.md +445 -445
- package/skills/javascript/typescript-pro/references/patterns.md +484 -484
- package/skills/javascript/typescript-pro/references/type-guards.md +352 -352
- package/skills/javascript/typescript-pro/references/utility-types.md +329 -329
- package/skills/php/laravel-specialist/SKILL.md +262 -262
- package/skills/php/laravel-specialist/references/eloquent.md +351 -351
- package/skills/php/laravel-specialist/references/livewire.md +512 -512
- package/skills/php/laravel-specialist/references/queues.md +423 -423
- package/skills/php/laravel-specialist/references/routing.md +362 -362
- package/skills/php/laravel-specialist/references/testing.md +522 -522
- package/skills/php/php-pro/SKILL.md +206 -206
- package/skills/php/php-pro/references/async-patterns.md +412 -412
- package/skills/php/php-pro/references/laravel-patterns.md +377 -377
- package/skills/php/php-pro/references/modern-php-features.md +323 -323
- package/skills/php/php-pro/references/symfony-patterns.md +466 -466
- package/skills/php/php-pro/references/testing-quality.md +466 -466
- package/skills/product/competitive-analysis/SKILL.md +257 -257
- package/skills/product/meeting-notes/SKILL.md +266 -266
- package/skills/product/prd-template/SKILL.md +150 -150
- package/skills/product/stakeholder-update/SKILL.md +225 -225
- package/skills/product/user-research-synthesis/SKILL.md +235 -235
- package/skills/python/django-expert/SKILL.md +162 -162
- package/skills/python/django-expert/references/authentication.md +145 -145
- package/skills/python/django-expert/references/drf-serializers.md +148 -148
- package/skills/python/django-expert/references/models-orm.md +151 -151
- package/skills/python/django-expert/references/testing-django.md +204 -204
- package/skills/python/django-expert/references/viewsets-views.md +153 -153
- package/skills/python/fastapi-expert/SKILL.md +185 -185
- package/skills/python/fastapi-expert/references/async-sqlalchemy.md +146 -146
- package/skills/python/fastapi-expert/references/authentication.md +159 -159
- package/skills/python/fastapi-expert/references/endpoints-routing.md +142 -142
- package/skills/python/fastapi-expert/references/migration-from-django.md +996 -996
- package/skills/python/fastapi-expert/references/pydantic-v2.md +135 -135
- package/skills/python/fastapi-expert/references/testing-async.md +159 -159
- package/skills/python/pandas-pro/SKILL.md +178 -178
- package/skills/python/pandas-pro/references/aggregation-groupby.md +545 -545
- package/skills/python/pandas-pro/references/data-cleaning.md +500 -500
- package/skills/python/pandas-pro/references/dataframe-operations.md +420 -420
- package/skills/python/pandas-pro/references/merging-joining.md +596 -596
- package/skills/python/pandas-pro/references/performance-optimization.md +597 -597
- package/skills/python/python-pro/SKILL.md +177 -177
- package/skills/python/python-pro/references/async-patterns.md +356 -356
- package/skills/python/python-pro/references/packaging.md +460 -460
- package/skills/python/python-pro/references/standard-library.md +378 -378
- package/skills/python/python-pro/references/testing.md +404 -404
- package/skills/python/python-pro/references/type-system.md +290 -290
- package/skills/quality/chaos-engineer/SKILL.md +182 -182
- package/skills/quality/chaos-engineer/references/chaos-tools.md +511 -511
- package/skills/quality/chaos-engineer/references/experiment-design.md +229 -229
- package/skills/quality/chaos-engineer/references/game-days.md +434 -434
- package/skills/quality/chaos-engineer/references/infrastructure-chaos.md +348 -348
- package/skills/quality/chaos-engineer/references/kubernetes-chaos.md +432 -432
- package/skills/quality/code-reviewer/SKILL.md +119 -119
- package/skills/quality/code-reviewer/references/common-issues.md +142 -142
- package/skills/quality/code-reviewer/references/feedback-examples.md +144 -144
- package/skills/quality/code-reviewer/references/receiving-feedback.md +238 -238
- package/skills/quality/code-reviewer/references/report-template.md +109 -109
- package/skills/quality/code-reviewer/references/review-checklist.md +88 -88
- package/skills/quality/code-reviewer/references/spec-compliance-review.md +258 -258
- package/skills/quality/playwright-expert/SKILL.md +169 -169
- package/skills/quality/playwright-expert/references/api-mocking.md +140 -140
- package/skills/quality/playwright-expert/references/configuration.md +155 -155
- package/skills/quality/playwright-expert/references/debugging-flaky.md +150 -150
- package/skills/quality/playwright-expert/references/page-object-model.md +152 -152
- package/skills/quality/playwright-expert/references/selectors-locators.md +119 -119
- package/skills/quality/secure-code-guardian/SKILL.md +191 -191
- package/skills/quality/secure-code-guardian/references/authentication.md +136 -136
- package/skills/quality/secure-code-guardian/references/input-validation.md +146 -146
- package/skills/quality/secure-code-guardian/references/owasp-prevention.md +135 -135
- package/skills/quality/secure-code-guardian/references/security-headers.md +133 -133
- package/skills/quality/secure-code-guardian/references/xss-csrf.md +157 -157
- package/skills/quality/security-reviewer/SKILL.md +103 -103
- package/skills/quality/security-reviewer/references/infrastructure-security.md +268 -268
- package/skills/quality/security-reviewer/references/penetration-testing.md +268 -268
- package/skills/quality/security-reviewer/references/report-template.md +170 -170
- package/skills/quality/security-reviewer/references/sast-tools.md +117 -117
- package/skills/quality/security-reviewer/references/secret-scanning.md +125 -125
- package/skills/quality/security-reviewer/references/vulnerability-patterns.md +152 -152
- package/skills/quality/senior-qa/README.md +196 -196
- package/skills/quality/senior-qa/SKILL.md +399 -399
- package/skills/quality/senior-qa/references/qa_best_practices.md +964 -964
- package/skills/quality/senior-qa/references/test_automation_patterns.md +1009 -1009
- package/skills/quality/senior-qa/references/testing_strategies.md +649 -649
- package/skills/quality/senior-qa/scripts/coverage_analyzer.py +836 -836
- package/skills/quality/senior-qa/scripts/e2e_test_scaffolder.py +820 -820
- package/skills/quality/senior-qa/scripts/test_suite_generator.py +605 -605
- package/skills/quality/tdd-guide/HOW_TO_USE.md +313 -313
- package/skills/quality/tdd-guide/README.md +680 -680
- package/skills/quality/tdd-guide/SKILL.md +122 -122
- package/skills/quality/tdd-guide/assets/expected_output.json +77 -77
- package/skills/quality/tdd-guide/assets/sample_input_python.json +39 -39
- package/skills/quality/tdd-guide/assets/sample_input_typescript.json +36 -36
- package/skills/quality/tdd-guide/references/ci-integration.md +195 -195
- package/skills/quality/tdd-guide/references/framework-guide.md +206 -206
- package/skills/quality/tdd-guide/references/tdd-best-practices.md +128 -128
- package/skills/quality/tdd-guide/scripts/coverage_analyzer.py +434 -434
- package/skills/quality/tdd-guide/scripts/fixture_generator.py +440 -440
- package/skills/quality/tdd-guide/scripts/format_detector.py +384 -384
- package/skills/quality/tdd-guide/scripts/framework_adapter.py +428 -428
- package/skills/quality/tdd-guide/scripts/metrics_calculator.py +456 -456
- package/skills/quality/tdd-guide/scripts/output_formatter.py +354 -354
- package/skills/quality/tdd-guide/scripts/tdd_workflow.py +474 -474
- package/skills/quality/tdd-guide/scripts/test_generator.py +438 -438
- package/skills/quality/test-master/SKILL.md +94 -94
- package/skills/quality/test-master/references/automation-frameworks.md +294 -294
- package/skills/quality/test-master/references/e2e-testing.md +128 -128
- package/skills/quality/test-master/references/integration-testing.md +120 -120
- package/skills/quality/test-master/references/performance-testing.md +118 -118
- package/skills/quality/test-master/references/qa-methodology.md +247 -247
- package/skills/quality/test-master/references/security-testing.md +127 -127
- package/skills/quality/test-master/references/tdd-iron-laws.md +174 -174
- package/skills/quality/test-master/references/test-reports.md +104 -104
- package/skills/quality/test-master/references/testing-anti-patterns.md +231 -231
- package/skills/quality/test-master/references/unit-testing.md +113 -113
- package/skills/ruby/rails-expert/SKILL.md +154 -154
- package/skills/ruby/rails-expert/references/active-record.md +244 -244
- package/skills/ruby/rails-expert/references/api-development.md +401 -401
- package/skills/ruby/rails-expert/references/background-jobs.md +272 -272
- package/skills/ruby/rails-expert/references/hotwire-turbo.md +228 -228
- package/skills/ruby/rails-expert/references/rspec-testing.md +367 -367
- package/skills/swift/swift-expert/SKILL.md +163 -163
- package/skills/swift/swift-expert/references/async-concurrency.md +360 -360
- package/skills/swift/swift-expert/references/memory-performance.md +377 -377
- package/skills/swift/swift-expert/references/protocol-oriented.md +354 -354
- package/skills/swift/swift-expert/references/swiftui-patterns.md +291 -291
- package/skills/swift/swift-expert/references/testing-patterns.md +399 -399
- package/skills/workflow/brainstorming/SKILL.md +164 -164
- package/skills/workflow/brainstorming/scripts/frame-template.html +214 -214
- package/skills/workflow/brainstorming/scripts/helper.js +88 -88
- package/skills/workflow/brainstorming/scripts/server.cjs +354 -354
- package/skills/workflow/brainstorming/scripts/start-server.sh +148 -148
- package/skills/workflow/brainstorming/scripts/stop-server.sh +56 -56
- package/skills/workflow/brainstorming/spec-document-reviewer-prompt.md +49 -49
- package/skills/workflow/brainstorming/visual-companion.md +287 -287
- package/skills/workflow/documentation/SKILL.md +45 -45
- package/skills/workflow/entropy-management/SKILL.md +115 -115
- package/skills/workflow/executing-plans/SKILL.md +70 -70
- package/skills/workflow/finishing-a-development-branch/SKILL.md +200 -200
- package/skills/workflow/receiving-code-review/SKILL.md +213 -213
- package/skills/workflow/requesting-code-review/SKILL.md +105 -105
- package/skills/workflow/requesting-code-review/code-reviewer.md +146 -146
- package/skills/workflow/requirement-engineering/SKILL.md +111 -111
- package/skills/workflow/systematic-debugging/CREATION-LOG.md +119 -119
- package/skills/workflow/systematic-debugging/SKILL.md +296 -296
- package/skills/workflow/systematic-debugging/condition-based-waiting-example.ts +158 -158
- package/skills/workflow/systematic-debugging/condition-based-waiting.md +115 -115
- package/skills/workflow/systematic-debugging/defense-in-depth.md +122 -122
- package/skills/workflow/systematic-debugging/find-polluter.sh +63 -63
- package/skills/workflow/systematic-debugging/root-cause-tracing.md +169 -169
- package/skills/workflow/systematic-debugging/test-academic.md +14 -14
- package/skills/workflow/systematic-debugging/test-pressure-1.md +58 -58
- package/skills/workflow/systematic-debugging/test-pressure-2.md +68 -68
- package/skills/workflow/systematic-debugging/test-pressure-3.md +69 -69
- package/skills/workflow/using-git-worktrees/SKILL.md +218 -218
- package/skills/workflow/verification-before-completion/SKILL.md +139 -139
- package/skills/workflow/writing-plans/SKILL.md +151 -151
- package/skills/workflow/writing-plans/plan-document-reviewer-prompt.md +49 -49
- package/skills/workflow/writing-skills/SKILL.md +655 -655
- package/skills/workflow/writing-skills/anthropic-best-practices.md +1150 -1150
- package/skills/workflow/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -189
- package/skills/workflow/writing-skills/persuasion-principles.md +187 -187
- package/skills/workflow/writing-skills/render-graphs.js +168 -168
- package/skills/workflow/writing-skills/testing-skills-with-subagents.md +384 -384
|
@@ -1,350 +1,350 @@
|
|
|
1
|
-
# Architecture Decision Guide
|
|
2
|
-
|
|
3
|
-
## Technology Selection Matrix
|
|
4
|
-
|
|
5
|
-
### Backend Framework Selection
|
|
6
|
-
|
|
7
|
-
| Framework | Best For | Pros | Cons |
|
|
8
|
-
|-----------|----------|------|------|
|
|
9
|
-
| **NestJS** | Enterprise apps, microservices | TypeScript-first, dependency injection, excellent docs | Opinionated, steeper learning curve |
|
|
10
|
-
| **Express** | Simple APIs, flexibility | Minimal, huge ecosystem, well-known | Manual structure, less opinionated |
|
|
11
|
-
| **Fastify** | High performance APIs | Fast, schema validation, plugins | Smaller ecosystem than Express |
|
|
12
|
-
| **FastAPI** | Python APIs, ML integration | Auto-docs, type hints, fast | Python ecosystem only |
|
|
13
|
-
| **Go/Gin** | High-performance services | Compiled, concurrent, fast | Verbose, less rapid development |
|
|
14
|
-
|
|
15
|
-
**Decision criteria:**
|
|
16
|
-
- Team expertise: Choose familiar stack
|
|
17
|
-
- Performance needs: Go/Fastify for high throughput
|
|
18
|
-
- Type safety: NestJS/FastAPI for TypeScript/Python
|
|
19
|
-
- Flexibility: Express for custom architectures
|
|
20
|
-
|
|
21
|
-
### Frontend Framework Selection
|
|
22
|
-
|
|
23
|
-
| Framework | Best For | Pros | Cons |
|
|
24
|
-
|-----------|----------|------|------|
|
|
25
|
-
| **React** | Most use cases, large apps | Huge ecosystem, flexible, well-supported | Not batteries-included, decision fatigue |
|
|
26
|
-
| **Vue** | Progressive enhancement | Gentle learning curve, good docs, reactive | Smaller ecosystem than React |
|
|
27
|
-
| **Angular** | Enterprise apps | Complete framework, TypeScript native | Heavy, opinionated, steep curve |
|
|
28
|
-
| **Svelte** | Performance-critical apps | Compiled, no virtual DOM, small bundle | Smaller ecosystem, fewer resources |
|
|
29
|
-
| **Next.js** | SSR/SSG apps, SEO | React + routing + SSR, excellent DX | Vercel-centric, complexity for simple apps |
|
|
30
|
-
|
|
31
|
-
**Decision criteria:**
|
|
32
|
-
- SEO requirements: Next.js/Nuxt for SSR
|
|
33
|
-
- Team size: Angular for large teams, Vue for small
|
|
34
|
-
- Ecosystem: React for maximum third-party support
|
|
35
|
-
- Performance: Svelte for minimal bundle size
|
|
36
|
-
|
|
37
|
-
### Database Selection
|
|
38
|
-
|
|
39
|
-
| Database | Best For | Pros | Cons |
|
|
40
|
-
|----------|----------|------|------|
|
|
41
|
-
| **PostgreSQL** | Relational data, ACID | Feature-rich, reliable, JSON support | Complex queries can be slow |
|
|
42
|
-
| **MySQL** | Read-heavy workloads | Mature, fast reads, replication | Less feature-rich than Postgres |
|
|
43
|
-
| **MongoDB** | Flexible schemas, rapid dev | Schema-less, horizontal scaling | No transactions (old versions) |
|
|
44
|
-
| **Redis** | Caching, sessions, queues | Extremely fast, versatile | In-memory only, data structures limited |
|
|
45
|
-
| **DynamoDB** | AWS serverless, high scale | Managed, predictable performance | Vendor lock-in, query limitations |
|
|
46
|
-
|
|
47
|
-
**Decision criteria:**
|
|
48
|
-
- ACID requirements: PostgreSQL/MySQL
|
|
49
|
-
- Flexible schemas: MongoDB
|
|
50
|
-
- Caching layer: Redis (always)
|
|
51
|
-
- AWS serverless: DynamoDB
|
|
52
|
-
- Default choice: PostgreSQL (most versatile)
|
|
53
|
-
|
|
54
|
-
### State Management (Frontend)
|
|
55
|
-
|
|
56
|
-
| Solution | Best For | Complexity | Bundle Size |
|
|
57
|
-
|----------|----------|------------|-------------|
|
|
58
|
-
| **React Context** | Simple state, few updates | Low | None (built-in) |
|
|
59
|
-
| **Zustand** | Medium apps, simplicity | Low | 1KB |
|
|
60
|
-
| **Redux Toolkit** | Complex state, time-travel debug | Medium | 15KB |
|
|
61
|
-
| **Jotai/Recoil** | Atomic state, derived state | Medium | 3KB |
|
|
62
|
-
| **MobX** | Observable state, OOP style | Medium | 16KB |
|
|
63
|
-
| **TanStack Query** | Server state only | Low | 12KB |
|
|
64
|
-
|
|
65
|
-
**Decision criteria:**
|
|
66
|
-
- Simple app: Context or Zustand
|
|
67
|
-
- Complex state logic: Redux Toolkit
|
|
68
|
-
- Server state: TanStack Query (don't use global state)
|
|
69
|
-
- Real-time apps: Zustand + WebSocket
|
|
70
|
-
|
|
71
|
-
## Monolith vs Microservices
|
|
72
|
-
|
|
73
|
-
### Decision Matrix
|
|
74
|
-
|
|
75
|
-
| Factor | Monolith | Microservices |
|
|
76
|
-
|--------|----------|---------------|
|
|
77
|
-
| **Team size** | < 10 developers | > 10 developers |
|
|
78
|
-
| **System complexity** | Simple domain | Complex, bounded contexts |
|
|
79
|
-
| **Deployment** | Simple, all-at-once | Complex, independent services |
|
|
80
|
-
| **Scaling** | Vertical scaling | Horizontal per service |
|
|
81
|
-
| **Development speed** | Fast initially | Slower setup, faster iteration |
|
|
82
|
-
| **Infrastructure** | Simpler (1 app, 1 DB) | Complex (K8s, service mesh, multiple DBs) |
|
|
83
|
-
| **Data consistency** | ACID transactions | Eventual consistency, sagas |
|
|
84
|
-
| **Testing** | Easier integration tests | More complex testing |
|
|
85
|
-
| **Monitoring** | Single app to monitor | Distributed tracing needed |
|
|
86
|
-
|
|
87
|
-
### When to Use Monolith
|
|
88
|
-
```
|
|
89
|
-
✓ Starting new product (validate idea first)
|
|
90
|
-
✓ Small team (< 10 developers)
|
|
91
|
-
✓ Simple domain with few bounded contexts
|
|
92
|
-
✓ Need rapid development
|
|
93
|
-
✓ Limited infrastructure budget
|
|
94
|
-
✓ Straightforward deployment requirements
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### When to Use Microservices
|
|
98
|
-
```
|
|
99
|
-
✓ Large team (> 10 developers)
|
|
100
|
-
✓ Clear bounded contexts in domain
|
|
101
|
-
✓ Different services have different scaling needs
|
|
102
|
-
✓ Need independent deployment cycles
|
|
103
|
-
✓ Multiple teams working independently
|
|
104
|
-
✓ Polyglot requirements (different languages)
|
|
105
|
-
✓ Have DevOps expertise and infrastructure
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### Modular Monolith (Recommended Middle Ground)
|
|
109
|
-
```typescript
|
|
110
|
-
// Structure monolith with clear boundaries
|
|
111
|
-
project/
|
|
112
|
-
├── src/
|
|
113
|
-
│ ├── modules/
|
|
114
|
-
│ │ ├── users/
|
|
115
|
-
│ │ │ ├── users.module.ts
|
|
116
|
-
│ │ │ ├── users.service.ts
|
|
117
|
-
│ │ │ ├── users.controller.ts
|
|
118
|
-
│ │ │ └── users.repository.ts
|
|
119
|
-
│ │ ├── orders/
|
|
120
|
-
│ │ │ ├── orders.module.ts
|
|
121
|
-
│ │ │ └── ...
|
|
122
|
-
│ │ └── payments/
|
|
123
|
-
│ │ └── ...
|
|
124
|
-
│ └── shared/
|
|
125
|
-
│ ├── database/
|
|
126
|
-
│ └── auth/
|
|
127
|
-
|
|
128
|
-
// Clear module boundaries, can split later if needed
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
## API Architecture Patterns
|
|
132
|
-
|
|
133
|
-
### REST vs GraphQL
|
|
134
|
-
|
|
135
|
-
| Aspect | REST | GraphQL |
|
|
136
|
-
|--------|------|---------|
|
|
137
|
-
| **Best for** | CRUD operations, public APIs | Complex queries, mobile apps |
|
|
138
|
-
| **Learning curve** | Low | Medium-high |
|
|
139
|
-
| **Over-fetching** | Common issue | Solved by design |
|
|
140
|
-
| **Under-fetching** | Requires multiple requests | Single request |
|
|
141
|
-
| **Caching** | HTTP caching works well | More complex caching |
|
|
142
|
-
| **Versioning** | URL versioning (/v1, /v2) | Schema evolution |
|
|
143
|
-
| **Tooling** | Swagger, Postman | GraphiQL, Apollo Studio |
|
|
144
|
-
|
|
145
|
-
**Choose REST when:**
|
|
146
|
-
- Building simple CRUD APIs
|
|
147
|
-
- Need HTTP caching
|
|
148
|
-
- Public API with many consumers
|
|
149
|
-
- Team unfamiliar with GraphQL
|
|
150
|
-
|
|
151
|
-
**Choose GraphQL when:**
|
|
152
|
-
- Mobile apps need flexible queries
|
|
153
|
-
- Complex data requirements
|
|
154
|
-
- Rapid frontend iteration
|
|
155
|
-
- Real-time subscriptions needed
|
|
156
|
-
|
|
157
|
-
### BFF Pattern (Backend for Frontend)
|
|
158
|
-
|
|
159
|
-
```typescript
|
|
160
|
-
// Use when frontend needs differ from backend APIs
|
|
161
|
-
// Mobile BFF: Returns minimal data, optimized responses
|
|
162
|
-
@Controller('mobile-bff')
|
|
163
|
-
export class MobileBFFController {
|
|
164
|
-
@Get('dashboard')
|
|
165
|
-
async getMobileDashboard(@CurrentUser() user: User) {
|
|
166
|
-
const [profile, notifications] = await Promise.all([
|
|
167
|
-
this.userService.getProfile(user.id),
|
|
168
|
-
this.notificationService.getUnread(user.id, 5), // Only 5 for mobile
|
|
169
|
-
]);
|
|
170
|
-
return { profile, notifications }; // Minimal payload
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// Web BFF: Returns richer data
|
|
175
|
-
@Controller('web-bff')
|
|
176
|
-
export class WebBFFController {
|
|
177
|
-
@Get('dashboard')
|
|
178
|
-
async getWebDashboard(@CurrentUser() user: User) {
|
|
179
|
-
const [profile, notifications, analytics, recentActivity] = await Promise.all([
|
|
180
|
-
this.userService.getProfile(user.id),
|
|
181
|
-
this.notificationService.getUnread(user.id, 20), // More for web
|
|
182
|
-
this.analyticsService.getUserStats(user.id),
|
|
183
|
-
this.activityService.getRecent(user.id),
|
|
184
|
-
]);
|
|
185
|
-
return { profile, notifications, analytics, recentActivity };
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
## Authentication Strategy
|
|
191
|
-
|
|
192
|
-
### JWT vs Session-based
|
|
193
|
-
|
|
194
|
-
| Aspect | JWT | Session |
|
|
195
|
-
|--------|-----|---------|
|
|
196
|
-
| **Scalability** | Stateless, horizontal scaling | Requires session store |
|
|
197
|
-
| **Performance** | No DB lookup per request | DB/Redis lookup needed |
|
|
198
|
-
| **Revocation** | Complex (requires blacklist) | Simple (delete session) |
|
|
199
|
-
| **Security** | Token can't be invalidated | Easy to invalidate |
|
|
200
|
-
| **Mobile/SPA** | Ideal for token storage | Requires cookies |
|
|
201
|
-
| **Microservices** | Easy to share across services | Harder to share |
|
|
202
|
-
|
|
203
|
-
**Hybrid approach (Recommended):**
|
|
204
|
-
```typescript
|
|
205
|
-
// Short-lived access token (15min) + refresh token (7 days)
|
|
206
|
-
interface AuthTokens {
|
|
207
|
-
accessToken: string; // JWT, 15 minutes, stored in memory
|
|
208
|
-
refreshToken: string; // Opaque token, 7 days, httpOnly cookie
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
// Access token: Stateless, fast validation
|
|
212
|
-
// Refresh token: Stored in DB, can be revoked
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
### SSO Integration Options
|
|
216
|
-
|
|
217
|
-
| Provider | Use Case | Complexity |
|
|
218
|
-
|----------|----------|------------|
|
|
219
|
-
| **OAuth2/OIDC** | Standard protocol, most IdPs | Medium |
|
|
220
|
-
| **SAML** | Enterprise customers, legacy | High |
|
|
221
|
-
| **Social logins** | B2C apps (Google, GitHub) | Low |
|
|
222
|
-
| **Auth0/Okta** | Managed solution, rapid setup | Low |
|
|
223
|
-
|
|
224
|
-
## Caching Strategy
|
|
225
|
-
|
|
226
|
-
### Layered Caching Approach
|
|
227
|
-
|
|
228
|
-
```typescript
|
|
229
|
-
// Layer 1: CDN caching (static assets)
|
|
230
|
-
// CloudFront, Cloudflare
|
|
231
|
-
|
|
232
|
-
// Layer 2: API response caching (Redis)
|
|
233
|
-
const cacheKey = `user:${userId}:profile`;
|
|
234
|
-
let profile = await redis.get(cacheKey);
|
|
235
|
-
|
|
236
|
-
if (!profile) {
|
|
237
|
-
profile = await db.users.findById(userId);
|
|
238
|
-
await redis.setex(cacheKey, 300, JSON.stringify(profile)); // 5 min TTL
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
// Layer 3: Database query caching
|
|
242
|
-
// PostgreSQL prepared statements, query plan caching
|
|
243
|
-
|
|
244
|
-
// Layer 4: Application-level caching
|
|
245
|
-
const userCache = new LRU({ max: 1000 });
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
### Cache Invalidation Patterns
|
|
249
|
-
|
|
250
|
-
```typescript
|
|
251
|
-
// Write-through: Update cache on write
|
|
252
|
-
async updateUser(id: string, data: UpdateUserDto) {
|
|
253
|
-
const user = await db.users.update(id, data);
|
|
254
|
-
await redis.set(`user:${id}`, JSON.stringify(user), 'EX', 300);
|
|
255
|
-
return user;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
// Write-behind: Invalidate cache, lazy load
|
|
259
|
-
async updateUser(id: string, data: UpdateUserDto) {
|
|
260
|
-
const user = await db.users.update(id, data);
|
|
261
|
-
await redis.del(`user:${id}`); // Delete, will reload on next read
|
|
262
|
-
return user;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
// Event-based: Invalidate related caches
|
|
266
|
-
eventBus.on('user.updated', async ({ userId }) => {
|
|
267
|
-
await Promise.all([
|
|
268
|
-
redis.del(`user:${userId}`),
|
|
269
|
-
redis.del(`user:${userId}:posts`),
|
|
270
|
-
redis.del(`user:${userId}:followers`),
|
|
271
|
-
]);
|
|
272
|
-
});
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
## Deployment Strategy
|
|
276
|
-
|
|
277
|
-
### Environment Progression
|
|
278
|
-
|
|
279
|
-
```
|
|
280
|
-
Development → Staging → Production
|
|
281
|
-
|
|
282
|
-
Development:
|
|
283
|
-
- Local dev servers
|
|
284
|
-
- Docker Compose for dependencies
|
|
285
|
-
- Hot reload enabled
|
|
286
|
-
- Debug logging
|
|
287
|
-
- Relaxed security
|
|
288
|
-
|
|
289
|
-
Staging:
|
|
290
|
-
- Production-like environment
|
|
291
|
-
- Real integrations (test mode)
|
|
292
|
-
- E2E tests run here
|
|
293
|
-
- Performance testing
|
|
294
|
-
- Security scanning
|
|
295
|
-
|
|
296
|
-
Production:
|
|
297
|
-
- High availability setup
|
|
298
|
-
- Blue-green deployment
|
|
299
|
-
- Monitoring & alerting
|
|
300
|
-
- Automated rollback
|
|
301
|
-
- Strict security
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
### Deployment Patterns
|
|
305
|
-
|
|
306
|
-
| Pattern | Downtime | Rollback | Complexity | Use When |
|
|
307
|
-
|---------|----------|----------|------------|----------|
|
|
308
|
-
| **Recreate** | Yes | Manual | Low | Dev/staging only |
|
|
309
|
-
| **Rolling** | No | Gradual | Medium | Standard deployments |
|
|
310
|
-
| **Blue-Green** | No | Instant | Medium | Zero-downtime required |
|
|
311
|
-
| **Canary** | No | Gradual | High | High-risk changes |
|
|
312
|
-
| **A/B Testing** | No | Gradual | High | Feature validation |
|
|
313
|
-
|
|
314
|
-
## Quick Decision Trees
|
|
315
|
-
|
|
316
|
-
### "Which database should I use?"
|
|
317
|
-
```
|
|
318
|
-
Need ACID transactions? → PostgreSQL
|
|
319
|
-
NoSQL with flexible schema? → MongoDB
|
|
320
|
-
Caching/sessions/queues? → Redis
|
|
321
|
-
AWS serverless? → DynamoDB
|
|
322
|
-
High read throughput? → PostgreSQL + read replicas
|
|
323
|
-
```
|
|
324
|
-
|
|
325
|
-
### "Monolith or microservices?"
|
|
326
|
-
```
|
|
327
|
-
New product? → Modular monolith
|
|
328
|
-
Team < 10 people? → Modular monolith
|
|
329
|
-
Clear bounded contexts? → Consider microservices
|
|
330
|
-
Different scaling needs? → Microservices
|
|
331
|
-
Limited DevOps resources? → Monolith
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
### "REST or GraphQL?"
|
|
335
|
-
```
|
|
336
|
-
Simple CRUD? → REST
|
|
337
|
-
Mobile app with flexible queries? → GraphQL
|
|
338
|
-
Public API? → REST
|
|
339
|
-
Complex data requirements? → GraphQL
|
|
340
|
-
Team knows GraphQL? → GraphQL, otherwise REST
|
|
341
|
-
```
|
|
342
|
-
|
|
343
|
-
### "Which state management?"
|
|
344
|
-
```
|
|
345
|
-
Simple app, few global state? → React Context
|
|
346
|
-
Server state (API data)? → TanStack Query
|
|
347
|
-
Medium complexity? → Zustand
|
|
348
|
-
Complex state logic? → Redux Toolkit
|
|
349
|
-
Real-time updates? → Zustand + WebSocket
|
|
350
|
-
```
|
|
1
|
+
# Architecture Decision Guide
|
|
2
|
+
|
|
3
|
+
## Technology Selection Matrix
|
|
4
|
+
|
|
5
|
+
### Backend Framework Selection
|
|
6
|
+
|
|
7
|
+
| Framework | Best For | Pros | Cons |
|
|
8
|
+
|-----------|----------|------|------|
|
|
9
|
+
| **NestJS** | Enterprise apps, microservices | TypeScript-first, dependency injection, excellent docs | Opinionated, steeper learning curve |
|
|
10
|
+
| **Express** | Simple APIs, flexibility | Minimal, huge ecosystem, well-known | Manual structure, less opinionated |
|
|
11
|
+
| **Fastify** | High performance APIs | Fast, schema validation, plugins | Smaller ecosystem than Express |
|
|
12
|
+
| **FastAPI** | Python APIs, ML integration | Auto-docs, type hints, fast | Python ecosystem only |
|
|
13
|
+
| **Go/Gin** | High-performance services | Compiled, concurrent, fast | Verbose, less rapid development |
|
|
14
|
+
|
|
15
|
+
**Decision criteria:**
|
|
16
|
+
- Team expertise: Choose familiar stack
|
|
17
|
+
- Performance needs: Go/Fastify for high throughput
|
|
18
|
+
- Type safety: NestJS/FastAPI for TypeScript/Python
|
|
19
|
+
- Flexibility: Express for custom architectures
|
|
20
|
+
|
|
21
|
+
### Frontend Framework Selection
|
|
22
|
+
|
|
23
|
+
| Framework | Best For | Pros | Cons |
|
|
24
|
+
|-----------|----------|------|------|
|
|
25
|
+
| **React** | Most use cases, large apps | Huge ecosystem, flexible, well-supported | Not batteries-included, decision fatigue |
|
|
26
|
+
| **Vue** | Progressive enhancement | Gentle learning curve, good docs, reactive | Smaller ecosystem than React |
|
|
27
|
+
| **Angular** | Enterprise apps | Complete framework, TypeScript native | Heavy, opinionated, steep curve |
|
|
28
|
+
| **Svelte** | Performance-critical apps | Compiled, no virtual DOM, small bundle | Smaller ecosystem, fewer resources |
|
|
29
|
+
| **Next.js** | SSR/SSG apps, SEO | React + routing + SSR, excellent DX | Vercel-centric, complexity for simple apps |
|
|
30
|
+
|
|
31
|
+
**Decision criteria:**
|
|
32
|
+
- SEO requirements: Next.js/Nuxt for SSR
|
|
33
|
+
- Team size: Angular for large teams, Vue for small
|
|
34
|
+
- Ecosystem: React for maximum third-party support
|
|
35
|
+
- Performance: Svelte for minimal bundle size
|
|
36
|
+
|
|
37
|
+
### Database Selection
|
|
38
|
+
|
|
39
|
+
| Database | Best For | Pros | Cons |
|
|
40
|
+
|----------|----------|------|------|
|
|
41
|
+
| **PostgreSQL** | Relational data, ACID | Feature-rich, reliable, JSON support | Complex queries can be slow |
|
|
42
|
+
| **MySQL** | Read-heavy workloads | Mature, fast reads, replication | Less feature-rich than Postgres |
|
|
43
|
+
| **MongoDB** | Flexible schemas, rapid dev | Schema-less, horizontal scaling | No transactions (old versions) |
|
|
44
|
+
| **Redis** | Caching, sessions, queues | Extremely fast, versatile | In-memory only, data structures limited |
|
|
45
|
+
| **DynamoDB** | AWS serverless, high scale | Managed, predictable performance | Vendor lock-in, query limitations |
|
|
46
|
+
|
|
47
|
+
**Decision criteria:**
|
|
48
|
+
- ACID requirements: PostgreSQL/MySQL
|
|
49
|
+
- Flexible schemas: MongoDB
|
|
50
|
+
- Caching layer: Redis (always)
|
|
51
|
+
- AWS serverless: DynamoDB
|
|
52
|
+
- Default choice: PostgreSQL (most versatile)
|
|
53
|
+
|
|
54
|
+
### State Management (Frontend)
|
|
55
|
+
|
|
56
|
+
| Solution | Best For | Complexity | Bundle Size |
|
|
57
|
+
|----------|----------|------------|-------------|
|
|
58
|
+
| **React Context** | Simple state, few updates | Low | None (built-in) |
|
|
59
|
+
| **Zustand** | Medium apps, simplicity | Low | 1KB |
|
|
60
|
+
| **Redux Toolkit** | Complex state, time-travel debug | Medium | 15KB |
|
|
61
|
+
| **Jotai/Recoil** | Atomic state, derived state | Medium | 3KB |
|
|
62
|
+
| **MobX** | Observable state, OOP style | Medium | 16KB |
|
|
63
|
+
| **TanStack Query** | Server state only | Low | 12KB |
|
|
64
|
+
|
|
65
|
+
**Decision criteria:**
|
|
66
|
+
- Simple app: Context or Zustand
|
|
67
|
+
- Complex state logic: Redux Toolkit
|
|
68
|
+
- Server state: TanStack Query (don't use global state)
|
|
69
|
+
- Real-time apps: Zustand + WebSocket
|
|
70
|
+
|
|
71
|
+
## Monolith vs Microservices
|
|
72
|
+
|
|
73
|
+
### Decision Matrix
|
|
74
|
+
|
|
75
|
+
| Factor | Monolith | Microservices |
|
|
76
|
+
|--------|----------|---------------|
|
|
77
|
+
| **Team size** | < 10 developers | > 10 developers |
|
|
78
|
+
| **System complexity** | Simple domain | Complex, bounded contexts |
|
|
79
|
+
| **Deployment** | Simple, all-at-once | Complex, independent services |
|
|
80
|
+
| **Scaling** | Vertical scaling | Horizontal per service |
|
|
81
|
+
| **Development speed** | Fast initially | Slower setup, faster iteration |
|
|
82
|
+
| **Infrastructure** | Simpler (1 app, 1 DB) | Complex (K8s, service mesh, multiple DBs) |
|
|
83
|
+
| **Data consistency** | ACID transactions | Eventual consistency, sagas |
|
|
84
|
+
| **Testing** | Easier integration tests | More complex testing |
|
|
85
|
+
| **Monitoring** | Single app to monitor | Distributed tracing needed |
|
|
86
|
+
|
|
87
|
+
### When to Use Monolith
|
|
88
|
+
```
|
|
89
|
+
✓ Starting new product (validate idea first)
|
|
90
|
+
✓ Small team (< 10 developers)
|
|
91
|
+
✓ Simple domain with few bounded contexts
|
|
92
|
+
✓ Need rapid development
|
|
93
|
+
✓ Limited infrastructure budget
|
|
94
|
+
✓ Straightforward deployment requirements
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### When to Use Microservices
|
|
98
|
+
```
|
|
99
|
+
✓ Large team (> 10 developers)
|
|
100
|
+
✓ Clear bounded contexts in domain
|
|
101
|
+
✓ Different services have different scaling needs
|
|
102
|
+
✓ Need independent deployment cycles
|
|
103
|
+
✓ Multiple teams working independently
|
|
104
|
+
✓ Polyglot requirements (different languages)
|
|
105
|
+
✓ Have DevOps expertise and infrastructure
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Modular Monolith (Recommended Middle Ground)
|
|
109
|
+
```typescript
|
|
110
|
+
// Structure monolith with clear boundaries
|
|
111
|
+
project/
|
|
112
|
+
├── src/
|
|
113
|
+
│ ├── modules/
|
|
114
|
+
│ │ ├── users/
|
|
115
|
+
│ │ │ ├── users.module.ts
|
|
116
|
+
│ │ │ ├── users.service.ts
|
|
117
|
+
│ │ │ ├── users.controller.ts
|
|
118
|
+
│ │ │ └── users.repository.ts
|
|
119
|
+
│ │ ├── orders/
|
|
120
|
+
│ │ │ ├── orders.module.ts
|
|
121
|
+
│ │ │ └── ...
|
|
122
|
+
│ │ └── payments/
|
|
123
|
+
│ │ └── ...
|
|
124
|
+
│ └── shared/
|
|
125
|
+
│ ├── database/
|
|
126
|
+
│ └── auth/
|
|
127
|
+
|
|
128
|
+
// Clear module boundaries, can split later if needed
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## API Architecture Patterns
|
|
132
|
+
|
|
133
|
+
### REST vs GraphQL
|
|
134
|
+
|
|
135
|
+
| Aspect | REST | GraphQL |
|
|
136
|
+
|--------|------|---------|
|
|
137
|
+
| **Best for** | CRUD operations, public APIs | Complex queries, mobile apps |
|
|
138
|
+
| **Learning curve** | Low | Medium-high |
|
|
139
|
+
| **Over-fetching** | Common issue | Solved by design |
|
|
140
|
+
| **Under-fetching** | Requires multiple requests | Single request |
|
|
141
|
+
| **Caching** | HTTP caching works well | More complex caching |
|
|
142
|
+
| **Versioning** | URL versioning (/v1, /v2) | Schema evolution |
|
|
143
|
+
| **Tooling** | Swagger, Postman | GraphiQL, Apollo Studio |
|
|
144
|
+
|
|
145
|
+
**Choose REST when:**
|
|
146
|
+
- Building simple CRUD APIs
|
|
147
|
+
- Need HTTP caching
|
|
148
|
+
- Public API with many consumers
|
|
149
|
+
- Team unfamiliar with GraphQL
|
|
150
|
+
|
|
151
|
+
**Choose GraphQL when:**
|
|
152
|
+
- Mobile apps need flexible queries
|
|
153
|
+
- Complex data requirements
|
|
154
|
+
- Rapid frontend iteration
|
|
155
|
+
- Real-time subscriptions needed
|
|
156
|
+
|
|
157
|
+
### BFF Pattern (Backend for Frontend)
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
// Use when frontend needs differ from backend APIs
|
|
161
|
+
// Mobile BFF: Returns minimal data, optimized responses
|
|
162
|
+
@Controller('mobile-bff')
|
|
163
|
+
export class MobileBFFController {
|
|
164
|
+
@Get('dashboard')
|
|
165
|
+
async getMobileDashboard(@CurrentUser() user: User) {
|
|
166
|
+
const [profile, notifications] = await Promise.all([
|
|
167
|
+
this.userService.getProfile(user.id),
|
|
168
|
+
this.notificationService.getUnread(user.id, 5), // Only 5 for mobile
|
|
169
|
+
]);
|
|
170
|
+
return { profile, notifications }; // Minimal payload
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Web BFF: Returns richer data
|
|
175
|
+
@Controller('web-bff')
|
|
176
|
+
export class WebBFFController {
|
|
177
|
+
@Get('dashboard')
|
|
178
|
+
async getWebDashboard(@CurrentUser() user: User) {
|
|
179
|
+
const [profile, notifications, analytics, recentActivity] = await Promise.all([
|
|
180
|
+
this.userService.getProfile(user.id),
|
|
181
|
+
this.notificationService.getUnread(user.id, 20), // More for web
|
|
182
|
+
this.analyticsService.getUserStats(user.id),
|
|
183
|
+
this.activityService.getRecent(user.id),
|
|
184
|
+
]);
|
|
185
|
+
return { profile, notifications, analytics, recentActivity };
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Authentication Strategy
|
|
191
|
+
|
|
192
|
+
### JWT vs Session-based
|
|
193
|
+
|
|
194
|
+
| Aspect | JWT | Session |
|
|
195
|
+
|--------|-----|---------|
|
|
196
|
+
| **Scalability** | Stateless, horizontal scaling | Requires session store |
|
|
197
|
+
| **Performance** | No DB lookup per request | DB/Redis lookup needed |
|
|
198
|
+
| **Revocation** | Complex (requires blacklist) | Simple (delete session) |
|
|
199
|
+
| **Security** | Token can't be invalidated | Easy to invalidate |
|
|
200
|
+
| **Mobile/SPA** | Ideal for token storage | Requires cookies |
|
|
201
|
+
| **Microservices** | Easy to share across services | Harder to share |
|
|
202
|
+
|
|
203
|
+
**Hybrid approach (Recommended):**
|
|
204
|
+
```typescript
|
|
205
|
+
// Short-lived access token (15min) + refresh token (7 days)
|
|
206
|
+
interface AuthTokens {
|
|
207
|
+
accessToken: string; // JWT, 15 minutes, stored in memory
|
|
208
|
+
refreshToken: string; // Opaque token, 7 days, httpOnly cookie
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// Access token: Stateless, fast validation
|
|
212
|
+
// Refresh token: Stored in DB, can be revoked
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### SSO Integration Options
|
|
216
|
+
|
|
217
|
+
| Provider | Use Case | Complexity |
|
|
218
|
+
|----------|----------|------------|
|
|
219
|
+
| **OAuth2/OIDC** | Standard protocol, most IdPs | Medium |
|
|
220
|
+
| **SAML** | Enterprise customers, legacy | High |
|
|
221
|
+
| **Social logins** | B2C apps (Google, GitHub) | Low |
|
|
222
|
+
| **Auth0/Okta** | Managed solution, rapid setup | Low |
|
|
223
|
+
|
|
224
|
+
## Caching Strategy
|
|
225
|
+
|
|
226
|
+
### Layered Caching Approach
|
|
227
|
+
|
|
228
|
+
```typescript
|
|
229
|
+
// Layer 1: CDN caching (static assets)
|
|
230
|
+
// CloudFront, Cloudflare
|
|
231
|
+
|
|
232
|
+
// Layer 2: API response caching (Redis)
|
|
233
|
+
const cacheKey = `user:${userId}:profile`;
|
|
234
|
+
let profile = await redis.get(cacheKey);
|
|
235
|
+
|
|
236
|
+
if (!profile) {
|
|
237
|
+
profile = await db.users.findById(userId);
|
|
238
|
+
await redis.setex(cacheKey, 300, JSON.stringify(profile)); // 5 min TTL
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// Layer 3: Database query caching
|
|
242
|
+
// PostgreSQL prepared statements, query plan caching
|
|
243
|
+
|
|
244
|
+
// Layer 4: Application-level caching
|
|
245
|
+
const userCache = new LRU({ max: 1000 });
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### Cache Invalidation Patterns
|
|
249
|
+
|
|
250
|
+
```typescript
|
|
251
|
+
// Write-through: Update cache on write
|
|
252
|
+
async updateUser(id: string, data: UpdateUserDto) {
|
|
253
|
+
const user = await db.users.update(id, data);
|
|
254
|
+
await redis.set(`user:${id}`, JSON.stringify(user), 'EX', 300);
|
|
255
|
+
return user;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// Write-behind: Invalidate cache, lazy load
|
|
259
|
+
async updateUser(id: string, data: UpdateUserDto) {
|
|
260
|
+
const user = await db.users.update(id, data);
|
|
261
|
+
await redis.del(`user:${id}`); // Delete, will reload on next read
|
|
262
|
+
return user;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Event-based: Invalidate related caches
|
|
266
|
+
eventBus.on('user.updated', async ({ userId }) => {
|
|
267
|
+
await Promise.all([
|
|
268
|
+
redis.del(`user:${userId}`),
|
|
269
|
+
redis.del(`user:${userId}:posts`),
|
|
270
|
+
redis.del(`user:${userId}:followers`),
|
|
271
|
+
]);
|
|
272
|
+
});
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## Deployment Strategy
|
|
276
|
+
|
|
277
|
+
### Environment Progression
|
|
278
|
+
|
|
279
|
+
```
|
|
280
|
+
Development → Staging → Production
|
|
281
|
+
|
|
282
|
+
Development:
|
|
283
|
+
- Local dev servers
|
|
284
|
+
- Docker Compose for dependencies
|
|
285
|
+
- Hot reload enabled
|
|
286
|
+
- Debug logging
|
|
287
|
+
- Relaxed security
|
|
288
|
+
|
|
289
|
+
Staging:
|
|
290
|
+
- Production-like environment
|
|
291
|
+
- Real integrations (test mode)
|
|
292
|
+
- E2E tests run here
|
|
293
|
+
- Performance testing
|
|
294
|
+
- Security scanning
|
|
295
|
+
|
|
296
|
+
Production:
|
|
297
|
+
- High availability setup
|
|
298
|
+
- Blue-green deployment
|
|
299
|
+
- Monitoring & alerting
|
|
300
|
+
- Automated rollback
|
|
301
|
+
- Strict security
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Deployment Patterns
|
|
305
|
+
|
|
306
|
+
| Pattern | Downtime | Rollback | Complexity | Use When |
|
|
307
|
+
|---------|----------|----------|------------|----------|
|
|
308
|
+
| **Recreate** | Yes | Manual | Low | Dev/staging only |
|
|
309
|
+
| **Rolling** | No | Gradual | Medium | Standard deployments |
|
|
310
|
+
| **Blue-Green** | No | Instant | Medium | Zero-downtime required |
|
|
311
|
+
| **Canary** | No | Gradual | High | High-risk changes |
|
|
312
|
+
| **A/B Testing** | No | Gradual | High | Feature validation |
|
|
313
|
+
|
|
314
|
+
## Quick Decision Trees
|
|
315
|
+
|
|
316
|
+
### "Which database should I use?"
|
|
317
|
+
```
|
|
318
|
+
Need ACID transactions? → PostgreSQL
|
|
319
|
+
NoSQL with flexible schema? → MongoDB
|
|
320
|
+
Caching/sessions/queues? → Redis
|
|
321
|
+
AWS serverless? → DynamoDB
|
|
322
|
+
High read throughput? → PostgreSQL + read replicas
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### "Monolith or microservices?"
|
|
326
|
+
```
|
|
327
|
+
New product? → Modular monolith
|
|
328
|
+
Team < 10 people? → Modular monolith
|
|
329
|
+
Clear bounded contexts? → Consider microservices
|
|
330
|
+
Different scaling needs? → Microservices
|
|
331
|
+
Limited DevOps resources? → Monolith
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### "REST or GraphQL?"
|
|
335
|
+
```
|
|
336
|
+
Simple CRUD? → REST
|
|
337
|
+
Mobile app with flexible queries? → GraphQL
|
|
338
|
+
Public API? → REST
|
|
339
|
+
Complex data requirements? → GraphQL
|
|
340
|
+
Team knows GraphQL? → GraphQL, otherwise REST
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### "Which state management?"
|
|
344
|
+
```
|
|
345
|
+
Simple app, few global state? → React Context
|
|
346
|
+
Server state (API data)? → TanStack Query
|
|
347
|
+
Medium complexity? → Zustand
|
|
348
|
+
Complex state logic? → Redux Toolkit
|
|
349
|
+
Real-time updates? → Zustand + WebSocket
|
|
350
|
+
```
|