antigravity-flow 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.
Files changed (115) hide show
  1. package/README.md +182 -0
  2. package/dist/bin/ag-flow.js +127 -0
  3. package/dist/src/adapters/ConsoleLoggerAdapter.js +52 -0
  4. package/dist/src/adapters/EjsTemplateAdapter.js +66 -0
  5. package/dist/src/adapters/JsonLocalizationAdapter.js +81 -0
  6. package/dist/src/adapters/NodeFileSystemAdapter.js +52 -0
  7. package/dist/src/adapters/index.js +20 -0
  8. package/dist/src/commands/guide.js +89 -0
  9. package/dist/src/commands/index.js +19 -0
  10. package/dist/src/commands/init.js +581 -0
  11. package/dist/src/commands/templates.js +143 -0
  12. package/dist/src/core/ConfigService.js +75 -0
  13. package/dist/src/core/ContextGenerator.js +27 -0
  14. package/dist/src/core/DockerfileGenerator.js +151 -0
  15. package/dist/src/core/GitignoreGenerator.js +129 -0
  16. package/dist/src/core/PipelineGenerator.js +68 -0
  17. package/dist/src/core/RulesComposer.js +62 -0
  18. package/dist/src/core/StackDetector.js +115 -0
  19. package/dist/src/core/WorkflowGenerator.js +137 -0
  20. package/dist/src/core/index.js +26 -0
  21. package/dist/src/core/interfaces.js +2 -0
  22. package/dist/src/core/pipelines/PipelineStrategy.js +97 -0
  23. package/dist/src/core/types.js +300 -0
  24. package/dist/src/locales/en.json +293 -0
  25. package/dist/src/locales/fr.json +293 -0
  26. package/dist/src/templates/docker/django.Dockerfile.ejs +21 -0
  27. package/dist/src/templates/docker/dockerignore.ejs +12 -0
  28. package/dist/src/templates/docker/go.Dockerfile.ejs +20 -0
  29. package/dist/src/templates/docker/nestjs.Dockerfile.ejs +25 -0
  30. package/dist/src/templates/docker/node.Dockerfile.ejs +13 -0
  31. package/dist/src/templates/docker/python.Dockerfile.ejs +13 -0
  32. package/dist/src/templates/docker/springboot.Dockerfile.ejs +25 -0
  33. package/dist/src/templates/en/architect.md.ejs +85 -0
  34. package/dist/src/templates/en/ba.md.ejs +88 -0
  35. package/dist/src/templates/en/data.md.ejs +47 -0
  36. package/dist/src/templates/en/dev.md.ejs +77 -0
  37. package/dist/src/templates/en/devops.md.ejs +54 -0
  38. package/dist/src/templates/en/fragments/arch/feature-sliced.md.ejs +12 -0
  39. package/dist/src/templates/en/fragments/arch/hexagonal.md.ejs +14 -0
  40. package/dist/src/templates/en/fragments/arch/mvc.md.ejs +11 -0
  41. package/dist/src/templates/en/fragments/aspnet-core.md.ejs +11 -0
  42. package/dist/src/templates/en/fragments/base-rules.md.ejs +5 -0
  43. package/dist/src/templates/en/fragments/django.md.ejs +12 -0
  44. package/dist/src/templates/en/fragments/fastapi.md.ejs +11 -0
  45. package/dist/src/templates/en/fragments/flutter.md.ejs +11 -0
  46. package/dist/src/templates/en/fragments/nestjs.md.ejs +5 -0
  47. package/dist/src/templates/en/fragments/nextjs.md.ejs +10 -0
  48. package/dist/src/templates/en/fragments/react-native.md.ejs +12 -0
  49. package/dist/src/templates/en/fragments/react.md.ejs +5 -0
  50. package/dist/src/templates/en/fragments/rigor/legacy.md.ejs +6 -0
  51. package/dist/src/templates/en/fragments/rigor/prototype.md.ejs +6 -0
  52. package/dist/src/templates/en/fragments/rigor/strict.md.ejs +7 -0
  53. package/dist/src/templates/en/fragments/rust.md.ejs +11 -0
  54. package/dist/src/templates/en/fragments/scrypto.md.ejs +8 -0
  55. package/dist/src/templates/en/fragments/solidity.md.ejs +20 -0
  56. package/dist/src/templates/en/fragments/spring-boot.md.ejs +13 -0
  57. package/dist/src/templates/en/guide.txt +48 -0
  58. package/dist/src/templates/en/lead.md.ejs +76 -0
  59. package/dist/src/templates/en/pipelines/github-dotnet.yml.ejs +24 -0
  60. package/dist/src/templates/en/pipelines/github-flutter.yml.ejs +24 -0
  61. package/dist/src/templates/en/pipelines/github-nestjs.yml.ejs +26 -0
  62. package/dist/src/templates/en/pipelines/github-react.yml.ejs +26 -0
  63. package/dist/src/templates/en/pipelines/github-rust.yml.ejs +38 -0
  64. package/dist/src/templates/en/pipelines/github-scrypto.yml.ejs +34 -0
  65. package/dist/src/templates/en/po.md.ejs +86 -0
  66. package/dist/src/templates/en/project-context.md.ejs +26 -0
  67. package/dist/src/templates/en/qa.md.ejs +103 -0
  68. package/dist/src/templates/en/rules.md.ejs +30 -0
  69. package/dist/src/templates/en/security.md.ejs +55 -0
  70. package/dist/src/templates/en/techwriter.md.ejs +46 -0
  71. package/dist/src/templates/fr/architect.md.ejs +15 -0
  72. package/dist/src/templates/fr/ba.md.ejs +11 -0
  73. package/dist/src/templates/fr/data.md.ejs +47 -0
  74. package/dist/src/templates/fr/dev.md.ejs +11 -0
  75. package/dist/src/templates/fr/devops.md.ejs +54 -0
  76. package/dist/src/templates/fr/fragments/arch/feature-sliced.md.ejs +12 -0
  77. package/dist/src/templates/fr/fragments/arch/hexagonal.md.ejs +14 -0
  78. package/dist/src/templates/fr/fragments/arch/mvc.md.ejs +11 -0
  79. package/dist/src/templates/fr/fragments/aspnet-core.md.ejs +11 -0
  80. package/dist/src/templates/fr/fragments/flutter.md.ejs +11 -0
  81. package/dist/src/templates/fr/fragments/rigor/legacy.md.ejs +6 -0
  82. package/dist/src/templates/fr/fragments/rigor/prototype.md.ejs +6 -0
  83. package/dist/src/templates/fr/fragments/rigor/strict.md.ejs +7 -0
  84. package/dist/src/templates/fr/fragments/rust.md.ejs +10 -0
  85. package/dist/src/templates/fr/fragments/scrypto.md.ejs +8 -0
  86. package/dist/src/templates/fr/guide.txt +47 -0
  87. package/dist/src/templates/fr/lead.md.ejs +12 -0
  88. package/dist/src/templates/fr/po.md.ejs +11 -0
  89. package/dist/src/templates/fr/project-context.md.ejs +28 -0
  90. package/dist/src/templates/fr/qa.md.ejs +14 -0
  91. package/dist/src/templates/fr/rules.md.ejs +30 -0
  92. package/dist/src/templates/fr/security.md.ejs +55 -0
  93. package/dist/src/templates/fr/techwriter.md.ejs +46 -0
  94. package/dist/src/templates/gitignore/dotnet.txt +6 -0
  95. package/dist/src/templates/gitignore/go.txt +15 -0
  96. package/dist/src/templates/gitignore/java.txt +4 -0
  97. package/dist/src/templates/gitignore/jetbrains.txt +4 -0
  98. package/dist/src/templates/gitignore/linux.txt +5 -0
  99. package/dist/src/templates/gitignore/macos.txt +3 -0
  100. package/dist/src/templates/gitignore/node.txt +11 -0
  101. package/dist/src/templates/gitignore/python.txt +10 -0
  102. package/dist/src/templates/gitignore/rust.txt +3 -0
  103. package/dist/src/templates/gitignore/solidity.txt +19 -0
  104. package/dist/src/templates/gitignore/vscode.txt +6 -0
  105. package/dist/src/templates/gitignore/windows.txt +4 -0
  106. package/dist/tests/commands/InitCommand.spec.js +529 -0
  107. package/dist/tests/commands/InitConfig.spec.js +108 -0
  108. package/dist/tests/core/ConfigService.spec.js +97 -0
  109. package/dist/tests/core/ContextGenerator.spec.js +51 -0
  110. package/dist/tests/core/PipelineGenerator.spec.js +206 -0
  111. package/dist/tests/core/RulesComposer.spec.js +89 -0
  112. package/dist/tests/core/StackDetector.spec.js +69 -0
  113. package/dist/tests/core/Types.spec.js +243 -0
  114. package/dist/tests/core/WorkflowGenerator.spec.js +99 -0
  115. package/package.json +55 -0
@@ -0,0 +1,293 @@
1
+ {
2
+ "prompts": {
3
+ "welcome": "Bienvenue dans l'initialisation Antigravity Workflow !",
4
+ "intro": "Cet outil va vous aider à générer les workflows agents pour votre projet.\n",
5
+ "language_selection": "Select language / Choisissez votre langue",
6
+ "project_name": "Nom du projet :",
7
+ "project_description": "Description du projet :",
8
+ "build_command": "Quelle est votre commande de build ?",
9
+ "test_command": "Quelle est votre commande de test ?",
10
+ "lint_command": "Quelle est votre commande de lint ?",
11
+ "format_command": "Quelle est votre commande de formatage ?",
12
+ "workflows_selection": "Quels workflows souhaitez-vous générer ?",
13
+ "confirm": "Prêt à générer les fichiers ?",
14
+ "cancelled": "Opération annulée.",
15
+ "success": "Workflows générés avec succès !",
16
+ "failed": "Échec de l'initialisation.",
17
+ "frontend": "Framework Frontend :",
18
+ "backend": "Framework Backend :",
19
+ "mobile": "Framework Mobile (si applicable) :",
20
+ "smart_contract": "Framework Smart Contract :",
21
+ "architecture": "Pattern d'Architecture :",
22
+ "rigor": "Niveau de Rigueur :",
23
+ "rigor_hint": "Strict=TDD+couverture élevée, Standard=équilibré, Prototype=vitesse, Legacy=refactoring prudent",
24
+ "is_monorepo": "Est-ce un Monorepo ?",
25
+ "monorepo_apps": "Listez vos applications (séparées par des virgules) :",
26
+ "monorepo_tool": "Quel outil monorepo utilisez-vous ?",
27
+ "ide_integration": "Avec quels IDEs IA souhaitez-vous intégrer ?",
28
+ "version_control": "Plateforme de gestion de version :",
29
+ "branching_strategy": "Stratégie de branching :",
30
+ "commit_convention": "Convention de messages de commit :",
31
+ "package_manager": "Gestionnaire de paquets :",
32
+ "database": "Technologie de base de données :",
33
+ "orm": "ORM/ODM :",
34
+ "testing_framework": "Framework de test :",
35
+ "coverage_target": "Couverture de test cible :",
36
+ "deployment_platform": "Plateforme de déploiement :",
37
+ "containerization": "Conteneurisation :",
38
+ "environments": "Environnements (séparés par des virgules, ex: dev,staging,prod) :",
39
+ "security_scanning": "Outils d'analyse de sécurité :",
40
+ "documentation_style": "Style de documentation :",
41
+ "linting_tools": "Outils de Linting & Formatage :",
42
+ "pr_approvals": "Combien d'approbations PR sont requises ?",
43
+ "pre_commit_hooks": "Activer les pre-commit hooks ?",
44
+ "block_merge_failing": "Bloquer le merge sur les checks en échec ?",
45
+ "interface_prefix": "Convention de préfixe d'interface (ex: I pour IUserService) :",
46
+ "repository_pattern": "Pattern de repository :"
47
+ },
48
+ "roles": {
49
+ "dev": "Développeur (Boucle Standard)",
50
+ "qa": "QA (Test & Qualité)",
51
+ "lead": "Lead Développeur (Standards)",
52
+ "architect": "Architecte (Conception & Décisions)",
53
+ "po": "Product Owner (Backlog)",
54
+ "ba": "Business Analyst (Specs)",
55
+ "devops": "DevOps (CI/CD & Infrastructure)",
56
+ "security": "Ingénieur Sécurité (Audits & Conformité)",
57
+ "techwriter": "Rédacteur Technique (Documentation)",
58
+ "data": "Data Engineer (Pipelines & Analytics)",
59
+ "rules": "Règles Agent (.agent/rules)"
60
+ },
61
+ "frameworks": {
62
+ "frontend": {
63
+ "react": "React",
64
+ "nextjs": "Next.js (React SSR/SSG)",
65
+ "vue": "Vue.js",
66
+ "nuxtjs": "Nuxt.js (Vue SSR/SSG)",
67
+ "angular": "Angular",
68
+ "svelte": "Svelte",
69
+ "sveltekit": "SvelteKit",
70
+ "remix": "Remix",
71
+ "astro": "Astro",
72
+ "flutter": "Flutter (Web)",
73
+ "react-native": "React Native (Web)",
74
+ "none": "Aucun"
75
+ },
76
+ "backend": {
77
+ "node": "Node.js (Simple)",
78
+ "nestjs": "NestJS",
79
+ "express": "Express.js",
80
+ "fastify": "Fastify",
81
+ "python": "Python (Simple)",
82
+ "fastapi": "FastAPI",
83
+ "django": "Django",
84
+ "flask": "Flask",
85
+ "aspnet-core": "ASP.NET Core",
86
+ "spring-boot": "Spring Boot (Java)",
87
+ "go": "Go (Simple)",
88
+ "gin": "Gin (Go)",
89
+ "rust": "Rust",
90
+ "elixir": "Elixir/Phoenix",
91
+ "none": "Aucun"
92
+ },
93
+ "mobile": {
94
+ "flutter": "Flutter",
95
+ "react-native": "React Native",
96
+ "swift": "Swift/SwiftUI (iOS)",
97
+ "kotlin": "Kotlin (Android)",
98
+ "none": "Aucun"
99
+ },
100
+ "smartContract": {
101
+ "scrypto": "Scrypto (Radix)",
102
+ "solidity": "Solidity (Ethereum/EVM)",
103
+ "move": "Move (Sui/Aptos)",
104
+ "anchor": "Anchor (Solana)",
105
+ "ink": "ink! (Polkadot)",
106
+ "none": "Aucun"
107
+ }
108
+ },
109
+ "options": {
110
+ "architecture": {
111
+ "hexagonal": "Hexagonal (Ports & Adaptateurs)",
112
+ "clean": "Clean Architecture",
113
+ "mvc": "MVC (Modèle-Vue-Contrôleur)",
114
+ "feature-sliced": "Feature-Sliced Design (FSD)",
115
+ "vertical-slice": "Vertical Slice",
116
+ "layered": "En couches (N-Tiers)",
117
+ "microservices": "Microservices",
118
+ "none": "Aucun / Personnalisé"
119
+ },
120
+ "rigor": {
121
+ "strict": "Strict (TDD, 100% couverture, pas de any)",
122
+ "standard": "Standard (Bonnes pratiques, 80% couverture)",
123
+ "prototype": "Prototype (Vitesse d'abord, tests minimaux)",
124
+ "legacy": "Legacy (Refactoring prudent)"
125
+ },
126
+ "versionControl": {
127
+ "github": "GitHub",
128
+ "gitlab": "GitLab",
129
+ "azure-devops": "Azure DevOps",
130
+ "bitbucket": "Bitbucket",
131
+ "none": "Aucun / Auto-hébergé"
132
+ },
133
+ "branching": {
134
+ "gitflow": "GitFlow",
135
+ "github-flow": "GitHub Flow",
136
+ "trunk-based": "Trunk-Based Development",
137
+ "gitlab-flow": "GitLab Flow",
138
+ "custom": "Personnalisé"
139
+ },
140
+ "commit": {
141
+ "conventional": "Conventional Commits (feat, fix, chore...)",
142
+ "gitmoji": "Gitmoji (🎉 ✨ 🐛...)",
143
+ "angular": "Convention Angular",
144
+ "semantic": "Versioning Sémantique",
145
+ "custom": "Personnalisé",
146
+ "none": "Aucun"
147
+ },
148
+ "packageManager": {
149
+ "npm": "npm",
150
+ "yarn": "Yarn",
151
+ "pnpm": "pnpm",
152
+ "bun": "Bun",
153
+ "pip": "pip",
154
+ "poetry": "Poetry",
155
+ "uv": "uv",
156
+ "cargo": "Cargo",
157
+ "nuget": "NuGet",
158
+ "maven": "Maven",
159
+ "gradle": "Gradle",
160
+ "go-modules": "Go Modules",
161
+ "none": "Aucun"
162
+ },
163
+ "database": {
164
+ "postgresql": "PostgreSQL",
165
+ "mysql": "MySQL",
166
+ "mariadb": "MariaDB",
167
+ "sqlserver": "SQL Server",
168
+ "oracle": "Oracle Database",
169
+ "mongodb": "MongoDB",
170
+ "sqlite": "SQLite",
171
+ "supabase": "Supabase",
172
+ "firebase": "Firebase/Firestore",
173
+ "dynamodb": "DynamoDB",
174
+ "redis": "Redis",
175
+ "cassandra": "Cassandra",
176
+ "cockroachdb": "CockroachDB",
177
+ "planetscale": "PlanetScale",
178
+ "neon": "Neon",
179
+ "none": "Aucun"
180
+ },
181
+ "orm": {
182
+ "typeorm": "TypeORM",
183
+ "prisma": "Prisma",
184
+ "mikroorm": "MikroORM",
185
+ "drizzle": "Drizzle",
186
+ "sequelize": "Sequelize",
187
+ "knex": "Knex.js",
188
+ "mongoose": "Mongoose",
189
+ "sqlalchemy": "SQLAlchemy",
190
+ "django-orm": "Django ORM",
191
+ "entity-framework": "Entity Framework",
192
+ "dapper": "Dapper",
193
+ "gorm": "GORM (Go)",
194
+ "diesel": "Diesel (Rust)",
195
+ "ecto": "Ecto (Elixir)",
196
+ "none": "Aucun"
197
+ },
198
+ "testing": {
199
+ "jest": "Jest",
200
+ "vitest": "Vitest",
201
+ "mocha": "Mocha",
202
+ "playwright": "Playwright",
203
+ "cypress": "Cypress",
204
+ "testing-library": "Testing Library",
205
+ "pytest": "pytest",
206
+ "unittest": "unittest",
207
+ "xunit": "xUnit",
208
+ "nunit": "NUnit",
209
+ "junit": "JUnit",
210
+ "go-test": "Go Test",
211
+ "rust-test": "Rust cargo test",
212
+ "exunit": "ExUnit (Elixir)",
213
+ "none": "Aucun"
214
+ },
215
+ "coverage": {
216
+ "100": "100% (Couverture complète)",
217
+ "80": "80% (Élevée)",
218
+ "60": "60% (Standard)",
219
+ "40": "40% (Minimale)",
220
+ "none": "Pas d'objectif"
221
+ },
222
+ "deployment": {
223
+ "vercel": "Vercel",
224
+ "netlify": "Netlify",
225
+ "aws": "AWS",
226
+ "azure": "Azure",
227
+ "gcp": "Google Cloud Platform",
228
+ "railway": "Railway",
229
+ "render": "Render",
230
+ "fly-io": "Fly.io",
231
+ "heroku": "Heroku",
232
+ "cloudflare": "Cloudflare Pages/Workers",
233
+ "docker": "Docker (Auto-géré)",
234
+ "kubernetes": "Kubernetes",
235
+ "vps": "VPS (Manuel)",
236
+ "self-hosted": "Auto-hébergé",
237
+ "none": "Aucun"
238
+ },
239
+ "containerization": {
240
+ "docker": "Docker",
241
+ "docker-compose": "Docker Compose",
242
+ "kubernetes": "Kubernetes",
243
+ "podman": "Podman",
244
+ "none": "Aucun"
245
+ },
246
+ "security": {
247
+ "snyk": "Snyk",
248
+ "dependabot": "Dependabot",
249
+ "renovate": "Renovate",
250
+ "npm-audit": "npm audit",
251
+ "trivy": "Trivy",
252
+ "sonarqube": "SonarQube",
253
+ "codeql": "CodeQL",
254
+ "none": "Aucun"
255
+ },
256
+ "monorepoTool": {
257
+ "turborepo": "Turborepo",
258
+ "nx": "Nx",
259
+ "lerna": "Lerna",
260
+ "rush": "Rush",
261
+ "pnpm-workspaces": "pnpm Workspaces",
262
+ "yarn-workspaces": "Yarn Workspaces",
263
+ "none": "Aucun"
264
+ },
265
+ "documentation": {
266
+ "jsdoc": "JSDoc",
267
+ "tsdoc": "TSDoc",
268
+ "openapi": "OpenAPI/Swagger",
269
+ "adr": "ADR (Architecture Decision Records)",
270
+ "markdown": "READMEs Markdown",
271
+ "none": "Aucun"
272
+ },
273
+ "linting": {
274
+ "eslint": "ESLint",
275
+ "biome": "Biome",
276
+ "prettier": "Prettier",
277
+ "oxlint": "Oxlint",
278
+ "ruff": "Ruff (Python)",
279
+ "black": "Black (Python)",
280
+ "rustfmt": "rustfmt",
281
+ "gofmt": "gofmt",
282
+ "credo": "Credo (Elixir)",
283
+ "none": "Aucun"
284
+ },
285
+ "ide": {
286
+ "cursor": "Cursor (.cursor/rules)",
287
+ "windsurf": "Windsurf (.windsurfrules)",
288
+ "gemini": "Gemini Code Assist (.gemini)",
289
+ "copilot": "GitHub Copilot (.github/copilot)",
290
+ "cody": "Sourcegraph Cody"
291
+ }
292
+ }
293
+ }
@@ -0,0 +1,21 @@
1
+ # Build stage
2
+ FROM python:3.9-slim
3
+
4
+ WORKDIR /app
5
+
6
+ # Install dependencies
7
+ COPY requirements.txt .
8
+ RUN pip install --no-cache-dir -r requirements.txt
9
+
10
+ # Copy project
11
+ COPY . .
12
+
13
+ # Environment variables
14
+ ENV PYTHONUNBUFFERED=1
15
+ ENV PORT=<%= port %>
16
+
17
+ # Expose port
18
+ EXPOSE <%= port %>
19
+
20
+ # Run command
21
+ CMD <%= startCommand %>
@@ -0,0 +1,12 @@
1
+ node_modules
2
+ dist
3
+ build
4
+ target
5
+ out
6
+ .git
7
+ .env
8
+ Dockerfile
9
+ .dockerignore
10
+ .idea
11
+ .vscode
12
+ coverage
@@ -0,0 +1,20 @@
1
+ # Build stage
2
+ FROM golang:1.21-alpine AS builder
3
+
4
+ WORKDIR /app
5
+
6
+ COPY go.mod go.sum ./
7
+ RUN go mod download
8
+
9
+ COPY . .
10
+ RUN CGO_ENABLED=0 GOOS=linux go build -o main .
11
+
12
+ # Run stage
13
+ FROM alpine:latest
14
+
15
+ WORKDIR /app
16
+ COPY --from=builder /app/main .
17
+
18
+ EXPOSE <%= port %>
19
+
20
+ CMD ["./main"]
@@ -0,0 +1,25 @@
1
+ # Build stage
2
+ FROM node:18-alpine AS builder
3
+
4
+ WORKDIR /app
5
+
6
+ COPY package.json <%= packageManager === 'npm' ? 'package-lock.json' : (packageManager === 'yarn' ? 'yarn.lock' : 'pnpm-lock.yaml') %> ./
7
+
8
+ RUN <%= installCommand %>
9
+
10
+ COPY . .
11
+
12
+ RUN <%= buildCommand %>
13
+
14
+ # Production stage
15
+ FROM node:18-alpine
16
+
17
+ WORKDIR /app
18
+
19
+ COPY --from=builder /app/dist ./dist
20
+ COPY --from=builder /app/node_modules ./node_modules
21
+ COPY --from=builder /app/package.json ./package.json
22
+
23
+ EXPOSE <%= port %>
24
+
25
+ CMD [ "<%= startCommand.split(' ')[0] %>", "<%= startCommand.split(' ').slice(1).join('", "') %>" ]
@@ -0,0 +1,13 @@
1
+ FROM node:18-alpine
2
+
3
+ WORKDIR /app
4
+
5
+ COPY package.json <%= packageManager === 'npm' ? 'package-lock.json' : (packageManager === 'yarn' ? 'yarn.lock' : 'pnpm-lock.yaml') %> ./
6
+
7
+ RUN <%= installCommand %>
8
+
9
+ COPY . .
10
+
11
+ EXPOSE <%= port %>
12
+
13
+ CMD [ "<%= startCommand.split(' ')[0] %>", "<%= startCommand.split(' ').slice(1).join('", "') %>" ]
@@ -0,0 +1,13 @@
1
+ FROM python:3.9-slim
2
+
3
+ WORKDIR /app
4
+
5
+ COPY requirements.txt .
6
+
7
+ RUN <%= installCommand %>
8
+
9
+ COPY . .
10
+
11
+ EXPOSE <%= port %>
12
+
13
+ CMD <%= startCommand %>
@@ -0,0 +1,25 @@
1
+ # Build stage
2
+ FROM eclipse-temurin:17-jdk-jammy AS builder
3
+
4
+ WORKDIR /app
5
+ COPY . .
6
+
7
+ <% if (packageManager === 'gradle') { %>
8
+ RUN ./gradlew build -x test
9
+ <% } else { %>
10
+ RUN mvn package -DskipTests
11
+ <% } %>
12
+
13
+ # Run stage
14
+ FROM eclipse-temurin:17-jre-jammy
15
+
16
+ WORKDIR /app
17
+ <% if (packageManager === 'gradle') { %>
18
+ COPY --from=builder /app/build/libs/*.jar app.jar
19
+ <% } else { %>
20
+ COPY --from=builder /app/target/*.jar app.jar
21
+ <% } %>
22
+
23
+ EXPOSE <%= port %>
24
+
25
+ CMD ["java", "-jar", "app.jar"]
@@ -0,0 +1,85 @@
1
+ ---
2
+ description: Architecture & Design Workflow
3
+ ---
4
+
5
+ 1. **System Design**:
6
+ - Define high-level architecture (Components, Interactions).
7
+ - Select appropriate technologies and patterns.
8
+ - Consider scalability, maintainability, and security.
9
+ - Create C4 diagrams (Context, Container, Component, Code).
10
+
11
+ 2. **Architecture Decision Records (ADRs)**:
12
+ - Document significant technical decisions.
13
+ - Include context, options considered, and rationale.
14
+ - Keep ADRs versioned with the codebase.
15
+ - Template: `docs/adr/NNNN-title.md`.
16
+
17
+ 3. **API Design**:
18
+ - Define API versioning strategy (URL, header, content-type).
19
+ - Design RESTful or GraphQL endpoints consistently.
20
+ - Document with OpenAPI/Swagger specifications.
21
+ - Consider backwards compatibility and deprecation policies.
22
+
23
+ 4. **Event-Driven Architecture** (if applicable):
24
+ - Define event schemas and contracts.
25
+ - Use event sourcing for audit trails.
26
+ - Implement idempotent consumers.
27
+ - Document event flows and subscriptions.
28
+
29
+ 5. **Microservices vs Monolith**:
30
+ - Evaluate service boundaries based on domain.
31
+ - Consider team structure and deployment needs.
32
+ - Start monolithic, extract services when needed.
33
+ - Document inter-service communication patterns.
34
+
35
+ 6. **Infrastructure as Code (IaC)**:
36
+ - Review infrastructure architecture decisions.
37
+ - Ensure IaC modules are reusable and documented.
38
+ - Define environment-specific configurations.
39
+ - Plan for disaster recovery and failover.
40
+
41
+ 7. **Observability Stack**:
42
+ - **Logs**: Structured logging, centralized aggregation.
43
+ - **Metrics**: Key performance indicators, business metrics.
44
+ - **Traces**: Distributed tracing for request flows.
45
+ - **Alerts**: Define SLOs, SLIs, and alerting thresholds.
46
+
47
+ 8. **Performance Architecture**:
48
+ - Identify potential bottlenecks early.
49
+ - Design caching strategies (Redis, CDN, in-memory).
50
+ - Plan for horizontal scaling.
51
+ - Consider async processing for heavy workloads.
52
+
53
+ 9. **Security Architecture**:
54
+ - Define authentication and authorization strategy.
55
+ - Design data encryption at rest and in transit.
56
+ - Plan network segmentation and access controls.
57
+ - Include threat modeling in design reviews.
58
+
59
+ 10. **Disaster Recovery**:
60
+ - Define RPO (Recovery Point Objective) and RTO (Recovery Time Objective).
61
+ - Document backup and restore procedures.
62
+ - Plan for multi-region deployment if needed.
63
+ - Schedule regular DR drills.
64
+
65
+ 11. **Standards & Governance**:
66
+ - Define overarching technical standards.
67
+ - Establish code review guidelines.
68
+ - Create architecture review checkpoints.
69
+ - Maintain technology radar.
70
+
71
+ 12. **Feasibility & Prototyping**:
72
+ - Prototype risky components (PoC).
73
+ - Verify non-functional requirements (Performance, Security).
74
+ - Document learnings and recommendations.
75
+
76
+ <%- folderStructure %>
77
+
78
+ ## Architecture Checklist
79
+ - [ ] ADR exists for significant decisions
80
+ - [ ] C4 diagrams are up to date
81
+ - [ ] API contracts are documented
82
+ - [ ] Observability is planned
83
+ - [ ] Security considerations addressed
84
+ - [ ] Scalability strategy defined
85
+ - [ ] DR plan documented
@@ -0,0 +1,88 @@
1
+ ---
2
+ description: Business Analyst Workflow
3
+ ---
4
+
5
+ 1. **Requirements Analysis**:
6
+ - Gather requirements from stakeholders.
7
+ - Analyze business processes and data flows.
8
+ - Identify gaps between current and desired state.
9
+ - Document assumptions and constraints.
10
+
11
+ 2. **Domain-Driven Design (DDD)**:
12
+ - Define the ubiquitous language with stakeholders.
13
+ - Identify bounded contexts and their boundaries.
14
+ - Create domain models and entity relationships.
15
+ - Document aggregates and invariants.
16
+
17
+ 3. **Event Storming**:
18
+ - Facilitate event storming workshops.
19
+ - Identify domain events (orange stickies).
20
+ - Map commands (blue) and actors (yellow).
21
+ - Define read models and policies.
22
+ - Document the resulting event flow.
23
+
24
+ 4. **BPMN Diagrams**:
25
+ - Create business process diagrams.
26
+ - Document workflows and decision points.
27
+ - Identify automation opportunities.
28
+ - Validate with stakeholders.
29
+
30
+ 5. **Functional Specifications**:
31
+ - Write detailed functional specifications.
32
+ - Include business rules and validations.
33
+ - Document data requirements.
34
+ - Create scenarios and use cases.
35
+
36
+ 6. **Data Dictionary**:
37
+ - Maintain a glossary of business terms.
38
+ - Define data entities and attributes.
39
+ - Document data sources and flows.
40
+ - Specify data validation rules.
41
+
42
+ 7. **Mockups & Wireframes**:
43
+ - Create mockups or wireframes if needed.
44
+ - Validate UI flows with stakeholders.
45
+ - Document interaction patterns.
46
+ - Collaborate with UX designers.
47
+
48
+ 8. **API Contract Documentation**:
49
+ - Define API endpoints and payloads.
50
+ - Specify request/response formats.
51
+ - Document error codes and meanings.
52
+ - Coordinate with developers on contracts.
53
+
54
+ 9. **Collaboration**:
55
+ - Bridge the gap between business and technical teams.
56
+ - Clarify edge cases and business rules.
57
+ - Translate technical constraints to business impact.
58
+ - Facilitate communication and alignment.
59
+
60
+ 10. **Validation**:
61
+ - Verify implemented features match business needs.
62
+ - Conduct UAT (User Acceptance Testing).
63
+ - Collect feedback and document adjustments.
64
+ - Sign off on delivered functionality.
65
+
66
+ 11. **Change Management**:
67
+ - Document change requests.
68
+ - Assess impact of proposed changes.
69
+ - Communicate changes to stakeholders.
70
+ - Update specifications accordingly.
71
+
72
+ ## DDD Artifacts Checklist
73
+ - [ ] Ubiquitous language documented
74
+ - [ ] Bounded contexts identified
75
+ - [ ] Domain events mapped
76
+ - [ ] Aggregates defined
77
+ - [ ] Entity relationships documented
78
+ - [ ] Business rules captured
79
+
80
+ ## Event Storming Legend
81
+ | Color | Meaning |
82
+ |-------|---------|
83
+ | 🟠 Orange | Domain Event |
84
+ | 🔵 Blue | Command |
85
+ | 🟡 Yellow | Actor/User |
86
+ | 🟣 Purple | Policy/Process |
87
+ | 🟢 Green | Read Model |
88
+ | 🔴 Red | Hot Spot/Problem |
@@ -0,0 +1,47 @@
1
+ ---
2
+ description: Data Engineering & Analytics Workflow
3
+ ---
4
+
5
+ 1. **Data Modeling**:
6
+ - Design efficient schemas for data warehouses (Star/Snowflake schema).
7
+ - Define data types and constraints rigorously.
8
+ - Document entity relationships and lineage.
9
+ - Optimize for query performance (partitioning, indexing).
10
+
11
+ 2. **ETL/ELT Pipelines**:
12
+ - Build robust data ingestion pipelines (Airflow, Dagster, Prefect).
13
+ - Ensure idempotency and fault tolerance.
14
+ - Monitor data freshness and volume.
15
+ - Handle schema evolution gracefully.
16
+
17
+ 3. **Data Quality & Governance**:
18
+ - Implement data quality checks (Great Expectations, dbt tests).
19
+ - Monitor for nulls, duplicates, and anomalies.
20
+ - Manage PII and sensitive data access (masking, tokenization).
21
+ - Catalog data assets for discoverability.
22
+
23
+ 4. **Infrastructure & Storage**:
24
+ - Manage data lake/warehouse infrastructure (Snowflake, BigQuery, S3).
25
+ - Optimize storage costs and lifecycle policies.
26
+ - Configure access controls and networking.
27
+
28
+ 5. **Transformation Logic**:
29
+ - Use dbt for modular SQL transformations.
30
+ - Version control all transformation logic.
31
+ - Review complex SQL queries for performance.
32
+ - Document business logic within the code.
33
+
34
+ 6. **Reporting & Analytics Support**:
35
+ - Create clean, aggregated views for BI tools (Tableau, Looker, PowerBI).
36
+ - Collaborate with analysts to define metrics.
37
+ - Ensure data consistency across reports.
38
+
39
+ <%- folderStructure %>
40
+
41
+ ## Data Engineer Checklist
42
+ - [ ] Data models are documented
43
+ - [ ] Pipelines are idempotent and monitored
44
+ - [ ] Data quality tests pass
45
+ - [ ] PII is handled correctly
46
+ - [ ] Transformations are tested (dbt test)
47
+ - [ ] Lineage is clear