javi-forge 1.1.0 → 1.3.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 (238) hide show
  1. package/ci-local/ci-local.sh +38 -10
  2. package/ci-local/hooks/pre-commit +10 -155
  3. package/ci-local/hooks/pre-push +12 -29
  4. package/dist/commands/ci.d.ts +33 -0
  5. package/dist/commands/ci.js +341 -0
  6. package/dist/commands/init.js +5 -0
  7. package/dist/index.js +39 -5
  8. package/dist/lib/docker.d.ts +43 -0
  9. package/dist/lib/docker.js +223 -0
  10. package/dist/ui/CI.d.ts +9 -0
  11. package/dist/ui/CI.js +91 -0
  12. package/package.json +9 -1
  13. package/ai-config/.skillignore +0 -15
  14. package/ai-config/AUTO_INVOKE.md +0 -300
  15. package/ai-config/agents/_TEMPLATE.md +0 -93
  16. package/ai-config/agents/business/api-designer.md +0 -1657
  17. package/ai-config/agents/business/business-analyst.md +0 -1331
  18. package/ai-config/agents/business/product-strategist.md +0 -206
  19. package/ai-config/agents/business/project-manager.md +0 -178
  20. package/ai-config/agents/business/requirements-analyst.md +0 -1277
  21. package/ai-config/agents/business/technical-writer.md +0 -1679
  22. package/ai-config/agents/creative/ux-designer.md +0 -205
  23. package/ai-config/agents/data-ai/ai-engineer.md +0 -487
  24. package/ai-config/agents/data-ai/analytics-engineer.md +0 -953
  25. package/ai-config/agents/data-ai/data-engineer.md +0 -173
  26. package/ai-config/agents/data-ai/data-scientist.md +0 -672
  27. package/ai-config/agents/data-ai/mlops-engineer.md +0 -814
  28. package/ai-config/agents/data-ai/prompt-engineer.md +0 -772
  29. package/ai-config/agents/development/angular-expert.md +0 -620
  30. package/ai-config/agents/development/backend-architect.md +0 -795
  31. package/ai-config/agents/development/database-specialist.md +0 -212
  32. package/ai-config/agents/development/frontend-specialist.md +0 -686
  33. package/ai-config/agents/development/fullstack-engineer.md +0 -668
  34. package/ai-config/agents/development/golang-pro.md +0 -338
  35. package/ai-config/agents/development/java-enterprise.md +0 -400
  36. package/ai-config/agents/development/javascript-pro.md +0 -422
  37. package/ai-config/agents/development/nextjs-pro.md +0 -474
  38. package/ai-config/agents/development/python-pro.md +0 -570
  39. package/ai-config/agents/development/react-pro.md +0 -487
  40. package/ai-config/agents/development/rust-pro.md +0 -246
  41. package/ai-config/agents/development/spring-boot-4-expert.md +0 -326
  42. package/ai-config/agents/development/typescript-pro.md +0 -336
  43. package/ai-config/agents/development/vue-specialist.md +0 -605
  44. package/ai-config/agents/infrastructure/cloud-architect.md +0 -472
  45. package/ai-config/agents/infrastructure/deployment-manager.md +0 -358
  46. package/ai-config/agents/infrastructure/devops-engineer.md +0 -455
  47. package/ai-config/agents/infrastructure/incident-responder.md +0 -519
  48. package/ai-config/agents/infrastructure/kubernetes-expert.md +0 -705
  49. package/ai-config/agents/infrastructure/monitoring-specialist.md +0 -674
  50. package/ai-config/agents/infrastructure/performance-engineer.md +0 -658
  51. package/ai-config/agents/orchestrator.md +0 -241
  52. package/ai-config/agents/quality/accessibility-auditor.md +0 -1204
  53. package/ai-config/agents/quality/code-reviewer-compact.md +0 -123
  54. package/ai-config/agents/quality/code-reviewer.md +0 -363
  55. package/ai-config/agents/quality/dependency-manager.md +0 -743
  56. package/ai-config/agents/quality/e2e-test-specialist.md +0 -1005
  57. package/ai-config/agents/quality/performance-tester.md +0 -1086
  58. package/ai-config/agents/quality/security-auditor.md +0 -133
  59. package/ai-config/agents/quality/test-engineer.md +0 -453
  60. package/ai-config/agents/specialists/api-designer.md +0 -87
  61. package/ai-config/agents/specialists/backend-architect.md +0 -73
  62. package/ai-config/agents/specialists/code-reviewer.md +0 -77
  63. package/ai-config/agents/specialists/db-optimizer.md +0 -75
  64. package/ai-config/agents/specialists/devops-engineer.md +0 -83
  65. package/ai-config/agents/specialists/documentation-writer.md +0 -78
  66. package/ai-config/agents/specialists/frontend-developer.md +0 -75
  67. package/ai-config/agents/specialists/performance-analyst.md +0 -82
  68. package/ai-config/agents/specialists/refactor-specialist.md +0 -74
  69. package/ai-config/agents/specialists/security-auditor.md +0 -74
  70. package/ai-config/agents/specialists/test-engineer.md +0 -81
  71. package/ai-config/agents/specialists/ux-consultant.md +0 -76
  72. package/ai-config/agents/specialized/agent-generator.md +0 -1190
  73. package/ai-config/agents/specialized/blockchain-developer.md +0 -149
  74. package/ai-config/agents/specialized/code-migrator.md +0 -892
  75. package/ai-config/agents/specialized/context-manager.md +0 -978
  76. package/ai-config/agents/specialized/documentation-writer.md +0 -1078
  77. package/ai-config/agents/specialized/ecommerce-expert.md +0 -1756
  78. package/ai-config/agents/specialized/embedded-engineer.md +0 -1714
  79. package/ai-config/agents/specialized/error-detective.md +0 -1034
  80. package/ai-config/agents/specialized/fintech-specialist.md +0 -1659
  81. package/ai-config/agents/specialized/freelance-project-planner-v2.md +0 -1988
  82. package/ai-config/agents/specialized/freelance-project-planner-v3.md +0 -2136
  83. package/ai-config/agents/specialized/freelance-project-planner-v4.md +0 -4503
  84. package/ai-config/agents/specialized/freelance-project-planner.md +0 -722
  85. package/ai-config/agents/specialized/game-developer.md +0 -1963
  86. package/ai-config/agents/specialized/healthcare-dev.md +0 -1620
  87. package/ai-config/agents/specialized/mobile-developer.md +0 -188
  88. package/ai-config/agents/specialized/parallel-plan-executor.md +0 -506
  89. package/ai-config/agents/specialized/plan-executor.md +0 -485
  90. package/ai-config/agents/specialized/solo-dev-planner-modular/00-INDEX.md +0 -485
  91. package/ai-config/agents/specialized/solo-dev-planner-modular/01-CORE.md +0 -3493
  92. package/ai-config/agents/specialized/solo-dev-planner-modular/02-SELF-CORRECTION.md +0 -778
  93. package/ai-config/agents/specialized/solo-dev-planner-modular/03-PROGRESSIVE-SETUP.md +0 -918
  94. package/ai-config/agents/specialized/solo-dev-planner-modular/04-DEPLOYMENT.md +0 -1537
  95. package/ai-config/agents/specialized/solo-dev-planner-modular/05-TESTING.md +0 -2633
  96. package/ai-config/agents/specialized/solo-dev-planner-modular/06-OPERATIONS.md +0 -5610
  97. package/ai-config/agents/specialized/solo-dev-planner-modular/INSTALL.md +0 -335
  98. package/ai-config/agents/specialized/solo-dev-planner-modular/QUICK-REFERENCE.txt +0 -215
  99. package/ai-config/agents/specialized/solo-dev-planner-modular/README.md +0 -260
  100. package/ai-config/agents/specialized/solo-dev-planner-modular/START-HERE.md +0 -379
  101. package/ai-config/agents/specialized/solo-dev-planner-modular/WORKFLOW-DIAGRAM.md +0 -355
  102. package/ai-config/agents/specialized/solo-dev-planner-modular/solo-dev-planner.md +0 -279
  103. package/ai-config/agents/specialized/template-writer.md +0 -347
  104. package/ai-config/agents/specialized/test-runner.md +0 -99
  105. package/ai-config/agents/specialized/vibekanban-smart-worker.md +0 -244
  106. package/ai-config/agents/specialized/wave-executor.md +0 -138
  107. package/ai-config/agents/specialized/workflow-optimizer.md +0 -1114
  108. package/ai-config/commands/git/changelog.md +0 -32
  109. package/ai-config/commands/git/ci-local.md +0 -70
  110. package/ai-config/commands/git/commit.md +0 -35
  111. package/ai-config/commands/git/fix-issue.md +0 -23
  112. package/ai-config/commands/git/pr-create.md +0 -42
  113. package/ai-config/commands/git/pr-review.md +0 -50
  114. package/ai-config/commands/git/worktree.md +0 -39
  115. package/ai-config/commands/refactoring/cleanup.md +0 -24
  116. package/ai-config/commands/refactoring/dead-code.md +0 -40
  117. package/ai-config/commands/refactoring/extract.md +0 -31
  118. package/ai-config/commands/testing/e2e.md +0 -30
  119. package/ai-config/commands/testing/tdd.md +0 -36
  120. package/ai-config/commands/testing/test-coverage.md +0 -30
  121. package/ai-config/commands/testing/test-fix.md +0 -24
  122. package/ai-config/commands/workflow/generate-agents-md.md +0 -85
  123. package/ai-config/commands/workflow/planning.md +0 -47
  124. package/ai-config/commands/workflows/compound.md +0 -89
  125. package/ai-config/commands/workflows/diagnose.md +0 -70
  126. package/ai-config/commands/workflows/discover.md +0 -86
  127. package/ai-config/commands/workflows/plan.md +0 -77
  128. package/ai-config/commands/workflows/review.md +0 -78
  129. package/ai-config/commands/workflows/work.md +0 -75
  130. package/ai-config/config.yaml +0 -18
  131. package/ai-config/hooks/_TEMPLATE.md +0 -96
  132. package/ai-config/hooks/block-dangerous-commands.md +0 -75
  133. package/ai-config/hooks/commit-guard.md +0 -90
  134. package/ai-config/hooks/context-loader.md +0 -73
  135. package/ai-config/hooks/improve-prompt.md +0 -91
  136. package/ai-config/hooks/learning-log.md +0 -72
  137. package/ai-config/hooks/model-router.md +0 -86
  138. package/ai-config/hooks/secret-scanner.md +0 -64
  139. package/ai-config/hooks/skill-validator.md +0 -102
  140. package/ai-config/hooks/task-artifact.md +0 -114
  141. package/ai-config/hooks/validate-workflow.md +0 -100
  142. package/ai-config/prompts/base.md +0 -71
  143. package/ai-config/prompts/modes/debug.md +0 -34
  144. package/ai-config/prompts/modes/deploy.md +0 -40
  145. package/ai-config/prompts/modes/research.md +0 -32
  146. package/ai-config/prompts/modes/review.md +0 -33
  147. package/ai-config/prompts/review-policy.md +0 -79
  148. package/ai-config/skills/_TEMPLATE.md +0 -157
  149. package/ai-config/skills/backend/api-gateway/SKILL.md +0 -254
  150. package/ai-config/skills/backend/bff-concepts/SKILL.md +0 -239
  151. package/ai-config/skills/backend/bff-spring/SKILL.md +0 -364
  152. package/ai-config/skills/backend/chi-router/SKILL.md +0 -396
  153. package/ai-config/skills/backend/error-handling/SKILL.md +0 -255
  154. package/ai-config/skills/backend/exceptions-spring/SKILL.md +0 -323
  155. package/ai-config/skills/backend/fastapi/SKILL.md +0 -302
  156. package/ai-config/skills/backend/gateway-spring/SKILL.md +0 -390
  157. package/ai-config/skills/backend/go-backend/SKILL.md +0 -457
  158. package/ai-config/skills/backend/gradle-multimodule/SKILL.md +0 -274
  159. package/ai-config/skills/backend/graphql-concepts/SKILL.md +0 -352
  160. package/ai-config/skills/backend/graphql-spring/SKILL.md +0 -398
  161. package/ai-config/skills/backend/grpc-concepts/SKILL.md +0 -283
  162. package/ai-config/skills/backend/grpc-spring/SKILL.md +0 -445
  163. package/ai-config/skills/backend/jwt-auth/SKILL.md +0 -412
  164. package/ai-config/skills/backend/notifications-concepts/SKILL.md +0 -259
  165. package/ai-config/skills/backend/recommendations-concepts/SKILL.md +0 -261
  166. package/ai-config/skills/backend/search-concepts/SKILL.md +0 -263
  167. package/ai-config/skills/backend/search-spring/SKILL.md +0 -375
  168. package/ai-config/skills/backend/spring-boot-4/SKILL.md +0 -172
  169. package/ai-config/skills/backend/websockets/SKILL.md +0 -532
  170. package/ai-config/skills/data-ai/ai-ml/SKILL.md +0 -423
  171. package/ai-config/skills/data-ai/analytics-concepts/SKILL.md +0 -195
  172. package/ai-config/skills/data-ai/analytics-spring/SKILL.md +0 -340
  173. package/ai-config/skills/data-ai/duckdb-analytics/SKILL.md +0 -440
  174. package/ai-config/skills/data-ai/langchain/SKILL.md +0 -238
  175. package/ai-config/skills/data-ai/mlflow/SKILL.md +0 -302
  176. package/ai-config/skills/data-ai/onnx-inference/SKILL.md +0 -290
  177. package/ai-config/skills/data-ai/powerbi/SKILL.md +0 -352
  178. package/ai-config/skills/data-ai/pytorch/SKILL.md +0 -274
  179. package/ai-config/skills/data-ai/scikit-learn/SKILL.md +0 -321
  180. package/ai-config/skills/data-ai/vector-db/SKILL.md +0 -301
  181. package/ai-config/skills/database/graph-databases/SKILL.md +0 -218
  182. package/ai-config/skills/database/graph-spring/SKILL.md +0 -361
  183. package/ai-config/skills/database/pgx-postgres/SKILL.md +0 -512
  184. package/ai-config/skills/database/redis-cache/SKILL.md +0 -343
  185. package/ai-config/skills/database/sqlite-embedded/SKILL.md +0 -388
  186. package/ai-config/skills/database/timescaledb/SKILL.md +0 -320
  187. package/ai-config/skills/docs/api-documentation/SKILL.md +0 -293
  188. package/ai-config/skills/docs/docs-spring/SKILL.md +0 -377
  189. package/ai-config/skills/docs/mustache-templates/SKILL.md +0 -190
  190. package/ai-config/skills/docs/technical-docs/SKILL.md +0 -447
  191. package/ai-config/skills/frontend/astro-ssr/SKILL.md +0 -441
  192. package/ai-config/skills/frontend/frontend-design/SKILL.md +0 -54
  193. package/ai-config/skills/frontend/frontend-web/SKILL.md +0 -368
  194. package/ai-config/skills/frontend/mantine-ui/SKILL.md +0 -396
  195. package/ai-config/skills/frontend/tanstack-query/SKILL.md +0 -439
  196. package/ai-config/skills/frontend/zod-validation/SKILL.md +0 -417
  197. package/ai-config/skills/frontend/zustand-state/SKILL.md +0 -350
  198. package/ai-config/skills/infrastructure/chaos-engineering/SKILL.md +0 -244
  199. package/ai-config/skills/infrastructure/chaos-spring/SKILL.md +0 -378
  200. package/ai-config/skills/infrastructure/devops-infra/SKILL.md +0 -435
  201. package/ai-config/skills/infrastructure/docker-containers/SKILL.md +0 -420
  202. package/ai-config/skills/infrastructure/kubernetes/SKILL.md +0 -456
  203. package/ai-config/skills/infrastructure/opentelemetry/SKILL.md +0 -546
  204. package/ai-config/skills/infrastructure/traefik-proxy/SKILL.md +0 -474
  205. package/ai-config/skills/infrastructure/woodpecker-ci/SKILL.md +0 -315
  206. package/ai-config/skills/mobile/ionic-capacitor/SKILL.md +0 -504
  207. package/ai-config/skills/mobile/mobile-ionic/SKILL.md +0 -448
  208. package/ai-config/skills/prompt-improver/SKILL.md +0 -125
  209. package/ai-config/skills/quality/ghagga-review/SKILL.md +0 -216
  210. package/ai-config/skills/references/hooks-patterns/SKILL.md +0 -238
  211. package/ai-config/skills/references/mcp-servers/SKILL.md +0 -275
  212. package/ai-config/skills/references/plugins-reference/SKILL.md +0 -110
  213. package/ai-config/skills/references/skills-reference/SKILL.md +0 -420
  214. package/ai-config/skills/references/subagent-templates/SKILL.md +0 -193
  215. package/ai-config/skills/systems-iot/modbus-protocol/SKILL.md +0 -410
  216. package/ai-config/skills/systems-iot/mqtt-rumqttc/SKILL.md +0 -408
  217. package/ai-config/skills/systems-iot/rust-systems/SKILL.md +0 -386
  218. package/ai-config/skills/systems-iot/tokio-async/SKILL.md +0 -324
  219. package/ai-config/skills/testing/playwright-e2e/SKILL.md +0 -289
  220. package/ai-config/skills/testing/testcontainers/SKILL.md +0 -299
  221. package/ai-config/skills/testing/vitest-testing/SKILL.md +0 -381
  222. package/ai-config/skills/workflow/ci-local-guide/SKILL.md +0 -118
  223. package/ai-config/skills/workflow/claude-automation-recommender/SKILL.md +0 -299
  224. package/ai-config/skills/workflow/claude-md-improver/SKILL.md +0 -158
  225. package/ai-config/skills/workflow/finishing-a-development-branch/SKILL.md +0 -117
  226. package/ai-config/skills/workflow/git-github/SKILL.md +0 -334
  227. package/ai-config/skills/workflow/git-github/references/examples.md +0 -160
  228. package/ai-config/skills/workflow/git-workflow/SKILL.md +0 -214
  229. package/ai-config/skills/workflow/ide-plugins/SKILL.md +0 -277
  230. package/ai-config/skills/workflow/ide-plugins-intellij/SKILL.md +0 -401
  231. package/ai-config/skills/workflow/obsidian-brain-workflow/SKILL.md +0 -199
  232. package/ai-config/skills/workflow/using-git-worktrees/SKILL.md +0 -100
  233. package/ai-config/skills/workflow/verification-before-completion/SKILL.md +0 -73
  234. package/ai-config/skills/workflow/wave-workflow/SKILL.md +0 -178
  235. package/schemas/agent.schema.json +0 -34
  236. package/schemas/ai-config.schema.json +0 -28
  237. package/schemas/plugin.schema.json +0 -62
  238. package/schemas/skill.schema.json +0 -44
@@ -1,254 +0,0 @@
1
- ---
2
- name: api-gateway
3
- description: >
4
- API Gateway concepts. Routing, rate limiting, authentication, load balancing.
5
- Trigger: API Gateway, routing, load balancing, reverse proxy, edge service
6
- tools:
7
- - Read
8
- - Write
9
- - Edit
10
- - Grep
11
- metadata:
12
- author: apigen-team
13
- version: "1.0"
14
- tags: [gateway, routing, microservices, edge]
15
- scope: ["**/gateway/**"]
16
- ---
17
-
18
- # API Gateway Concepts
19
-
20
- ## What is an API Gateway?
21
-
22
- ```
23
- Single entry point for all client requests
24
-
25
- ┌─────────────────┐
26
- │ Clients │
27
- │ (Web, Mobile) │
28
- └────────┬────────┘
29
-
30
- ┌────────▼────────┐
31
- │ API Gateway │
32
- │ (routing, │
33
- │ auth, rate │
34
- │ limiting) │
35
- └────────┬────────┘
36
-
37
- ┌─────────────┼─────────────┐
38
- │ │ │
39
- ┌───▼───┐ ┌───▼───┐ ┌───▼───┐
40
- │User │ │Order │ │Product│
41
- │Service│ │Service│ │Service│
42
- └───────┘ └───────┘ └───────┘
43
- ```
44
-
45
- ## Core Responsibilities
46
-
47
- ### Routing
48
- ```
49
- Route requests to appropriate backend services:
50
-
51
- /api/users/* → User Service
52
- /api/orders/* → Order Service
53
- /api/products/* → Product Service
54
-
55
- Path rewriting:
56
- /api/users/123 → /users/123 (strip prefix)
57
- ```
58
-
59
- ### Authentication/Authorization
60
- ```
61
- Centralized auth at edge:
62
- 1. Validate JWT token
63
- 2. Extract user context
64
- 3. Forward user info to services
65
- 4. Return 401/403 if invalid
66
-
67
- Benefits:
68
- - Services don't need auth logic
69
- - Consistent auth across services
70
- - Token validation cached
71
- ```
72
-
73
- ### Rate Limiting
74
- ```
75
- Protect services from overload:
76
-
77
- Per client:
78
- Anonymous: 60 req/min
79
- Authenticated: 1000 req/min
80
- Premium: 10000 req/min
81
-
82
- Per endpoint:
83
- /api/search: 30 req/min
84
- /api/login: 5 req/min
85
- ```
86
-
87
- ### Load Balancing
88
- ```
89
- Distribute traffic across instances:
90
-
91
- Strategies:
92
- - Round Robin
93
- - Least Connections
94
- - Weighted
95
- - IP Hash (sticky sessions)
96
-
97
- Health checks:
98
- - Remove unhealthy instances
99
- - Automatic failover
100
- ```
101
-
102
- ## Additional Features
103
-
104
- ### Request/Response Transformation
105
- ```
106
- Transform requests:
107
- - Add headers (correlation ID, auth)
108
- - Modify body
109
- - Change content type
110
-
111
- Transform responses:
112
- - Remove internal headers
113
- - Standardize error format
114
- - Add CORS headers
115
- ```
116
-
117
- ### Caching
118
- ```
119
- Cache responses at edge:
120
-
121
- Benefits:
122
- - Reduce backend load
123
- - Faster response times
124
- - Resilience (serve cached on failure)
125
-
126
- Strategies:
127
- - Cache by URL + headers
128
- - Cache invalidation
129
- - Vary by user/tenant
130
- ```
131
-
132
- ### Circuit Breaking
133
- ```
134
- Prevent cascade failures:
135
-
136
- States:
137
- - Closed: Normal operation
138
- - Open: Fail fast (service down)
139
- - Half-Open: Test recovery
140
-
141
- Configuration:
142
- - Failure threshold
143
- - Timeout
144
- - Recovery window
145
- ```
146
-
147
- ### Logging & Monitoring
148
- ```
149
- Centralized observability:
150
-
151
- Metrics:
152
- - Request rate
153
- - Error rate
154
- - Latency (P50, P95, P99)
155
- - Active connections
156
-
157
- Logging:
158
- - Access logs
159
- - Request/response bodies (debug)
160
- - Correlation IDs
161
-
162
- Tracing:
163
- - Distributed trace propagation
164
- - Span timing
165
- ```
166
-
167
- ## Gateway Patterns
168
-
169
- ### Backend for Frontend (BFF)
170
- ```
171
- Separate gateways per client type:
172
-
173
- Web BFF Gateway → Web-specific routes
174
- Mobile BFF Gateway → Mobile-optimized APIs
175
- Partner Gateway → B2B API contracts
176
- ```
177
-
178
- ### API Composition
179
- ```
180
- Aggregate multiple services:
181
-
182
- GET /api/dashboard
183
- → GET /users/me
184
- → GET /orders/recent
185
- → GET /notifications/unread
186
- → Combined response
187
- ```
188
-
189
- ### Canary Releases
190
- ```
191
- Route % of traffic to new version:
192
-
193
- v1 (stable): 95%
194
- v2 (canary): 5%
195
-
196
- Progressive rollout:
197
- Day 1: 5%
198
- Day 2: 25%
199
- Day 3: 50%
200
- Day 4: 100%
201
- ```
202
-
203
- ## Gateway Solutions
204
-
205
- ```
206
- | Solution | Type | Best For |
207
- |----------|------|----------|
208
- | Kong | Open source | Feature-rich, plugins |
209
- | AWS API Gateway | Managed | AWS ecosystem |
210
- | Apigee | Enterprise | API management |
211
- | NGINX | OSS | Performance |
212
- | Spring Cloud Gateway | Framework | Java/Spring |
213
- | Envoy | Proxy | Service mesh |
214
- | Traefik | Cloud-native | Kubernetes |
215
- ```
216
-
217
- ## Security Considerations
218
-
219
- ```
220
- ✅ TLS termination at gateway
221
- ✅ Request validation (size, content-type)
222
- ✅ SQL injection / XSS prevention
223
- ✅ DDoS protection
224
- ✅ IP allowlisting/blocklisting
225
- ✅ Bot detection
226
- ✅ API key rotation
227
- ✅ Secrets management
228
- ```
229
-
230
- ## Best Practices
231
-
232
- ```
233
- Performance:
234
- ✅ Connection pooling
235
- ✅ Async I/O
236
- ✅ Response streaming
237
- ✅ Compression
238
-
239
- Reliability:
240
- ✅ Health checks
241
- ✅ Graceful degradation
242
- ✅ Retry with backoff
243
- ✅ Timeout configuration
244
-
245
- Operations:
246
- ✅ Blue-green deployment
247
- ✅ Configuration as code
248
- ✅ Centralized logging
249
- ✅ Alerting on error spikes
250
- ```
251
-
252
- ## Related Skills
253
-
254
- - `gateway-spring`: Spring Cloud Gateway implementation
@@ -1,239 +0,0 @@
1
- ---
2
- name: bff-concepts
3
- description: >
4
- Backend for Frontend pattern. Client-specific APIs, response tailoring, aggregation.
5
- Trigger: BFF, backend for frontend, aggregation, client-specific, mobile API
6
- tools:
7
- - Read
8
- - Write
9
- - Edit
10
- - Grep
11
- metadata:
12
- author: apigen-team
13
- version: "1.0"
14
- tags: [bff, architecture, api-design, microservices]
15
- scope: ["**/bff/**"]
16
- ---
17
-
18
- # Backend for Frontend (BFF) Pattern
19
-
20
- ## Core Concept
21
-
22
- ```
23
- Traditional API:
24
- ┌─────────────────────────────────────────┐
25
- │ Single Generic API │
26
- │ (serves Web, Mobile, TV, Partners) │
27
- └─────────────────────────────────────────┘
28
- ↓ ↓ ↓
29
- [Web] [Mobile] [TV]
30
- (over-fetching + under-fetching)
31
-
32
- BFF Pattern:
33
- ┌───────────┐ ┌───────────┐ ┌───────────┐
34
- │ Web BFF │ │Mobile BFF │ │ TV BFF │
35
- └─────┬─────┘ └─────┬─────┘ └─────┬─────┘
36
- ↓ ↓ ↓
37
- ┌─────────────────────────────────────────┐
38
- │ Backend Microservices │
39
- └─────────────────────────────────────────┘
40
- ```
41
-
42
- ## Client Types
43
-
44
- ### Web BFF
45
- ```
46
- Characteristics:
47
- - Full data payloads (fast connections)
48
- - Rich interaction capabilities
49
- - SEO requirements (SSR data)
50
- - Complex filtering/sorting UI
51
-
52
- Typical operations:
53
- - Large paginated lists
54
- - Real-time updates (WebSocket)
55
- - Complex search queries
56
- - File uploads
57
- ```
58
-
59
- ### Mobile BFF
60
- ```
61
- Characteristics:
62
- - Bandwidth optimization
63
- - Battery conservation
64
- - Offline support (sync)
65
- - Push notifications
66
-
67
- Optimizations:
68
- - Compressed responses
69
- - Delta sync (only changes)
70
- - Image CDN URLs (different sizes)
71
- - Aggressive caching headers
72
- ```
73
-
74
- ### IoT / Embedded BFF
75
- ```
76
- Characteristics:
77
- - Minimal payloads
78
- - Low memory footprint
79
- - Binary protocols (gRPC/MQTT)
80
- - Intermittent connectivity
81
-
82
- Patterns:
83
- - Batch operations
84
- - Store-and-forward
85
- - Heartbeat polling
86
- ```
87
-
88
- ## Response Tailoring
89
-
90
- ### Field Selection
91
- ```json
92
- // Web: Full response
93
- {
94
- "user": {
95
- "id": "123",
96
- "name": "John Doe",
97
- "email": "john@example.com",
98
- "avatar": "https://...",
99
- "bio": "...",
100
- "preferences": {...},
101
- "stats": {...}
102
- }
103
- }
104
-
105
- // Mobile: Tailored response
106
- {
107
- "user": {
108
- "id": "123",
109
- "name": "John Doe",
110
- "avatar_thumb": "https://.../48x48"
111
- }
112
- }
113
- ```
114
-
115
- ### Aggregation Strategies
116
- ```
117
- Sequential:
118
- 1. Get user profile
119
- 2. Get user's orders
120
- 3. Get recommendations
121
- 4. Combine and return
122
-
123
- Parallel:
124
- 1. Fork: [profile, orders, recommendations]
125
- 2. Join: Combine results
126
- 3. Return aggregated response
127
-
128
- Conditional:
129
- 1. Get user profile
130
- 2. IF premium user THEN get recommendations
131
- 3. Return appropriate response
132
- ```
133
-
134
- ## Rate Limiting per Client
135
-
136
- ```
137
- Web clients:
138
- - 1000 req/min (authenticated)
139
- - 100 req/min (anonymous)
140
-
141
- Mobile clients:
142
- - 500 req/min (aggressive caching expected)
143
-
144
- Partner APIs:
145
- - Per-contract limits
146
- - Separate quotas per partner
147
- ```
148
-
149
- ## Query Composition
150
-
151
- ### GraphQL-like Behavior
152
- ```
153
- Request:
154
- GET /bff/dashboard?include=profile,notifications,orders
155
-
156
- Response:
157
- {
158
- "profile": {...},
159
- "notifications": [...],
160
- "orders": [...]
161
- }
162
-
163
- Backend calls:
164
- - GET /users/me → profile
165
- - GET /notifications?limit=5 → notifications
166
- - GET /orders?status=pending → orders
167
- ```
168
-
169
- ### Partial Failure Handling
170
- ```json
171
- {
172
- "profile": {...},
173
- "notifications": {
174
- "_error": "Service temporarily unavailable",
175
- "_fallback": []
176
- },
177
- "orders": [...]
178
- }
179
- ```
180
-
181
- ## Caching Strategies
182
-
183
- ```
184
- Per-client-type:
185
- - Web: 5 min cache, ETags
186
- - Mobile: 30 min cache, stale-while-revalidate
187
- - IoT: 1 hour cache
188
-
189
- Per-resource:
190
- - User profile: 5 min
191
- - Product catalog: 1 hour
192
- - Recommendations: 15 min
193
- ```
194
-
195
- ## Implementation Patterns
196
-
197
- ### Request/Response DTOs
198
- ```
199
- // Client-specific DTOs
200
- WebUserResponse:
201
- - All fields
202
- - Nested objects
203
- - Full links
204
-
205
- MobileUserResponse:
206
- - Essential fields only
207
- - IDs instead of nested objects
208
- - Thumbnail URLs
209
- ```
210
-
211
- ### Service Orchestration
212
- ```
213
- BFF Controller:
214
- 1. Parse client context (User-Agent, Accept)
215
- 2. Determine required data
216
- 3. Call services (parallel when possible)
217
- 4. Apply transformations
218
- 5. Return tailored response
219
- ```
220
-
221
- ## Anti-patterns to Avoid
222
-
223
- ```
224
- ❌ Business logic in BFF
225
- → BFF should only orchestrate and transform
226
-
227
- ❌ Direct database access
228
- → Always go through services
229
-
230
- ❌ Shared BFF for different clients
231
- → Each client type needs its own BFF
232
-
233
- ❌ Duplicating validation
234
- → Let backend services handle validation
235
- ```
236
-
237
- ## Related Skills
238
-
239
- - `bff-spring`: Spring Boot BFF implementation