javi-forge 1.2.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.
- package/ci-local/ci-local.sh +20 -8
- package/package.json +1 -1
- package/ai-config/.skillignore +0 -15
- package/ai-config/AUTO_INVOKE.md +0 -300
- package/ai-config/agents/_TEMPLATE.md +0 -93
- package/ai-config/agents/business/api-designer.md +0 -1657
- package/ai-config/agents/business/business-analyst.md +0 -1331
- package/ai-config/agents/business/product-strategist.md +0 -206
- package/ai-config/agents/business/project-manager.md +0 -178
- package/ai-config/agents/business/requirements-analyst.md +0 -1277
- package/ai-config/agents/business/technical-writer.md +0 -1679
- package/ai-config/agents/creative/ux-designer.md +0 -205
- package/ai-config/agents/data-ai/ai-engineer.md +0 -487
- package/ai-config/agents/data-ai/analytics-engineer.md +0 -953
- package/ai-config/agents/data-ai/data-engineer.md +0 -173
- package/ai-config/agents/data-ai/data-scientist.md +0 -672
- package/ai-config/agents/data-ai/mlops-engineer.md +0 -814
- package/ai-config/agents/data-ai/prompt-engineer.md +0 -772
- package/ai-config/agents/development/angular-expert.md +0 -620
- package/ai-config/agents/development/backend-architect.md +0 -795
- package/ai-config/agents/development/database-specialist.md +0 -212
- package/ai-config/agents/development/frontend-specialist.md +0 -686
- package/ai-config/agents/development/fullstack-engineer.md +0 -668
- package/ai-config/agents/development/golang-pro.md +0 -338
- package/ai-config/agents/development/java-enterprise.md +0 -400
- package/ai-config/agents/development/javascript-pro.md +0 -422
- package/ai-config/agents/development/nextjs-pro.md +0 -474
- package/ai-config/agents/development/python-pro.md +0 -570
- package/ai-config/agents/development/react-pro.md +0 -487
- package/ai-config/agents/development/rust-pro.md +0 -246
- package/ai-config/agents/development/spring-boot-4-expert.md +0 -326
- package/ai-config/agents/development/typescript-pro.md +0 -336
- package/ai-config/agents/development/vue-specialist.md +0 -605
- package/ai-config/agents/infrastructure/cloud-architect.md +0 -472
- package/ai-config/agents/infrastructure/deployment-manager.md +0 -358
- package/ai-config/agents/infrastructure/devops-engineer.md +0 -455
- package/ai-config/agents/infrastructure/incident-responder.md +0 -519
- package/ai-config/agents/infrastructure/kubernetes-expert.md +0 -705
- package/ai-config/agents/infrastructure/monitoring-specialist.md +0 -674
- package/ai-config/agents/infrastructure/performance-engineer.md +0 -658
- package/ai-config/agents/orchestrator.md +0 -241
- package/ai-config/agents/quality/accessibility-auditor.md +0 -1204
- package/ai-config/agents/quality/code-reviewer-compact.md +0 -123
- package/ai-config/agents/quality/code-reviewer.md +0 -363
- package/ai-config/agents/quality/dependency-manager.md +0 -743
- package/ai-config/agents/quality/e2e-test-specialist.md +0 -1005
- package/ai-config/agents/quality/performance-tester.md +0 -1086
- package/ai-config/agents/quality/security-auditor.md +0 -133
- package/ai-config/agents/quality/test-engineer.md +0 -453
- package/ai-config/agents/specialists/api-designer.md +0 -87
- package/ai-config/agents/specialists/backend-architect.md +0 -73
- package/ai-config/agents/specialists/code-reviewer.md +0 -77
- package/ai-config/agents/specialists/db-optimizer.md +0 -75
- package/ai-config/agents/specialists/devops-engineer.md +0 -83
- package/ai-config/agents/specialists/documentation-writer.md +0 -78
- package/ai-config/agents/specialists/frontend-developer.md +0 -75
- package/ai-config/agents/specialists/performance-analyst.md +0 -82
- package/ai-config/agents/specialists/refactor-specialist.md +0 -74
- package/ai-config/agents/specialists/security-auditor.md +0 -74
- package/ai-config/agents/specialists/test-engineer.md +0 -81
- package/ai-config/agents/specialists/ux-consultant.md +0 -76
- package/ai-config/agents/specialized/agent-generator.md +0 -1190
- package/ai-config/agents/specialized/blockchain-developer.md +0 -149
- package/ai-config/agents/specialized/code-migrator.md +0 -892
- package/ai-config/agents/specialized/context-manager.md +0 -978
- package/ai-config/agents/specialized/documentation-writer.md +0 -1078
- package/ai-config/agents/specialized/ecommerce-expert.md +0 -1756
- package/ai-config/agents/specialized/embedded-engineer.md +0 -1714
- package/ai-config/agents/specialized/error-detective.md +0 -1034
- package/ai-config/agents/specialized/fintech-specialist.md +0 -1659
- package/ai-config/agents/specialized/freelance-project-planner-v2.md +0 -1988
- package/ai-config/agents/specialized/freelance-project-planner-v3.md +0 -2136
- package/ai-config/agents/specialized/freelance-project-planner-v4.md +0 -4503
- package/ai-config/agents/specialized/freelance-project-planner.md +0 -722
- package/ai-config/agents/specialized/game-developer.md +0 -1963
- package/ai-config/agents/specialized/healthcare-dev.md +0 -1620
- package/ai-config/agents/specialized/mobile-developer.md +0 -188
- package/ai-config/agents/specialized/parallel-plan-executor.md +0 -506
- package/ai-config/agents/specialized/plan-executor.md +0 -485
- package/ai-config/agents/specialized/solo-dev-planner-modular/00-INDEX.md +0 -485
- package/ai-config/agents/specialized/solo-dev-planner-modular/01-CORE.md +0 -3493
- package/ai-config/agents/specialized/solo-dev-planner-modular/02-SELF-CORRECTION.md +0 -778
- package/ai-config/agents/specialized/solo-dev-planner-modular/03-PROGRESSIVE-SETUP.md +0 -918
- package/ai-config/agents/specialized/solo-dev-planner-modular/04-DEPLOYMENT.md +0 -1537
- package/ai-config/agents/specialized/solo-dev-planner-modular/05-TESTING.md +0 -2633
- package/ai-config/agents/specialized/solo-dev-planner-modular/06-OPERATIONS.md +0 -5610
- package/ai-config/agents/specialized/solo-dev-planner-modular/INSTALL.md +0 -335
- package/ai-config/agents/specialized/solo-dev-planner-modular/QUICK-REFERENCE.txt +0 -215
- package/ai-config/agents/specialized/solo-dev-planner-modular/README.md +0 -260
- package/ai-config/agents/specialized/solo-dev-planner-modular/START-HERE.md +0 -379
- package/ai-config/agents/specialized/solo-dev-planner-modular/WORKFLOW-DIAGRAM.md +0 -355
- package/ai-config/agents/specialized/solo-dev-planner-modular/solo-dev-planner.md +0 -279
- package/ai-config/agents/specialized/template-writer.md +0 -347
- package/ai-config/agents/specialized/test-runner.md +0 -99
- package/ai-config/agents/specialized/vibekanban-smart-worker.md +0 -244
- package/ai-config/agents/specialized/wave-executor.md +0 -138
- package/ai-config/agents/specialized/workflow-optimizer.md +0 -1114
- package/ai-config/commands/git/changelog.md +0 -32
- package/ai-config/commands/git/ci-local.md +0 -70
- package/ai-config/commands/git/commit.md +0 -35
- package/ai-config/commands/git/fix-issue.md +0 -23
- package/ai-config/commands/git/pr-create.md +0 -42
- package/ai-config/commands/git/pr-review.md +0 -50
- package/ai-config/commands/git/worktree.md +0 -39
- package/ai-config/commands/refactoring/cleanup.md +0 -24
- package/ai-config/commands/refactoring/dead-code.md +0 -40
- package/ai-config/commands/refactoring/extract.md +0 -31
- package/ai-config/commands/testing/e2e.md +0 -30
- package/ai-config/commands/testing/tdd.md +0 -36
- package/ai-config/commands/testing/test-coverage.md +0 -30
- package/ai-config/commands/testing/test-fix.md +0 -24
- package/ai-config/commands/workflow/generate-agents-md.md +0 -85
- package/ai-config/commands/workflow/planning.md +0 -47
- package/ai-config/commands/workflows/compound.md +0 -89
- package/ai-config/commands/workflows/diagnose.md +0 -70
- package/ai-config/commands/workflows/discover.md +0 -86
- package/ai-config/commands/workflows/plan.md +0 -77
- package/ai-config/commands/workflows/review.md +0 -78
- package/ai-config/commands/workflows/work.md +0 -75
- package/ai-config/config.yaml +0 -18
- package/ai-config/hooks/_TEMPLATE.md +0 -96
- package/ai-config/hooks/block-dangerous-commands.md +0 -75
- package/ai-config/hooks/commit-guard.md +0 -90
- package/ai-config/hooks/context-loader.md +0 -73
- package/ai-config/hooks/improve-prompt.md +0 -91
- package/ai-config/hooks/learning-log.md +0 -72
- package/ai-config/hooks/model-router.md +0 -86
- package/ai-config/hooks/secret-scanner.md +0 -64
- package/ai-config/hooks/skill-validator.md +0 -102
- package/ai-config/hooks/task-artifact.md +0 -114
- package/ai-config/hooks/validate-workflow.md +0 -100
- package/ai-config/prompts/base.md +0 -71
- package/ai-config/prompts/modes/debug.md +0 -34
- package/ai-config/prompts/modes/deploy.md +0 -40
- package/ai-config/prompts/modes/research.md +0 -32
- package/ai-config/prompts/modes/review.md +0 -33
- package/ai-config/prompts/review-policy.md +0 -79
- package/ai-config/skills/_TEMPLATE.md +0 -157
- package/ai-config/skills/backend/api-gateway/SKILL.md +0 -254
- package/ai-config/skills/backend/bff-concepts/SKILL.md +0 -239
- package/ai-config/skills/backend/bff-spring/SKILL.md +0 -364
- package/ai-config/skills/backend/chi-router/SKILL.md +0 -396
- package/ai-config/skills/backend/error-handling/SKILL.md +0 -255
- package/ai-config/skills/backend/exceptions-spring/SKILL.md +0 -323
- package/ai-config/skills/backend/fastapi/SKILL.md +0 -302
- package/ai-config/skills/backend/gateway-spring/SKILL.md +0 -390
- package/ai-config/skills/backend/go-backend/SKILL.md +0 -457
- package/ai-config/skills/backend/gradle-multimodule/SKILL.md +0 -274
- package/ai-config/skills/backend/graphql-concepts/SKILL.md +0 -352
- package/ai-config/skills/backend/graphql-spring/SKILL.md +0 -398
- package/ai-config/skills/backend/grpc-concepts/SKILL.md +0 -283
- package/ai-config/skills/backend/grpc-spring/SKILL.md +0 -445
- package/ai-config/skills/backend/jwt-auth/SKILL.md +0 -412
- package/ai-config/skills/backend/notifications-concepts/SKILL.md +0 -259
- package/ai-config/skills/backend/recommendations-concepts/SKILL.md +0 -261
- package/ai-config/skills/backend/search-concepts/SKILL.md +0 -263
- package/ai-config/skills/backend/search-spring/SKILL.md +0 -375
- package/ai-config/skills/backend/spring-boot-4/SKILL.md +0 -172
- package/ai-config/skills/backend/websockets/SKILL.md +0 -532
- package/ai-config/skills/data-ai/ai-ml/SKILL.md +0 -423
- package/ai-config/skills/data-ai/analytics-concepts/SKILL.md +0 -195
- package/ai-config/skills/data-ai/analytics-spring/SKILL.md +0 -340
- package/ai-config/skills/data-ai/duckdb-analytics/SKILL.md +0 -440
- package/ai-config/skills/data-ai/langchain/SKILL.md +0 -238
- package/ai-config/skills/data-ai/mlflow/SKILL.md +0 -302
- package/ai-config/skills/data-ai/onnx-inference/SKILL.md +0 -290
- package/ai-config/skills/data-ai/powerbi/SKILL.md +0 -352
- package/ai-config/skills/data-ai/pytorch/SKILL.md +0 -274
- package/ai-config/skills/data-ai/scikit-learn/SKILL.md +0 -321
- package/ai-config/skills/data-ai/vector-db/SKILL.md +0 -301
- package/ai-config/skills/database/graph-databases/SKILL.md +0 -218
- package/ai-config/skills/database/graph-spring/SKILL.md +0 -361
- package/ai-config/skills/database/pgx-postgres/SKILL.md +0 -512
- package/ai-config/skills/database/redis-cache/SKILL.md +0 -343
- package/ai-config/skills/database/sqlite-embedded/SKILL.md +0 -388
- package/ai-config/skills/database/timescaledb/SKILL.md +0 -320
- package/ai-config/skills/docs/api-documentation/SKILL.md +0 -293
- package/ai-config/skills/docs/docs-spring/SKILL.md +0 -377
- package/ai-config/skills/docs/mustache-templates/SKILL.md +0 -190
- package/ai-config/skills/docs/technical-docs/SKILL.md +0 -447
- package/ai-config/skills/frontend/astro-ssr/SKILL.md +0 -441
- package/ai-config/skills/frontend/frontend-design/SKILL.md +0 -54
- package/ai-config/skills/frontend/frontend-web/SKILL.md +0 -368
- package/ai-config/skills/frontend/mantine-ui/SKILL.md +0 -396
- package/ai-config/skills/frontend/tanstack-query/SKILL.md +0 -439
- package/ai-config/skills/frontend/zod-validation/SKILL.md +0 -417
- package/ai-config/skills/frontend/zustand-state/SKILL.md +0 -350
- package/ai-config/skills/infrastructure/chaos-engineering/SKILL.md +0 -244
- package/ai-config/skills/infrastructure/chaos-spring/SKILL.md +0 -378
- package/ai-config/skills/infrastructure/devops-infra/SKILL.md +0 -435
- package/ai-config/skills/infrastructure/docker-containers/SKILL.md +0 -420
- package/ai-config/skills/infrastructure/kubernetes/SKILL.md +0 -456
- package/ai-config/skills/infrastructure/opentelemetry/SKILL.md +0 -546
- package/ai-config/skills/infrastructure/traefik-proxy/SKILL.md +0 -474
- package/ai-config/skills/infrastructure/woodpecker-ci/SKILL.md +0 -315
- package/ai-config/skills/mobile/ionic-capacitor/SKILL.md +0 -504
- package/ai-config/skills/mobile/mobile-ionic/SKILL.md +0 -448
- package/ai-config/skills/prompt-improver/SKILL.md +0 -125
- package/ai-config/skills/quality/ghagga-review/SKILL.md +0 -216
- package/ai-config/skills/references/hooks-patterns/SKILL.md +0 -238
- package/ai-config/skills/references/mcp-servers/SKILL.md +0 -275
- package/ai-config/skills/references/plugins-reference/SKILL.md +0 -110
- package/ai-config/skills/references/skills-reference/SKILL.md +0 -420
- package/ai-config/skills/references/subagent-templates/SKILL.md +0 -193
- package/ai-config/skills/systems-iot/modbus-protocol/SKILL.md +0 -410
- package/ai-config/skills/systems-iot/mqtt-rumqttc/SKILL.md +0 -408
- package/ai-config/skills/systems-iot/rust-systems/SKILL.md +0 -386
- package/ai-config/skills/systems-iot/tokio-async/SKILL.md +0 -324
- package/ai-config/skills/testing/playwright-e2e/SKILL.md +0 -289
- package/ai-config/skills/testing/testcontainers/SKILL.md +0 -299
- package/ai-config/skills/testing/vitest-testing/SKILL.md +0 -381
- package/ai-config/skills/workflow/ci-local-guide/SKILL.md +0 -118
- package/ai-config/skills/workflow/claude-automation-recommender/SKILL.md +0 -299
- package/ai-config/skills/workflow/claude-md-improver/SKILL.md +0 -158
- package/ai-config/skills/workflow/finishing-a-development-branch/SKILL.md +0 -117
- package/ai-config/skills/workflow/git-github/SKILL.md +0 -334
- package/ai-config/skills/workflow/git-github/references/examples.md +0 -160
- package/ai-config/skills/workflow/git-workflow/SKILL.md +0 -214
- package/ai-config/skills/workflow/ide-plugins/SKILL.md +0 -277
- package/ai-config/skills/workflow/ide-plugins-intellij/SKILL.md +0 -401
- package/ai-config/skills/workflow/obsidian-brain-workflow/SKILL.md +0 -199
- package/ai-config/skills/workflow/using-git-worktrees/SKILL.md +0 -100
- package/ai-config/skills/workflow/verification-before-completion/SKILL.md +0 -73
- package/ai-config/skills/workflow/wave-workflow/SKILL.md +0 -178
- package/schemas/agent.schema.json +0 -34
- package/schemas/ai-config.schema.json +0 -28
- package/schemas/plugin.schema.json +0 -62
- 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
|