maestro-bundle 1.3.1 → 1.4.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 (116) hide show
  1. package/package.json +1 -1
  2. package/templates/bundle-ai-agents/skills/agent-orchestration/SKILL.md +107 -41
  3. package/templates/bundle-ai-agents/skills/agent-orchestration/references/graph-patterns.md +50 -0
  4. package/templates/bundle-ai-agents/skills/agent-orchestration/references/routing-strategies.md +47 -0
  5. package/templates/bundle-ai-agents/skills/api-design/SKILL.md +125 -16
  6. package/templates/bundle-ai-agents/skills/api-design/references/pydantic-patterns.md +72 -0
  7. package/templates/bundle-ai-agents/skills/api-design/references/rest-conventions.md +51 -0
  8. package/templates/bundle-ai-agents/skills/clean-architecture/SKILL.md +113 -21
  9. package/templates/bundle-ai-agents/skills/clean-architecture/references/dependency-injection.md +60 -0
  10. package/templates/bundle-ai-agents/skills/clean-architecture/references/layer-rules.md +56 -0
  11. package/templates/bundle-ai-agents/skills/context-engineering/SKILL.md +104 -36
  12. package/templates/bundle-ai-agents/skills/context-engineering/references/compression-techniques.md +76 -0
  13. package/templates/bundle-ai-agents/skills/context-engineering/references/context-budget-calculator.md +45 -0
  14. package/templates/bundle-ai-agents/skills/database-modeling/SKILL.md +146 -19
  15. package/templates/bundle-ai-agents/skills/database-modeling/references/index-strategies.md +48 -0
  16. package/templates/bundle-ai-agents/skills/database-modeling/references/naming-conventions.md +27 -0
  17. package/templates/bundle-ai-agents/skills/docker-containerization/SKILL.md +124 -15
  18. package/templates/bundle-ai-agents/skills/docker-containerization/references/compose-patterns.md +97 -0
  19. package/templates/bundle-ai-agents/skills/docker-containerization/references/dockerfile-checklist.md +37 -0
  20. package/templates/bundle-ai-agents/skills/eval-testing/SKILL.md +113 -25
  21. package/templates/bundle-ai-agents/skills/eval-testing/references/eval-types.md +52 -0
  22. package/templates/bundle-ai-agents/skills/eval-testing/references/golden-dataset-template.md +59 -0
  23. package/templates/bundle-ai-agents/skills/memory-management/SKILL.md +112 -28
  24. package/templates/bundle-ai-agents/skills/memory-management/references/memory-tiers.md +41 -0
  25. package/templates/bundle-ai-agents/skills/memory-management/references/namespace-conventions.md +41 -0
  26. package/templates/bundle-ai-agents/skills/prompt-engineering/SKILL.md +139 -47
  27. package/templates/bundle-ai-agents/skills/prompt-engineering/references/anti-patterns.md +59 -0
  28. package/templates/bundle-ai-agents/skills/prompt-engineering/references/prompt-templates.md +75 -0
  29. package/templates/bundle-ai-agents/skills/rag-pipeline/SKILL.md +104 -27
  30. package/templates/bundle-ai-agents/skills/rag-pipeline/references/chunking-strategies.md +27 -0
  31. package/templates/bundle-ai-agents/skills/rag-pipeline/references/embedding-models.md +31 -0
  32. package/templates/bundle-ai-agents/skills/rag-pipeline/references/rag-evaluation.md +39 -0
  33. package/templates/bundle-ai-agents/skills/testing-strategy/SKILL.md +127 -18
  34. package/templates/bundle-ai-agents/skills/testing-strategy/references/fixture-patterns.md +81 -0
  35. package/templates/bundle-ai-agents/skills/testing-strategy/references/naming-conventions.md +69 -0
  36. package/templates/bundle-base/skills/branch-strategy/SKILL.md +134 -21
  37. package/templates/bundle-base/skills/branch-strategy/references/branch-rules.md +40 -0
  38. package/templates/bundle-base/skills/code-review/SKILL.md +123 -38
  39. package/templates/bundle-base/skills/code-review/references/review-checklist.md +45 -0
  40. package/templates/bundle-base/skills/commit-pattern/SKILL.md +98 -39
  41. package/templates/bundle-base/skills/commit-pattern/references/conventional-commits.md +40 -0
  42. package/templates/bundle-data-pipeline/skills/data-preprocessing/SKILL.md +110 -19
  43. package/templates/bundle-data-pipeline/skills/data-preprocessing/references/pandas-cheatsheet.md +63 -0
  44. package/templates/bundle-data-pipeline/skills/data-preprocessing/references/pandera-schemas.md +44 -0
  45. package/templates/bundle-data-pipeline/skills/docker-containerization/SKILL.md +132 -16
  46. package/templates/bundle-data-pipeline/skills/docker-containerization/references/compose-patterns.md +82 -0
  47. package/templates/bundle-data-pipeline/skills/docker-containerization/references/dockerfile-best-practices.md +57 -0
  48. package/templates/bundle-data-pipeline/skills/feature-engineering/SKILL.md +143 -45
  49. package/templates/bundle-data-pipeline/skills/feature-engineering/references/encoding-guide.md +41 -0
  50. package/templates/bundle-data-pipeline/skills/feature-engineering/references/scaling-guide.md +38 -0
  51. package/templates/bundle-data-pipeline/skills/mlops-pipeline/SKILL.md +156 -37
  52. package/templates/bundle-data-pipeline/skills/mlops-pipeline/references/mlflow-commands.md +69 -0
  53. package/templates/bundle-data-pipeline/skills/model-training/SKILL.md +152 -33
  54. package/templates/bundle-data-pipeline/skills/model-training/references/evaluation-metrics.md +52 -0
  55. package/templates/bundle-data-pipeline/skills/model-training/references/model-selection-guide.md +41 -0
  56. package/templates/bundle-data-pipeline/skills/rag-pipeline/SKILL.md +127 -39
  57. package/templates/bundle-data-pipeline/skills/rag-pipeline/references/chunking-strategies.md +51 -0
  58. package/templates/bundle-data-pipeline/skills/rag-pipeline/references/embedding-models.md +49 -0
  59. package/templates/bundle-frontend-spa/skills/authentication/SKILL.md +196 -13
  60. package/templates/bundle-frontend-spa/skills/authentication/references/jwt-security.md +41 -0
  61. package/templates/bundle-frontend-spa/skills/component-design/SKILL.md +191 -41
  62. package/templates/bundle-frontend-spa/skills/component-design/references/accessibility-checklist.md +41 -0
  63. package/templates/bundle-frontend-spa/skills/component-design/references/tailwind-patterns.md +65 -0
  64. package/templates/bundle-frontend-spa/skills/e2e-testing/SKILL.md +241 -79
  65. package/templates/bundle-frontend-spa/skills/e2e-testing/references/playwright-selectors.md +66 -0
  66. package/templates/bundle-frontend-spa/skills/e2e-testing/references/test-patterns.md +82 -0
  67. package/templates/bundle-frontend-spa/skills/integration-api/SKILL.md +221 -31
  68. package/templates/bundle-frontend-spa/skills/integration-api/references/api-patterns.md +81 -0
  69. package/templates/bundle-frontend-spa/skills/react-patterns/SKILL.md +195 -70
  70. package/templates/bundle-frontend-spa/skills/react-patterns/references/component-checklist.md +22 -0
  71. package/templates/bundle-frontend-spa/skills/react-patterns/references/hook-patterns.md +63 -0
  72. package/templates/bundle-frontend-spa/skills/responsive-layout/SKILL.md +162 -22
  73. package/templates/bundle-frontend-spa/skills/responsive-layout/references/breakpoint-guide.md +63 -0
  74. package/templates/bundle-frontend-spa/skills/state-management/SKILL.md +158 -30
  75. package/templates/bundle-frontend-spa/skills/state-management/references/react-query-config.md +64 -0
  76. package/templates/bundle-frontend-spa/skills/state-management/references/state-patterns.md +78 -0
  77. package/templates/bundle-jhipster-microservices/skills/ci-cd-pipeline/SKILL.md +135 -45
  78. package/templates/bundle-jhipster-microservices/skills/ci-cd-pipeline/references/gitlab-ci-templates.md +93 -0
  79. package/templates/bundle-jhipster-microservices/skills/clean-architecture/SKILL.md +87 -21
  80. package/templates/bundle-jhipster-microservices/skills/clean-architecture/references/layer-rules.md +78 -0
  81. package/templates/bundle-jhipster-microservices/skills/ddd-tactical/SKILL.md +94 -25
  82. package/templates/bundle-jhipster-microservices/skills/ddd-tactical/references/ddd-patterns.md +48 -0
  83. package/templates/bundle-jhipster-microservices/skills/jhipster-angular/SKILL.md +63 -21
  84. package/templates/bundle-jhipster-microservices/skills/jhipster-angular/references/angular-microservices.md +40 -0
  85. package/templates/bundle-jhipster-microservices/skills/jhipster-angular/references/angular-structure.md +59 -0
  86. package/templates/bundle-jhipster-microservices/skills/jhipster-docker-k8s/SKILL.md +125 -91
  87. package/templates/bundle-jhipster-microservices/skills/jhipster-docker-k8s/references/docker-k8s-commands.md +68 -0
  88. package/templates/bundle-jhipster-microservices/skills/jhipster-entities/SKILL.md +72 -20
  89. package/templates/bundle-jhipster-microservices/skills/jhipster-entities/references/cross-service-entities.md +36 -0
  90. package/templates/bundle-jhipster-microservices/skills/jhipster-entities/references/jdl-types.md +56 -0
  91. package/templates/bundle-jhipster-microservices/skills/jhipster-gateway/SKILL.md +80 -8
  92. package/templates/bundle-jhipster-microservices/skills/jhipster-gateway/references/gateway-config.md +43 -0
  93. package/templates/bundle-jhipster-microservices/skills/jhipster-kafka/SKILL.md +115 -22
  94. package/templates/bundle-jhipster-microservices/skills/jhipster-kafka/references/kafka-events.md +39 -0
  95. package/templates/bundle-jhipster-microservices/skills/jhipster-registry/SKILL.md +92 -23
  96. package/templates/bundle-jhipster-microservices/skills/jhipster-registry/references/consul-config.md +61 -0
  97. package/templates/bundle-jhipster-microservices/skills/jhipster-service/SKILL.md +81 -18
  98. package/templates/bundle-jhipster-microservices/skills/jhipster-service/references/service-patterns.md +40 -0
  99. package/templates/bundle-jhipster-microservices/skills/testing-strategy/SKILL.md +101 -20
  100. package/templates/bundle-jhipster-microservices/skills/testing-strategy/references/test-naming.md +55 -0
  101. package/templates/bundle-jhipster-monorepo/skills/clean-architecture/SKILL.md +87 -21
  102. package/templates/bundle-jhipster-monorepo/skills/clean-architecture/references/layer-rules.md +78 -0
  103. package/templates/bundle-jhipster-monorepo/skills/ddd-tactical/SKILL.md +94 -25
  104. package/templates/bundle-jhipster-monorepo/skills/ddd-tactical/references/ddd-patterns.md +48 -0
  105. package/templates/bundle-jhipster-monorepo/skills/jhipster-angular/SKILL.md +99 -52
  106. package/templates/bundle-jhipster-monorepo/skills/jhipster-angular/references/angular-structure.md +59 -0
  107. package/templates/bundle-jhipster-monorepo/skills/jhipster-entities/SKILL.md +89 -36
  108. package/templates/bundle-jhipster-monorepo/skills/jhipster-entities/references/jdl-types.md +56 -0
  109. package/templates/bundle-jhipster-monorepo/skills/jhipster-liquibase/SKILL.md +123 -23
  110. package/templates/bundle-jhipster-monorepo/skills/jhipster-liquibase/references/liquibase-operations.md +95 -0
  111. package/templates/bundle-jhipster-monorepo/skills/jhipster-security/SKILL.md +106 -19
  112. package/templates/bundle-jhipster-monorepo/skills/jhipster-security/references/security-checklist.md +47 -0
  113. package/templates/bundle-jhipster-monorepo/skills/jhipster-spring/SKILL.md +84 -16
  114. package/templates/bundle-jhipster-monorepo/skills/jhipster-spring/references/spring-layers.md +41 -0
  115. package/templates/bundle-jhipster-monorepo/skills/testing-strategy/SKILL.md +101 -20
  116. package/templates/bundle-jhipster-monorepo/skills/testing-strategy/references/test-naming.md +55 -0
@@ -0,0 +1,40 @@
1
+ # Angular Patterns for Microservices
2
+
3
+ ## Architecture
4
+ - Angular app lives in the Gateway
5
+ - Gateway routes API calls transparently to microservices
6
+ - From Angular's view, it is a single API
7
+
8
+ ## Data Aggregation Pattern
9
+ ```typescript
10
+ // Use forkJoin to fetch from multiple services simultaneously
11
+ forkJoin({
12
+ demands: this.demandService.query(),
13
+ agents: this.agentService.query(),
14
+ }).subscribe(({ demands, agents }) => {
15
+ // Combine data
16
+ });
17
+ ```
18
+
19
+ ## Resilience Pattern
20
+ ```typescript
21
+ // Wrap each service call with catchError
22
+ this.demandService.query().pipe(
23
+ catchError(() => of([])) // Return empty on failure
24
+ )
25
+ ```
26
+
27
+ ## Real-Time Pattern
28
+ ```typescript
29
+ // WebSocket via STOMP through Gateway
30
+ this.stompClient.watch('/topic/events').pipe(
31
+ map(msg => JSON.parse(msg.body))
32
+ ).subscribe(event => { /* handle */ });
33
+ ```
34
+
35
+ ## Best Practices
36
+ - Always handle partial failures
37
+ - Show fallback UI when a service is unavailable
38
+ - Use lazy loading for feature modules
39
+ - Keep entity services in `entities/` directory
40
+ - Custom aggregation services outside `entities/`
@@ -0,0 +1,59 @@
1
+ # JHipster Angular Structure Reference
2
+
3
+ ## Directory Layout
4
+ ```
5
+ src/main/webapp/app/
6
+ entities/ # Generated CRUD per entity
7
+ <entity>/
8
+ <entity>.model.ts # TypeScript interface
9
+ <entity>.routes.ts # Lazy-loaded routes
10
+ service/<entity>.service.ts
11
+ list/<entity>.component.ts
12
+ detail/<entity>-detail.component.ts
13
+ update/<entity>-update.component.ts
14
+ delete/<entity>-delete-dialog.component.ts
15
+ shared/ # Shared modules and components
16
+ date/ # Date utilities
17
+ filter/ # Filter components
18
+ pagination/ # Pagination components
19
+ sort/ # Sort directives
20
+ core/ # Core services
21
+ auth/ # Authentication
22
+ interceptor/ # HTTP interceptors
23
+ util/ # Utility services
24
+ layouts/ # Page layouts
25
+ main/ # Main layout
26
+ navbar/ # Navigation bar
27
+ footer/ # Footer
28
+ config/ # App configuration
29
+ ```
30
+
31
+ ## Key Conventions
32
+ - All components are `standalone: true`
33
+ - Use `SharedModule` for common imports
34
+ - Lazy loading for entity routes
35
+ - JHipster's `TranslateService` for i18n
36
+ - `AlertService` for user notifications
37
+ - `SortDirective` and `SortByDirective` for table sorting
38
+ - `PaginationComponent` for paginated lists
39
+
40
+ ## Service Pattern
41
+ ```typescript
42
+ @Injectable({ providedIn: 'root' })
43
+ export class EntityService {
44
+ private resourceUrl = 'api/entities';
45
+
46
+ constructor(private http: HttpClient) {}
47
+
48
+ query(req?: any): Observable<HttpResponse<IEntity[]>> {
49
+ const options = createRequestOption(req);
50
+ return this.http.get<IEntity[]>(this.resourceUrl, { params: options, observe: 'response' });
51
+ }
52
+ }
53
+ ```
54
+
55
+ ## Custom Component Best Practices
56
+ - Place custom components outside `entities/` to avoid regeneration conflicts
57
+ - Mark any changes to generated files with `// CUSTOM` comments
58
+ - Use standalone components with explicit imports
59
+ - Follow JHipster naming: `jhi-` prefix for entity components
@@ -1,19 +1,42 @@
1
1
  ---
2
2
  name: jhipster-docker-k8s
3
- description: Deploy de microsserviços JHipster com Docker Compose (dev) e Kubernetes/K3s (prod). Use quando precisar containerizar serviços JHipster, criar docker-compose, ou fazer deploy em K8s.
3
+ description: Deploy JHipster microservices with Docker Compose for development and Kubernetes/K3s for production. Use when containerizing services, creating docker-compose, deploying to K8s, or scaling services.
4
+ version: 1.0.0
5
+ author: Maestro
4
6
  ---
5
7
 
6
- # Docker & Kubernetes para JHipster Microservices
8
+ # Docker & Kubernetes for JHipster Microservices
7
9
 
8
- ## Docker Compose Dev
10
+ Deploy JHipster microservices using Docker Compose for local development and Kubernetes/K3s for production.
11
+
12
+ ## When to Use
13
+ - When setting up local development environment
14
+ - When containerizing a microservice
15
+ - When deploying to Kubernetes/K3s
16
+ - When scaling services
17
+ - When troubleshooting container issues
18
+
19
+ ## Available Operations
20
+ 1. Generate Docker Compose with JHipster
21
+ 2. Build Docker images with Jib
22
+ 3. Generate Kubernetes manifests with JHipster
23
+ 4. Deploy to K3s cluster
24
+ 5. Scale and manage services
25
+
26
+ ## Multi-Step Workflow
27
+
28
+ ### Step 1: Generate Docker Compose
9
29
 
10
30
  ```bash
11
- # Gerar docker-compose via JHipster
31
+ # Generate docker-compose via JHipster (from project root)
12
32
  jhipster docker-compose
13
33
 
14
- # Ou usar o gerado pelo JDL deployment
34
+ # Or use JDL deployment block
35
+ jhipster import-jdl jhipster-jdl.jdl
15
36
  ```
16
37
 
38
+ ### Step 2: Configure Docker Compose for Dev
39
+
17
40
  ```yaml
18
41
  # docker-compose/docker-compose.yml
19
42
  services:
@@ -24,9 +47,6 @@ services:
24
47
  environment:
25
48
  - SPRING_PROFILES_ACTIVE=dev
26
49
  - SPRING_CLOUD_CONSUL_HOST=consul
27
- depends_on:
28
- - consul
29
- - keycloak
30
50
 
31
51
  demand-service:
32
52
  image: demand-service:latest
@@ -46,24 +66,6 @@ services:
46
66
  POSTGRES_USER: demand
47
67
  POSTGRES_PASSWORD: demand
48
68
 
49
- agent-service:
50
- image: agent-service:latest
51
- environment:
52
- - SPRING_PROFILES_ACTIVE=dev
53
- - SPRING_CLOUD_CONSUL_HOST=consul
54
- - SPRING_DATASOURCE_URL=jdbc:postgresql://agent-db:5432/agent
55
- depends_on:
56
- - agent-db
57
- - consul
58
- - kafka
59
-
60
- agent-db:
61
- image: postgres:16
62
- environment:
63
- POSTGRES_DB: agent
64
- POSTGRES_USER: agent
65
- POSTGRES_PASSWORD: agent
66
-
67
69
  consul:
68
70
  image: consul:1.15
69
71
  ports:
@@ -95,89 +97,121 @@ services:
95
97
  environment:
96
98
  KEYCLOAK_ADMIN: admin
97
99
  KEYCLOAK_ADMIN_PASSWORD: admin
98
- command: start-dev --import-realm
99
- volumes:
100
- - ./keycloak-realm.json:/opt/keycloak/data/import/realm.json
100
+ command: start-dev
101
101
  ```
102
102
 
103
- ## Kubernetes Prod
103
+ ### Step 3: Build Docker Images
104
104
 
105
105
  ```bash
106
- # Gerar manifests via JHipster
107
- jhipster kubernetes
108
- ```
106
+ # Build all services with Jib (no Docker daemon)
107
+ ./mvnw -ntp verify -DskipTests jib:dockerBuild -Pprod
109
108
 
110
- ### Deployment por serviço
111
- ```yaml
112
- apiVersion: apps/v1
113
- kind: Deployment
114
- metadata:
115
- name: demand-service
116
- namespace: maestro
117
- spec:
118
- replicas: 2
119
- selector:
120
- matchLabels:
121
- app: demand-service
122
- template:
123
- spec:
124
- containers:
125
- - name: demand-service
126
- image: registry.local/demand-service:1.0.0
127
- ports:
128
- - containerPort: 8081
129
- resources:
130
- requests:
131
- memory: "512Mi"
132
- cpu: "500m"
133
- limits:
134
- memory: "1Gi"
135
- cpu: "1000m"
136
- readinessProbe:
137
- httpGet:
138
- path: /management/health/readiness
139
- port: 8081
140
- initialDelaySeconds: 30
141
- livenessProbe:
142
- httpGet:
143
- path: /management/health/liveness
144
- port: 8081
145
- initialDelaySeconds: 60
146
- env:
147
- - name: SPRING_PROFILES_ACTIVE
148
- value: prod
149
- - name: SPRING_DATASOURCE_URL
150
- valueFrom:
151
- secretKeyRef:
152
- name: demand-service-db
153
- key: url
109
+ # Or build specific service
110
+ cd demand-service && ./mvnw -ntp verify -DskipTests jib:dockerBuild
111
+
112
+ # Tag and push to registry
113
+ docker tag demand-service:latest registry.local/demand-service:1.0.0
114
+ docker push registry.local/demand-service:1.0.0
154
115
  ```
155
116
 
156
- ## Build de imagens
117
+ ### Step 4: Run Locally with Docker Compose
157
118
 
158
119
  ```bash
159
- # Build com Jib (padrão JHipster, sem Docker daemon)
160
- ./mvnw -ntp verify -DskipTests jib:dockerBuild -Pprod
120
+ # Start all services
121
+ docker-compose -f docker-compose/docker-compose.yml up -d
122
+
123
+ # Check status
124
+ docker-compose ps
125
+
126
+ # View logs of a specific service
127
+ docker-compose logs -f demand-service
128
+
129
+ # Stop all
130
+ docker-compose down
161
131
 
162
- # Ou com Docker
163
- docker build -t demand-service:1.0.0 .
132
+ # Stop and remove volumes (clean start)
133
+ docker-compose down -v
164
134
  ```
165
135
 
166
- ## Comandos úteis
136
+ ### Step 5: Generate Kubernetes Manifests
167
137
 
168
138
  ```bash
169
- # Dev: subir tudo
170
- docker-compose -f docker-compose/docker-compose.yml up -d
139
+ # Generate K8s manifests via JHipster
140
+ jhipster kubernetes
171
141
 
172
- # Dev: ver logs de um serviço
173
- docker-compose logs -f demand-service
142
+ # Or via JDL deployment block
143
+ ```
174
144
 
175
- # Prod: deploy
145
+ ### Step 6: Deploy to Kubernetes/K3s
146
+
147
+ ```bash
148
+ # Apply all manifests
176
149
  kubectl apply -f k8s/
177
150
 
178
- # Prod: rollback
179
- kubectl rollout undo deployment/demand-service -n maestro
151
+ # Check deployment status
152
+ kubectl get pods -n maestro
153
+ kubectl get svc -n maestro
180
154
 
181
- # Prod: escalar
155
+ # Watch pod logs
156
+ kubectl logs -f deployment/demand-service -n maestro
157
+
158
+ # Scale a service
182
159
  kubectl scale deployment demand-service --replicas=3 -n maestro
160
+
161
+ # Rollback a deployment
162
+ kubectl rollout undo deployment/demand-service -n maestro
163
+
164
+ # Check events for troubleshooting
165
+ kubectl get events -n maestro --sort-by=.lastTimestamp
183
166
  ```
167
+
168
+ ### Step 7: Verify
169
+
170
+ ```bash
171
+ # Test gateway endpoint
172
+ curl http://localhost:8080/api/demands
173
+
174
+ # Check Consul UI for registered services
175
+ # http://localhost:8500
176
+
177
+ # Check Keycloak admin
178
+ # http://localhost:9080
179
+ ```
180
+
181
+ ## Resources
182
+ - `references/docker-compose-reference.md` - Docker Compose configuration reference
183
+ - `references/k8s-troubleshooting.md` - Common Kubernetes troubleshooting commands
184
+
185
+ ## Examples
186
+
187
+ ### Example 1: Set Up Dev Environment
188
+ User asks: "Set up the local development environment"
189
+ Response approach:
190
+ 1. Run `jhipster docker-compose` to generate files
191
+ 2. Run `docker-compose up -d` to start infrastructure
192
+ 3. Verify Consul, Kafka, Keycloak are running
193
+ 4. Start each service with `./mvnw spring-boot:run`
194
+
195
+ ### Example 2: Deploy to Production
196
+ User asks: "Deploy demand-service to K3s"
197
+ Response approach:
198
+ 1. Build image: `./mvnw jib:build -Djib.to.image=registry.local/demand-service:1.0.0`
199
+ 2. Update K8s manifest with new image tag
200
+ 3. Apply: `kubectl apply -f k8s/demand-service/`
201
+ 4. Verify: `kubectl rollout status deployment/demand-service -n maestro`
202
+
203
+ ### Example 3: Service Won't Start
204
+ User asks: "demand-service pod keeps crashing"
205
+ Response approach:
206
+ 1. Check pod status: `kubectl describe pod <pod-name> -n maestro`
207
+ 2. Check logs: `kubectl logs <pod-name> -n maestro`
208
+ 3. Common causes: database not ready, Consul not reachable, missing env vars
209
+ 4. Fix and redeploy
210
+
211
+ ## Notes
212
+ - Use Jib for Docker builds (no Docker daemon needed, faster)
213
+ - Never use `latest` tag in production K8s manifests
214
+ - Each service has its own database container in docker-compose
215
+ - Use `docker-compose down -v` for a completely clean restart
216
+ - Set resource limits in K8s manifests (memory, CPU)
217
+ - Add readiness and liveness probes to all deployments
@@ -0,0 +1,68 @@
1
+ # Docker and Kubernetes Command Reference
2
+
3
+ ## Docker Compose (Dev)
4
+ ```bash
5
+ # Start all services
6
+ docker-compose -f docker-compose/docker-compose.yml up -d
7
+
8
+ # Stop all services
9
+ docker-compose down
10
+
11
+ # View logs
12
+ docker-compose logs -f <service-name>
13
+
14
+ # Rebuild a single service
15
+ docker-compose up -d --build <service-name>
16
+
17
+ # View running containers
18
+ docker-compose ps
19
+ ```
20
+
21
+ ## Image Building
22
+ ```bash
23
+ # Jib (no Docker daemon needed)
24
+ ./mvnw -ntp verify -DskipTests jib:dockerBuild -Pprod
25
+
26
+ # Jib push to registry
27
+ ./mvnw -ntp verify -DskipTests jib:build -Pprod -Djib.to.image=registry.local/service:tag
28
+
29
+ # Docker build
30
+ docker build -t service:tag .
31
+ docker push registry.local/service:tag
32
+ ```
33
+
34
+ ## Kubernetes (Prod)
35
+ ```bash
36
+ # Apply manifests
37
+ kubectl apply -f k8s/
38
+
39
+ # Check pods
40
+ kubectl get pods -n maestro
41
+
42
+ # View logs
43
+ kubectl logs -f deployment/<service> -n maestro
44
+
45
+ # Scale
46
+ kubectl scale deployment <service> --replicas=3 -n maestro
47
+
48
+ # Rollback
49
+ kubectl rollout undo deployment/<service> -n maestro
50
+
51
+ # Rollout status
52
+ kubectl rollout status deployment/<service> -n maestro
53
+
54
+ # Port forward for debugging
55
+ kubectl port-forward svc/<service> 8080:8080 -n maestro
56
+
57
+ # Execute command in pod
58
+ kubectl exec -it <pod-name> -n maestro -- /bin/sh
59
+
60
+ # View secrets
61
+ kubectl get secrets -n maestro
62
+ ```
63
+
64
+ ## JHipster Generators
65
+ ```bash
66
+ jhipster docker-compose # Generate docker-compose files
67
+ jhipster kubernetes # Generate K8s manifests
68
+ ```
@@ -1,15 +1,30 @@
1
1
  ---
2
2
  name: jhipster-entities
3
- description: Criar e gerenciar entidades JHipster com JDL para microsserviços, incluindo relações cross-service e DTOs compartilhados. Use quando precisar criar entidades, definir modelo de dados, ou gerar código em microsserviços.
3
+ description: Create and manage JHipster entities with JDL for microservices, including cross-service references and shared DTOs. Use when creating entities, defining data models, or managing cross-service relationships.
4
+ version: 1.0.0
5
+ author: Maestro
4
6
  ---
5
7
 
6
- # JHipster Entities Microservices
8
+ # JHipster Entities -- Microservices
7
9
 
8
- ## Regra fundamental
10
+ Create and manage JHipster entities in a microservices architecture where entities belong to specific services and cross-service relationships use IDs instead of foreign keys.
9
11
 
10
- Em microsserviços, **entidades pertencem a um único serviço**. Relacionamentos cross-service usam IDs, não foreign keys.
12
+ ## When to Use
13
+ - When creating entities assigned to specific microservices
14
+ - When defining cross-service relationships (by ID, not FK)
15
+ - When generating code with `jhipster import-jdl` for microservices
16
+ - When implementing Feign-based data fetching across services
11
17
 
12
- ## JDL com microservice assignment
18
+ ## Available Operations
19
+ 1. Define entities with microservice assignment in JDL
20
+ 2. Handle cross-service references with ID fields
21
+ 3. Generate code per microservice
22
+ 4. Implement Feign-based data aggregation
23
+ 5. Create shared DTOs for inter-service communication
24
+
25
+ ## Multi-Step Workflow
26
+
27
+ ### Step 1: Define Entities with Microservice Assignment
13
28
 
14
29
  ```jdl
15
30
  /* demand-service entities */
@@ -23,7 +38,7 @@ entity Demand {
23
38
  entity Task {
24
39
  description String required maxlength(500)
25
40
  status TaskStatus required
26
- agentId Long // ID do agente (outro serviço), não FK
41
+ agentId Long // ID from another service, not FK
27
42
  branchName String
28
43
  }
29
44
 
@@ -42,7 +57,7 @@ entity Agent {
42
57
  }
43
58
 
44
59
  entity AgentTeam {
45
- demandId Long required // ID da demand (outro serviço), não FK
60
+ demandId Long required // ID from another service, not FK
46
61
  }
47
62
 
48
63
  relationship ManyToMany {
@@ -52,21 +67,27 @@ relationship ManyToMany {
52
67
  microservice Agent, AgentTeam with agentService
53
68
  ```
54
69
 
55
- ## Comunicação cross-service
70
+ ### Step 2: Generate Code
71
+
72
+ ```bash
73
+ # Generate all microservices from JDL
74
+ jhipster import-jdl jhipster-jdl.jdl
75
+
76
+ # Verify generated files per service
77
+ ls demand-service/src/main/java/*/domain/
78
+ ls agent-service/src/main/java/*/domain/
79
+ ```
56
80
 
57
- Quando `Task` referencia `Agent` (outro serviço):
81
+ ### Step 3: Implement Cross-Service Data Fetching
58
82
 
59
83
  ```java
60
- // NO demand-service Task.java
84
+ // In demand-service -- Task stores only agentId
61
85
  @Entity
62
86
  public class Task {
63
- // ...
64
- private Long agentId; // Apenas o ID, não a entidade Agent
65
-
66
- // Para obter dados do Agent, chamar agent-service via Feign
87
+ private Long agentId; // Just the ID, not the Agent entity
67
88
  }
68
89
 
69
- // NO demand-service DemandService
90
+ // In demand-service -- fetch Agent data via Feign
70
91
  @Service
71
92
  public class DemandServiceImpl {
72
93
  private final AgentServiceClient agentClient;
@@ -79,9 +100,40 @@ public class DemandServiceImpl {
79
100
  }
80
101
  ```
81
102
 
82
- ## Regras
103
+ ### Step 4: Build and Test
104
+
105
+ ```bash
106
+ # Build each service
107
+ cd demand-service && ./mvnw test
108
+ cd agent-service && ./mvnw test
109
+
110
+ # Run all services
111
+ cd demand-service && ./mvnw spring-boot:run &
112
+ cd agent-service && ./mvnw spring-boot:run &
113
+ ```
83
114
 
84
- - Entidade pertence a UM serviço
85
- - Cross-service: guardar apenas o ID, nunca FK real
86
- - Para exibir dados de outro serviço: Feign Client ou evento Kafka
87
- - Nunca compartilhar entities entre serviços (duplicar DTOs se necessário)
115
+ ## Resources
116
+ - `references/cross-service-entities.md` - Cross-service entity patterns and rules
117
+
118
+ ## Examples
119
+ ### Example 1: Create Entities for a New Service
120
+ User asks: "Create Product and Order entities for the order-service"
121
+ Response approach:
122
+ 1. Define entities in JDL with `microservice Product, Order with orderService`
123
+ 2. Use ID references for entities in other services
124
+ 3. Run `jhipster import-jdl`
125
+ 4. Verify generated code
126
+
127
+ ### Example 2: Reference an Entity from Another Service
128
+ User asks: "Task needs to show the Agent name but Agent is in another service"
129
+ Response approach:
130
+ 1. Store `agentId Long` in Task entity (not FK)
131
+ 2. Create Feign client to agent-service
132
+ 3. Fetch Agent data when needed via Feign call
133
+ 4. Combine into a response DTO
134
+
135
+ ## Notes
136
+ - Fundamental rule: entity belongs to ONE service
137
+ - Cross-service: store only the ID, never a real FK
138
+ - To display data from another service: Feign client or Kafka event
139
+ - Never share entity classes between services (duplicate DTOs if needed)
@@ -0,0 +1,36 @@
1
+ # Cross-Service Entity Patterns
2
+
3
+ ## Rules
4
+ 1. Each entity belongs to exactly ONE microservice
5
+ 2. Cross-service references use plain ID fields (Long/UUID), not foreign keys
6
+ 3. Data from other services is fetched via Feign or received via Kafka events
7
+ 4. DTOs are duplicated between services, never shared as JARs
8
+
9
+ ## JDL Pattern
10
+ ```jdl
11
+ entity Task {
12
+ agentId Long // Reference to Agent in agent-service
13
+ branchName String
14
+ }
15
+ microservice Task with demandService
16
+
17
+ entity Agent {
18
+ name String required
19
+ }
20
+ microservice Agent with agentService
21
+ ```
22
+
23
+ ## Data Fetching Pattern
24
+ ```java
25
+ // Option 1: Feign (synchronous, real-time)
26
+ AgentDTO agent = agentClient.getAgent(task.getAgentId());
27
+
28
+ // Option 2: Local cache from Kafka events (eventual consistency)
29
+ AgentSummary agent = localAgentCache.get(task.getAgentId());
30
+ ```
31
+
32
+ ## Anti-Patterns to Avoid
33
+ - Sharing database between services
34
+ - Using real foreign keys across service boundaries
35
+ - Sharing entity JARs between services
36
+ - Joining tables from different service databases
@@ -0,0 +1,56 @@
1
+ # JDL Types Reference
2
+
3
+ ## Field Types
4
+ | JDL Type | Java | DB | Notes |
5
+ |---|---|---|---|
6
+ | String | String | varchar(255) | Default max 255 |
7
+ | Integer | Integer | integer | 32-bit |
8
+ | Long | Long | bigint | 64-bit |
9
+ | Float | Float | float | Single precision |
10
+ | Double | Double | double | Double precision |
11
+ | BigDecimal | BigDecimal | decimal | Exact precision |
12
+ | Boolean | Boolean | boolean | |
13
+ | LocalDate | LocalDate | date | Date only |
14
+ | Instant | Instant | timestamp | UTC timestamp |
15
+ | ZonedDateTime | ZonedDateTime | timestamp | With timezone |
16
+ | Duration | Duration | bigint | Duration in nanos |
17
+ | UUID | UUID | uuid | Unique identifier |
18
+ | Blob | byte[] | blob | Binary data |
19
+ | AnyBlob | byte[] | blob | Any binary |
20
+ | ImageBlob | byte[] | blob | Image with content type |
21
+ | TextBlob | String | clob | Large text |
22
+
23
+ ## Validations
24
+ | Validation | Applies to | Example |
25
+ |---|---|---|
26
+ | `required` | All | `name String required` |
27
+ | `minlength(n)` | String | `name String minlength(3)` |
28
+ | `maxlength(n)` | String | `name String maxlength(100)` |
29
+ | `min(n)` | Numeric | `price BigDecimal min(0)` |
30
+ | `max(n)` | Numeric | `quantity Integer max(1000)` |
31
+ | `pattern(regex)` | String | `sku String pattern(/^[A-Z]{3}-[0-9]{4}$/)` |
32
+ | `unique` | All | `email String unique` |
33
+
34
+ ## Relationship Types
35
+ ```jdl
36
+ relationship OneToMany {
37
+ Owner{children} to Child{owner(displayField) required}
38
+ }
39
+ relationship ManyToMany {
40
+ A{bs} to B{as}
41
+ }
42
+ relationship OneToOne {
43
+ A{b} to B with jpaDerivedIdentifier
44
+ }
45
+ relationship ManyToOne {
46
+ Child{parent(name)} to Parent
47
+ }
48
+ ```
49
+
50
+ ## Enum Definition
51
+ ```jdl
52
+ enum Status {
53
+ ACTIVE("Active"),
54
+ INACTIVE("Inactive")
55
+ }
56
+ ```