skillstore-cli 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/README.md +95 -0
- package/data/bundles/devflow-complete.json +19 -0
- package/data/free-skills/devflow-agile/manifest.json +19 -0
- package/data/free-skills/devflow-agile/plugin/commands/agile/retro.md +23 -0
- package/data/free-skills/devflow-agile/plugin/commands/agile/review.md +21 -0
- package/data/free-skills/devflow-agile/plugin/commands/agile/sprint.md +30 -0
- package/data/free-skills/devflow-agile/plugin/commands/agile/standup.md +20 -0
- package/data/free-skills/devflow-agile/plugin/commands/agile.md +35 -0
- package/data/free-skills/devflow-agile/plugin/commands/devflow.md +42 -0
- package/data/free-skills/devflow-agile/plugin/skills/developer/SKILL.md +93 -0
- package/data/free-skills/devflow-agile/plugin/skills/developer/assets/sample-output.md +182 -0
- package/data/free-skills/devflow-agile/plugin/skills/developer/references/clean-architecture.md +361 -0
- package/data/free-skills/devflow-agile/plugin/skills/developer/references/clean-code-guide.md +207 -0
- package/data/free-skills/devflow-agile/plugin/skills/developer/references/debugging-methodology.md +191 -0
- package/data/free-skills/devflow-agile/template/agents/agile-coach.md +76 -0
- package/data/free-skills/devflow-agile/template/workflows/agile-sprint-workflow.md +81 -0
- package/data/free-skills/devflow-bootstrap/manifest.json +8 -0
- package/data/free-skills/devflow-bootstrap/plugin/commands/bootstrap/auto.md +31 -0
- package/data/free-skills/devflow-bootstrap/plugin/commands/bootstrap.md +38 -0
- package/data/free-skills/devflow-bootstrap/plugin/commands/devflow.md +20 -0
- package/data/free-skills/devflow-bootstrap/plugin/skills/project-scaffold/SKILL.md +56 -0
- package/data/free-skills/devflow-bootstrap/plugin/skills/project-scaffold/assets/sample-output.md +216 -0
- package/data/free-skills/devflow-bootstrap/plugin/skills/project-scaffold/references/architecture-decisions.md +254 -0
- package/data/free-skills/devflow-bootstrap/plugin/skills/project-scaffold/references/stack-templates.md +400 -0
- package/data/free-skills/devflow-bootstrap/template/agents/bootstrap-specialist.md +56 -0
- package/data/free-skills/devflow-bootstrap/template/workflows/bootstrap-workflow.md +70 -0
- package/data/free-skills/devflow-docs/manifest.json +8 -0
- package/data/free-skills/devflow-docs/plugin/commands/devflow.md +20 -0
- package/data/free-skills/devflow-docs/plugin/commands/docs/generate.md +17 -0
- package/data/free-skills/devflow-docs/plugin/commands/docs/parse.md +19 -0
- package/data/free-skills/devflow-docs/plugin/commands/docs.md +26 -0
- package/data/free-skills/devflow-docs/plugin/skills/pdf-processor/SKILL.md +59 -0
- package/data/free-skills/devflow-docs/plugin/skills/pdf-processor/assets/sample-output.md +114 -0
- package/data/free-skills/devflow-docs/plugin/skills/pdf-processor/references/extraction-techniques.md +115 -0
- package/data/free-skills/devflow-docs/plugin/skills/pdf-processor/references/ocr-strategies.md +167 -0
- package/data/free-skills/devflow-docs/template/agents/docs-specialist.md +35 -0
- package/data/free-skills/devflow-docs/template/workflows/docs-workflow.md +70 -0
- package/data/free-skills/devflow-postproject/manifest.json +13 -0
- package/data/free-skills/devflow-postproject/plugin/commands/devflow.md +34 -0
- package/data/free-skills/devflow-postproject/plugin/commands/postproject/handover.md +21 -0
- package/data/free-skills/devflow-postproject/plugin/commands/postproject/retro.md +21 -0
- package/data/free-skills/devflow-postproject/plugin/commands/postproject/support.md +21 -0
- package/data/free-skills/devflow-postproject/plugin/commands/postproject.md +32 -0
- package/data/free-skills/devflow-postproject/plugin/skills/retrospective/SKILL.md +70 -0
- package/data/free-skills/devflow-postproject/plugin/skills/retrospective/assets/sample-output.md +79 -0
- package/data/free-skills/devflow-postproject/plugin/skills/retrospective/references/facilitation-techniques.md +178 -0
- package/data/free-skills/devflow-postproject/plugin/skills/retrospective/references/lessons-learned-template.md +118 -0
- package/data/free-skills/devflow-postproject/plugin/skills/retrospective/references/retro-techniques.md +100 -0
- package/data/free-skills/devflow-postproject/template/agents/transition-manager.md +71 -0
- package/data/free-skills/devflow-postproject/template/workflows/transition-workflow.md +72 -0
- package/data/free-skills/devflow-presale/manifest.json +15 -0
- package/data/free-skills/devflow-presale/plugin/commands/devflow.md +47 -0
- package/data/free-skills/devflow-presale/plugin/commands/presale/analyze.md +30 -0
- package/data/free-skills/devflow-presale/plugin/commands/presale/estimate.md +30 -0
- package/data/free-skills/devflow-presale/plugin/commands/presale/price.md +30 -0
- package/data/free-skills/devflow-presale/plugin/commands/presale/propose.md +30 -0
- package/data/free-skills/devflow-presale/plugin/commands/presale.md +42 -0
- package/data/free-skills/devflow-presale/plugin/skills/requirement-analysis/SKILL.md +63 -0
- package/data/free-skills/devflow-presale/plugin/skills/requirement-analysis/assets/sample-output.md +129 -0
- package/data/free-skills/devflow-presale/plugin/skills/requirement-analysis/references/extraction-framework.md +140 -0
- package/data/free-skills/devflow-presale/plugin/skills/requirement-analysis/references/output-template.md +132 -0
- package/data/free-skills/devflow-presale/template/agents/presale-lead.md +83 -0
- package/data/free-skills/devflow-presale/template/agents/proposal-reviewer.md +63 -0
- package/data/free-skills/devflow-presale/template/workflows/presale-workflow.md +70 -0
- package/data/registry/categories.json +7 -0
- package/data/registry/packages.json +184 -0
- package/data/shared/framework/agents/brainstormer.md +74 -0
- package/data/shared/framework/agents/code-reviewer.md +87 -0
- package/data/shared/framework/agents/debugger.md +84 -0
- package/data/shared/framework/agents/docs-manager.md +55 -0
- package/data/shared/framework/agents/git-manager.md +59 -0
- package/data/shared/framework/agents/planner.md +68 -0
- package/data/shared/framework/agents/researcher.md +66 -0
- package/data/shared/framework/agents/tester.md +65 -0
- package/data/shared/framework/commands/cook/auto.md +27 -0
- package/data/shared/framework/commands/cook.md +45 -0
- package/data/shared/framework/commands/fix/ci.md +21 -0
- package/data/shared/framework/commands/fix/test.md +26 -0
- package/data/shared/framework/commands/fix/types.md +29 -0
- package/data/shared/framework/commands/fix.md +26 -0
- package/data/shared/framework/commands/git/cm.md +37 -0
- package/data/shared/framework/commands/git/pr.md +40 -0
- package/data/shared/framework/config/CLAUDE.md.template +26 -0
- package/data/shared/framework/config/settings.json +41 -0
- package/data/shared/framework/config/skillstore.config.json +29 -0
- package/data/shared/framework/hooks/discord-notify.sh +85 -0
- package/data/shared/framework/hooks/docs-sync.sh +53 -0
- package/data/shared/framework/hooks/modularization-hook.js +103 -0
- package/data/shared/framework/hooks/notification.js +94 -0
- package/data/shared/framework/hooks/quality-gate.js +109 -0
- package/data/shared/framework/hooks/scout-block.js +77 -0
- package/data/shared/framework/hooks/telegram-notify.sh +77 -0
- package/data/shared/framework/protocols/error-recovery.md +80 -0
- package/data/shared/framework/protocols/orchestration-protocol.md +112 -0
- package/data/shared/framework/quality/review-protocol.md +76 -0
- package/data/shared/framework/quality/verification-protocol.md +66 -0
- package/data/shared/framework/rules/development-rules.md +75 -0
- package/data/shared/framework/skills/backend-development/SKILL.md +77 -0
- package/data/shared/framework/skills/backend-development/assets/sample-output.md +175 -0
- package/data/shared/framework/skills/backend-development/references/advanced-patterns.md +180 -0
- package/data/shared/framework/skills/backend-development/references/api-design-guide.md +160 -0
- package/data/shared/framework/skills/backend-development/references/architecture-patterns.md +183 -0
- package/data/shared/framework/skills/backend-development/references/observability-resilience.md +155 -0
- package/data/shared/framework/skills/backend-development/references/troubleshooting.md +199 -0
- package/data/shared/framework/skills/codebase-analysis/SKILL.md +72 -0
- package/data/shared/framework/skills/codebase-analysis/assets/sample-output.md +263 -0
- package/data/shared/framework/skills/codebase-analysis/references/analysis-techniques.md +241 -0
- package/data/shared/framework/skills/codebase-analysis/references/dependency-mapping.md +280 -0
- package/data/shared/framework/skills/codebase-analysis/references/tech-debt-assessment.md +208 -0
- package/data/shared/framework/skills/databases/SKILL.md +72 -0
- package/data/shared/framework/skills/databases/assets/sample-output.md +212 -0
- package/data/shared/framework/skills/databases/references/advanced-data-patterns.md +259 -0
- package/data/shared/framework/skills/databases/references/query-optimization.md +214 -0
- package/data/shared/framework/skills/databases/references/schema-design.md +159 -0
- package/data/shared/framework/skills/databases/references/troubleshooting.md +214 -0
- package/data/shared/framework/skills/debugging-investigation/SKILL.md +84 -0
- package/data/shared/framework/skills/debugging-investigation/assets/sample-output.md +314 -0
- package/data/shared/framework/skills/debugging-investigation/references/systematic-debugging.md +197 -0
- package/data/shared/framework/skills/debugging-investigation/references/tool-specific-guides.md +202 -0
- package/data/shared/framework/skills/debugging-investigation/references/troubleshooting-patterns.md +196 -0
- package/data/shared/framework/skills/frontend-development/SKILL.md +67 -0
- package/data/shared/framework/skills/frontend-development/assets/sample-output.md +110 -0
- package/data/shared/framework/skills/frontend-development/references/component-patterns.md +112 -0
- package/data/shared/framework/skills/frontend-development/references/performance-guide.md +169 -0
- package/data/shared/framework/skills/frontend-development/references/routing-forms-realtime.md +374 -0
- package/data/shared/framework/skills/frontend-development/references/ssr-rsc-patterns.md +284 -0
- package/data/shared/framework/skills/frontend-development/references/troubleshooting.md +154 -0
- package/data/shared/framework/skills/mobile-development/SKILL.md +67 -0
- package/data/shared/framework/skills/mobile-development/assets/sample-output.md +382 -0
- package/data/shared/framework/skills/mobile-development/references/mobile-patterns.md +681 -0
- package/data/shared/framework/skills/mobile-development/references/mobile-performance.md +524 -0
- package/data/shared/framework/skills/mobile-development/references/troubleshooting.md +158 -0
- package/data/shared/framework/skills/security-audit/SKILL.md +83 -0
- package/data/shared/framework/skills/security-audit/assets/sample-output.md +451 -0
- package/data/shared/framework/skills/security-audit/references/owasp-checklist.md +580 -0
- package/data/shared/framework/skills/security-audit/references/secure-coding-patterns.md +433 -0
- package/data/shared/framework/skills/security-audit/references/vulnerability-remediation.md +331 -0
- package/data/shared/framework/skills/ui-generation/SKILL.md +70 -0
- package/data/shared/framework/skills/ui-generation/assets/sample-output.md +139 -0
- package/data/shared/framework/skills/ui-generation/references/accessibility-responsive.md +127 -0
- package/data/shared/framework/skills/ui-generation/references/compound-components.md +252 -0
- package/data/shared/framework/skills/ui-generation/references/generation-patterns.md +110 -0
- package/data/shared/framework/skills/ui-generation/references/storybook-design-system.md +278 -0
- package/data/shared/framework/skills/ui-generation/references/troubleshooting.md +198 -0
- package/data/shared/framework/workflows/documentation-management.md +58 -0
- package/data/shared/framework/workflows/primary-workflow.md +88 -0
- package/dist/commands/activate.d.ts +3 -0
- package/dist/commands/activate.d.ts.map +1 -0
- package/dist/commands/activate.js +34 -0
- package/dist/commands/activate.js.map +1 -0
- package/dist/commands/bundle.d.ts +3 -0
- package/dist/commands/bundle.d.ts.map +1 -0
- package/dist/commands/bundle.js +64 -0
- package/dist/commands/bundle.js.map +1 -0
- package/dist/commands/install.d.ts +3 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +99 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +37 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/search.d.ts +3 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +30 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +35 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update.d.ts +3 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +68 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/download/cache.d.ts +3 -0
- package/dist/download/cache.d.ts.map +1 -0
- package/dist/download/cache.js +18 -0
- package/dist/download/cache.js.map +1 -0
- package/dist/download/client.d.ts +2 -0
- package/dist/download/client.d.ts.map +1 -0
- package/dist/download/client.js +58 -0
- package/dist/download/client.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/installer/file-copier.d.ts +6 -0
- package/dist/installer/file-copier.d.ts.map +1 -0
- package/dist/installer/file-copier.js +32 -0
- package/dist/installer/file-copier.js.map +1 -0
- package/dist/installer/plugin-installer.d.ts +12 -0
- package/dist/installer/plugin-installer.d.ts.map +1 -0
- package/dist/installer/plugin-installer.js +33 -0
- package/dist/installer/plugin-installer.js.map +1 -0
- package/dist/installer/template-installer.d.ts +12 -0
- package/dist/installer/template-installer.d.ts.map +1 -0
- package/dist/installer/template-installer.js +45 -0
- package/dist/installer/template-installer.js.map +1 -0
- package/dist/license/crypto.d.ts +16 -0
- package/dist/license/crypto.d.ts.map +1 -0
- package/dist/license/crypto.js +50 -0
- package/dist/license/crypto.js.map +1 -0
- package/dist/license/license-store.d.ts +19 -0
- package/dist/license/license-store.d.ts.map +1 -0
- package/dist/license/license-store.js +99 -0
- package/dist/license/license-store.js.map +1 -0
- package/dist/license/validator.d.ts +32 -0
- package/dist/license/validator.d.ts.map +1 -0
- package/dist/license/validator.js +81 -0
- package/dist/license/validator.js.map +1 -0
- package/dist/registry/loader.d.ts +30 -0
- package/dist/registry/loader.d.ts.map +1 -0
- package/dist/registry/loader.js +22 -0
- package/dist/registry/loader.js.map +1 -0
- package/dist/registry/search-engine.d.ts +9 -0
- package/dist/registry/search-engine.d.ts.map +1 -0
- package/dist/registry/search-engine.js +30 -0
- package/dist/registry/search-engine.js.map +1 -0
- package/dist/utils/config.d.ts +14 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +28 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts +9 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +22 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/paths.d.ts +20 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +79 -0
- package/dist/utils/paths.js.map +1 -0
- package/package.json +54 -0
package/data/free-skills/devflow-bootstrap/plugin/skills/project-scaffold/assets/sample-output.md
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
# Sample Output: NestJS Microservice
|
|
2
|
+
|
|
3
|
+
## Project: `order-service`
|
|
4
|
+
|
|
5
|
+
### Generated Directory Tree
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
order-service/
|
|
9
|
+
├── src/
|
|
10
|
+
│ ├── main.ts
|
|
11
|
+
│ ├── app.module.ts
|
|
12
|
+
│ ├── app.controller.ts
|
|
13
|
+
│ ├── app.service.ts
|
|
14
|
+
│ ├── common/
|
|
15
|
+
│ │ ├── decorators/
|
|
16
|
+
│ │ │ └── current-user.decorator.ts
|
|
17
|
+
│ │ ├── filters/
|
|
18
|
+
│ │ │ └── http-exception.filter.ts
|
|
19
|
+
│ │ ├── guards/
|
|
20
|
+
│ │ │ └── jwt-auth.guard.ts
|
|
21
|
+
│ │ ├── interceptors/
|
|
22
|
+
│ │ │ ├── logging.interceptor.ts
|
|
23
|
+
│ │ │ └── transform.interceptor.ts
|
|
24
|
+
│ │ ├── middleware/
|
|
25
|
+
│ │ │ └── correlation-id.middleware.ts
|
|
26
|
+
│ │ ├── pipes/
|
|
27
|
+
│ │ │ └── validation.pipe.ts
|
|
28
|
+
│ │ └── interfaces/
|
|
29
|
+
│ │ └── paginated-response.interface.ts
|
|
30
|
+
│ ├── config/
|
|
31
|
+
│ │ ├── configuration.ts
|
|
32
|
+
│ │ ├── validation.ts
|
|
33
|
+
│ │ └── database.config.ts
|
|
34
|
+
│ ├── modules/
|
|
35
|
+
│ │ ├── orders/
|
|
36
|
+
│ │ │ ├── orders.module.ts
|
|
37
|
+
│ │ │ ├── orders.controller.ts
|
|
38
|
+
│ │ │ ├── orders.service.ts
|
|
39
|
+
│ │ │ ├── orders.repository.ts
|
|
40
|
+
│ │ │ ├── dto/
|
|
41
|
+
│ │ │ │ ├── create-order.dto.ts
|
|
42
|
+
│ │ │ │ ├── update-order.dto.ts
|
|
43
|
+
│ │ │ │ └── order-query.dto.ts
|
|
44
|
+
│ │ │ ├── entities/
|
|
45
|
+
│ │ │ │ ├── order.entity.ts
|
|
46
|
+
│ │ │ │ └── order-item.entity.ts
|
|
47
|
+
│ │ │ └── events/
|
|
48
|
+
│ │ │ ├── order-created.event.ts
|
|
49
|
+
│ │ │ └── order-updated.event.ts
|
|
50
|
+
│ │ ├── products/
|
|
51
|
+
│ │ │ ├── products.module.ts
|
|
52
|
+
│ │ │ ├── products.controller.ts
|
|
53
|
+
│ │ │ ├── products.service.ts
|
|
54
|
+
│ │ │ ├── dto/
|
|
55
|
+
│ │ │ │ └── product.dto.ts
|
|
56
|
+
│ │ │ └── entities/
|
|
57
|
+
│ │ │ └── product.entity.ts
|
|
58
|
+
│ │ └── health/
|
|
59
|
+
│ │ ├── health.module.ts
|
|
60
|
+
│ │ └── health.controller.ts
|
|
61
|
+
│ ├── database/
|
|
62
|
+
│ │ ├── database.module.ts
|
|
63
|
+
│ │ ├── migrations/
|
|
64
|
+
│ │ │ └── .gitkeep
|
|
65
|
+
│ │ └── seeds/
|
|
66
|
+
│ │ └── .gitkeep
|
|
67
|
+
│ └── messaging/
|
|
68
|
+
│ ├── messaging.module.ts
|
|
69
|
+
│ ├── producers/
|
|
70
|
+
│ │ └── order-event.producer.ts
|
|
71
|
+
│ └── consumers/
|
|
72
|
+
│ └── payment-event.consumer.ts
|
|
73
|
+
├── test/
|
|
74
|
+
│ ├── app.e2e-spec.ts
|
|
75
|
+
│ ├── jest-e2e.json
|
|
76
|
+
│ └── factories/
|
|
77
|
+
│ └── order.factory.ts
|
|
78
|
+
├── nest-cli.json
|
|
79
|
+
├── tsconfig.json
|
|
80
|
+
├── tsconfig.build.json
|
|
81
|
+
├── package.json
|
|
82
|
+
├── .env.example
|
|
83
|
+
├── .gitignore
|
|
84
|
+
├── docker-compose.yml
|
|
85
|
+
├── Dockerfile
|
|
86
|
+
└── README.md
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Key Config Files
|
|
90
|
+
|
|
91
|
+
**nest-cli.json**
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"$schema": "https://json.schemastore.org/nest-cli",
|
|
95
|
+
"collection": "@nestjs/schematics",
|
|
96
|
+
"sourceRoot": "src",
|
|
97
|
+
"compilerOptions": {
|
|
98
|
+
"deleteOutDir": true,
|
|
99
|
+
"assets": ["**/*.graphql"],
|
|
100
|
+
"watchAssets": true
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**tsconfig.json**
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"compilerOptions": {
|
|
109
|
+
"module": "commonjs",
|
|
110
|
+
"declaration": true,
|
|
111
|
+
"removeComments": true,
|
|
112
|
+
"emitDecoratorMetadata": true,
|
|
113
|
+
"experimentalDecorators": true,
|
|
114
|
+
"allowSyntheticDefaultImports": true,
|
|
115
|
+
"target": "ES2021",
|
|
116
|
+
"sourceMap": true,
|
|
117
|
+
"outDir": "./dist",
|
|
118
|
+
"baseUrl": "./",
|
|
119
|
+
"incremental": true,
|
|
120
|
+
"skipLibCheck": true,
|
|
121
|
+
"strictNullChecks": true,
|
|
122
|
+
"noImplicitAny": true,
|
|
123
|
+
"strictBindCallApply": true,
|
|
124
|
+
"forceConsistentCasingInFileNames": true,
|
|
125
|
+
"noFallthroughCasesInSwitch": true,
|
|
126
|
+
"paths": {
|
|
127
|
+
"@common/*": ["src/common/*"],
|
|
128
|
+
"@modules/*": ["src/modules/*"],
|
|
129
|
+
"@config/*": ["src/config/*"]
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**.env.example**
|
|
136
|
+
```bash
|
|
137
|
+
# Application
|
|
138
|
+
APP_NAME=order-service
|
|
139
|
+
APP_PORT=3000
|
|
140
|
+
APP_ENV=development
|
|
141
|
+
LOG_LEVEL=debug
|
|
142
|
+
|
|
143
|
+
# Database
|
|
144
|
+
DB_HOST=localhost
|
|
145
|
+
DB_PORT=5432
|
|
146
|
+
DB_USERNAME=postgres
|
|
147
|
+
DB_PASSWORD=postgres
|
|
148
|
+
DB_DATABASE=order_service
|
|
149
|
+
|
|
150
|
+
# Redis
|
|
151
|
+
REDIS_HOST=localhost
|
|
152
|
+
REDIS_PORT=6379
|
|
153
|
+
|
|
154
|
+
# Message Queue
|
|
155
|
+
RABBITMQ_URL=amqp://guest:guest@localhost:5672
|
|
156
|
+
|
|
157
|
+
# Auth
|
|
158
|
+
JWT_SECRET=your-jwt-secret-change-in-production
|
|
159
|
+
JWT_EXPIRATION=3600
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**docker-compose.yml**
|
|
163
|
+
```yaml
|
|
164
|
+
version: '3.8'
|
|
165
|
+
|
|
166
|
+
services:
|
|
167
|
+
app:
|
|
168
|
+
build:
|
|
169
|
+
context: .
|
|
170
|
+
dockerfile: Dockerfile
|
|
171
|
+
ports:
|
|
172
|
+
- "${APP_PORT:-3000}:3000"
|
|
173
|
+
env_file:
|
|
174
|
+
- .env
|
|
175
|
+
depends_on:
|
|
176
|
+
- postgres
|
|
177
|
+
- redis
|
|
178
|
+
- rabbitmq
|
|
179
|
+
volumes:
|
|
180
|
+
- .:/app
|
|
181
|
+
- /app/node_modules
|
|
182
|
+
|
|
183
|
+
postgres:
|
|
184
|
+
image: postgres:16-alpine
|
|
185
|
+
environment:
|
|
186
|
+
POSTGRES_USER: ${DB_USERNAME:-postgres}
|
|
187
|
+
POSTGRES_PASSWORD: ${DB_PASSWORD:-postgres}
|
|
188
|
+
POSTGRES_DB: ${DB_DATABASE:-order_service}
|
|
189
|
+
ports:
|
|
190
|
+
- "${DB_PORT:-5432}:5432"
|
|
191
|
+
volumes:
|
|
192
|
+
- postgres_data:/var/lib/postgresql/data
|
|
193
|
+
|
|
194
|
+
redis:
|
|
195
|
+
image: redis:7-alpine
|
|
196
|
+
ports:
|
|
197
|
+
- "${REDIS_PORT:-6379}:6379"
|
|
198
|
+
|
|
199
|
+
rabbitmq:
|
|
200
|
+
image: rabbitmq:3-management-alpine
|
|
201
|
+
ports:
|
|
202
|
+
- "5672:5672"
|
|
203
|
+
- "15672:15672"
|
|
204
|
+
|
|
205
|
+
volumes:
|
|
206
|
+
postgres_data:
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Summary
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
Generated: 15 directories, 38 files
|
|
213
|
+
Tech stack: NestJS + TypeScript + PostgreSQL + Redis + RabbitMQ
|
|
214
|
+
Architecture: Modular with domain-driven structure
|
|
215
|
+
Includes: Health check, CRUD scaffold, messaging, auth guards, validation
|
|
216
|
+
```
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# Architecture Decisions Reference
|
|
2
|
+
|
|
3
|
+
## Monorepo vs Polyrepo Decision Matrix
|
|
4
|
+
|
|
5
|
+
### Monorepo (recommended when)
|
|
6
|
+
- Shared code between services exceeds 30% of codebase
|
|
7
|
+
- Team size < 50 engineers working on related services
|
|
8
|
+
- Unified versioning and release cycle is desired
|
|
9
|
+
- Strong tooling support available (Nx, Turborepo, Bazel, Pants)
|
|
10
|
+
|
|
11
|
+
### Polyrepo (recommended when)
|
|
12
|
+
- Teams are fully autonomous with separate deployment cycles
|
|
13
|
+
- Services have fundamentally different tech stacks
|
|
14
|
+
- Organizational boundaries align with repository boundaries
|
|
15
|
+
- Compliance requires separate access controls per service
|
|
16
|
+
|
|
17
|
+
### Trade-off Summary
|
|
18
|
+
|
|
19
|
+
| Factor | Monorepo | Polyrepo |
|
|
20
|
+
|---------------------|----------------------------------|----------------------------------|
|
|
21
|
+
| Code sharing | Easy, direct imports | Requires published packages |
|
|
22
|
+
| CI/CD complexity | Higher (needs affected detection)| Lower per repo, higher overall |
|
|
23
|
+
| Dependency mgmt | Single lockfile, unified | Independent, potential drift |
|
|
24
|
+
| Onboarding | One clone, full context | Multiple repos to discover |
|
|
25
|
+
| Build times | Needs caching (Nx, Turbo) | Naturally isolated |
|
|
26
|
+
| Access control | Coarser (CODEOWNERS helps) | Fine-grained per repo |
|
|
27
|
+
| Atomic changes | Single PR across services | Coordinated PRs across repos |
|
|
28
|
+
|
|
29
|
+
## File Naming Conventions by Ecosystem
|
|
30
|
+
|
|
31
|
+
### JavaScript / TypeScript
|
|
32
|
+
- Files: `kebab-case.ts` (e.g., `user-service.ts`, `auth-middleware.ts`)
|
|
33
|
+
- React components: `PascalCase.tsx` (e.g., `UserProfile.tsx`, `NavBar.tsx`)
|
|
34
|
+
- Test files: `*.test.ts` or `*.spec.ts` colocated with source
|
|
35
|
+
- Barrel exports: `index.ts` in each module directory
|
|
36
|
+
- Constants: `SCREAMING_SNAKE_CASE` for values, `kebab-case` for files
|
|
37
|
+
|
|
38
|
+
### Python
|
|
39
|
+
- Files: `snake_case.py` (e.g., `user_service.py`, `auth_middleware.py`)
|
|
40
|
+
- Classes: `PascalCase` in `snake_case.py` files
|
|
41
|
+
- Test files: `test_*.py` or `*_test.py` (pytest convention)
|
|
42
|
+
- Packages: `snake_case` directory with `__init__.py`
|
|
43
|
+
|
|
44
|
+
### Go
|
|
45
|
+
- Files: `snake_case.go` (e.g., `user_handler.go`)
|
|
46
|
+
- Packages: short, lowercase, single word preferred (`auth`, `user`, `db`)
|
|
47
|
+
- Test files: `*_test.go` colocated with source
|
|
48
|
+
- Internal packages: `internal/` directory for non-exported code
|
|
49
|
+
|
|
50
|
+
### Java / Kotlin
|
|
51
|
+
- Files: `PascalCase.java` matching class name (e.g., `UserService.java`)
|
|
52
|
+
- Packages: reverse domain `com.company.project.module`
|
|
53
|
+
- Test files: `*Test.java` in mirrored `src/test/` directory
|
|
54
|
+
|
|
55
|
+
### Rust
|
|
56
|
+
- Files: `snake_case.rs` (e.g., `user_service.rs`)
|
|
57
|
+
- Modules: `snake_case` directories with `mod.rs`
|
|
58
|
+
- Crate names: `kebab-case` in Cargo.toml, `snake_case` in code
|
|
59
|
+
|
|
60
|
+
## Config-as-Code Patterns
|
|
61
|
+
|
|
62
|
+
### Single Source of Truth Principle
|
|
63
|
+
Each config tool should have exactly ONE config file that all environments reference.
|
|
64
|
+
|
|
65
|
+
### TypeScript Projects
|
|
66
|
+
```
|
|
67
|
+
tsconfig.json # Base config (strict mode, paths)
|
|
68
|
+
tsconfig.build.json # Extends base, excludes tests
|
|
69
|
+
tsconfig.test.json # Extends base, includes test paths
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### ESLint + Prettier
|
|
73
|
+
```
|
|
74
|
+
eslint.config.mjs # Flat config (ESLint 9+)
|
|
75
|
+
.prettierrc # Formatting rules
|
|
76
|
+
.prettierignore # Skip generated files
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Key rule: Prettier handles formatting, ESLint handles logic. Never let them conflict.
|
|
80
|
+
|
|
81
|
+
### Shared Configs in Monorepo
|
|
82
|
+
```
|
|
83
|
+
packages/
|
|
84
|
+
eslint-config/ # @company/eslint-config
|
|
85
|
+
index.mjs
|
|
86
|
+
tsconfig/ # @company/tsconfig
|
|
87
|
+
base.json
|
|
88
|
+
react.json
|
|
89
|
+
node.json
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Docker Development Setup Templates
|
|
93
|
+
|
|
94
|
+
### Dockerfile.dev
|
|
95
|
+
```dockerfile
|
|
96
|
+
FROM node:20-alpine
|
|
97
|
+
WORKDIR /app
|
|
98
|
+
COPY package*.json ./
|
|
99
|
+
RUN npm ci
|
|
100
|
+
COPY . .
|
|
101
|
+
EXPOSE 3000
|
|
102
|
+
CMD ["npm", "run", "dev"]
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### docker-compose.dev.yml
|
|
106
|
+
```yaml
|
|
107
|
+
version: '3.8'
|
|
108
|
+
services:
|
|
109
|
+
app:
|
|
110
|
+
build:
|
|
111
|
+
context: .
|
|
112
|
+
dockerfile: Dockerfile.dev
|
|
113
|
+
volumes:
|
|
114
|
+
- .:/app
|
|
115
|
+
- /app/node_modules # Prevent host node_modules override
|
|
116
|
+
ports:
|
|
117
|
+
- "3000:3000"
|
|
118
|
+
environment:
|
|
119
|
+
- NODE_ENV=development
|
|
120
|
+
depends_on:
|
|
121
|
+
- db
|
|
122
|
+
- redis
|
|
123
|
+
db:
|
|
124
|
+
image: postgres:16-alpine
|
|
125
|
+
environment:
|
|
126
|
+
POSTGRES_DB: app_dev
|
|
127
|
+
POSTGRES_USER: dev
|
|
128
|
+
POSTGRES_PASSWORD: dev
|
|
129
|
+
ports:
|
|
130
|
+
- "5432:5432"
|
|
131
|
+
volumes:
|
|
132
|
+
- pgdata:/var/lib/postgresql/data
|
|
133
|
+
redis:
|
|
134
|
+
image: redis:7-alpine
|
|
135
|
+
ports:
|
|
136
|
+
- "6379:6379"
|
|
137
|
+
volumes:
|
|
138
|
+
pgdata:
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Key Patterns
|
|
142
|
+
- Mount source code as volume for hot reload
|
|
143
|
+
- Use named volumes for database persistence
|
|
144
|
+
- Separate `node_modules` volume to avoid OS mismatch
|
|
145
|
+
- Use `depends_on` with health checks for startup order
|
|
146
|
+
|
|
147
|
+
## Project Structure by Framework
|
|
148
|
+
|
|
149
|
+
### Next.js (App Router)
|
|
150
|
+
```
|
|
151
|
+
src/
|
|
152
|
+
app/
|
|
153
|
+
(auth)/ # Route group
|
|
154
|
+
login/page.tsx
|
|
155
|
+
register/page.tsx
|
|
156
|
+
(dashboard)/
|
|
157
|
+
layout.tsx
|
|
158
|
+
page.tsx
|
|
159
|
+
api/ # API routes
|
|
160
|
+
users/route.ts
|
|
161
|
+
layout.tsx # Root layout
|
|
162
|
+
page.tsx # Home page
|
|
163
|
+
components/
|
|
164
|
+
ui/ # Reusable primitives
|
|
165
|
+
features/ # Feature-specific
|
|
166
|
+
lib/ # Utilities, clients
|
|
167
|
+
hooks/ # Custom React hooks
|
|
168
|
+
types/ # TypeScript types
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### NestJS
|
|
172
|
+
```
|
|
173
|
+
src/
|
|
174
|
+
modules/
|
|
175
|
+
users/
|
|
176
|
+
users.controller.ts
|
|
177
|
+
users.service.ts
|
|
178
|
+
users.module.ts
|
|
179
|
+
dto/
|
|
180
|
+
entities/
|
|
181
|
+
auth/
|
|
182
|
+
auth.guard.ts
|
|
183
|
+
auth.module.ts
|
|
184
|
+
strategies/
|
|
185
|
+
common/
|
|
186
|
+
decorators/
|
|
187
|
+
filters/
|
|
188
|
+
interceptors/
|
|
189
|
+
pipes/
|
|
190
|
+
config/
|
|
191
|
+
app.module.ts
|
|
192
|
+
main.ts
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Django
|
|
196
|
+
```
|
|
197
|
+
project/
|
|
198
|
+
settings/
|
|
199
|
+
base.py
|
|
200
|
+
development.py
|
|
201
|
+
production.py
|
|
202
|
+
urls.py
|
|
203
|
+
wsgi.py
|
|
204
|
+
apps/
|
|
205
|
+
users/
|
|
206
|
+
models.py
|
|
207
|
+
views.py
|
|
208
|
+
serializers.py
|
|
209
|
+
urls.py
|
|
210
|
+
tests/
|
|
211
|
+
core/
|
|
212
|
+
management/commands/
|
|
213
|
+
middleware.py
|
|
214
|
+
templates/
|
|
215
|
+
static/
|
|
216
|
+
manage.py
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Spring Boot
|
|
220
|
+
```
|
|
221
|
+
src/main/java/com/company/app/
|
|
222
|
+
config/
|
|
223
|
+
controller/
|
|
224
|
+
service/
|
|
225
|
+
repository/
|
|
226
|
+
model/
|
|
227
|
+
entity/
|
|
228
|
+
dto/
|
|
229
|
+
exception/
|
|
230
|
+
security/
|
|
231
|
+
Application.java
|
|
232
|
+
src/main/resources/
|
|
233
|
+
application.yml
|
|
234
|
+
application-dev.yml
|
|
235
|
+
application-prod.yml
|
|
236
|
+
src/test/
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Go (Clean Architecture)
|
|
240
|
+
```
|
|
241
|
+
cmd/
|
|
242
|
+
server/main.go
|
|
243
|
+
internal/
|
|
244
|
+
handler/ # HTTP handlers
|
|
245
|
+
service/ # Business logic
|
|
246
|
+
repository/ # Data access
|
|
247
|
+
model/ # Domain models
|
|
248
|
+
middleware/
|
|
249
|
+
pkg/ # Shared libraries
|
|
250
|
+
config/
|
|
251
|
+
config.go
|
|
252
|
+
migrations/
|
|
253
|
+
Makefile
|
|
254
|
+
```
|