eva4j 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +362 -98
- package/docs/commands/ADD_MODULE.md +235 -0
- package/docs/commands/CREATE.md +190 -0
- package/docs/commands/DETACH.md +280 -0
- package/docs/commands/GENERATE_ENTITIES.md +2215 -0
- package/docs/commands/GENERATE_HTTP_EXCHANGE.md +450 -0
- package/docs/commands/GENERATE_KAFKA_EVENT.md +498 -0
- package/docs/commands/GENERATE_KAFKA_LISTENER.md +672 -0
- package/docs/commands/GENERATE_RECORD.md +311 -0
- package/docs/commands/GENERATE_RESOURCE.md +345 -0
- package/docs/commands/GENERATE_USECASE.md +282 -0
- package/docs/commands/INDEX.md +230 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,30 +1,156 @@
|
|
|
1
1
|
# eva4j
|
|
2
2
|
|
|
3
|
-
A powerful Node.js CLI for generating Spring Boot projects with modular architecture that enables efficient monolith-first development with seamless transition to microservices
|
|
3
|
+
> **A powerful Node.js CLI for generating Spring Boot projects with modular architecture that enables efficient monolith-first development with seamless transition to microservices.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[](https://www.npmjs.com/package/eva4j)
|
|
6
|
+
[](https://github.com/your-repo/eva4j/blob/main/LICENSE)
|
|
7
|
+
[](https://nodejs.org)
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 🚀 What is eva4j?
|
|
12
|
+
|
|
13
|
+
**eva4j accelerates Spring Boot development** by automating repetitive tasks and generating production-ready code following industry best practices for Clean Architecture, CQRS, and Microservices.
|
|
14
|
+
|
|
15
|
+
### ⚡ Generate in Seconds, Not Hours
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Create a complete project
|
|
19
|
+
eva4j create my-ecommerce
|
|
20
|
+
cd my-ecommerce
|
|
21
|
+
|
|
22
|
+
# Add a module
|
|
23
|
+
eva4j add module product
|
|
8
24
|
|
|
9
|
-
|
|
25
|
+
# Generate full CRUD from YAML
|
|
26
|
+
eva4j g entities product
|
|
27
|
+
|
|
28
|
+
# 🎉 Done! You have:
|
|
29
|
+
# ✅ Domain entities with business logic
|
|
30
|
+
# ✅ JPA repositories and mappers
|
|
31
|
+
# ✅ CQRS commands and queries
|
|
32
|
+
# ✅ REST API with pagination
|
|
33
|
+
# ✅ Complete hexagonal architecture
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 💎 Why eva4j?
|
|
39
|
+
|
|
40
|
+
### The Problem
|
|
41
|
+
|
|
42
|
+
Building Spring Boot applications with proper architecture requires:
|
|
43
|
+
- ❌ Hours setting up project structure
|
|
44
|
+
- ❌ Repetitive code for CRUD operations
|
|
45
|
+
- ❌ Manual wiring of layers (domain, application, infrastructure)
|
|
46
|
+
- ❌ Complex microservices infrastructure from day one
|
|
47
|
+
- ❌ Risk of architectural inconsistencies
|
|
48
|
+
|
|
49
|
+
### The Solution
|
|
50
|
+
|
|
51
|
+
eva4j provides:
|
|
52
|
+
- ✅ **Project in seconds** - Complete structure with one command
|
|
53
|
+
- ✅ **YAML-driven development** - Define domain model, generate 90% of code
|
|
54
|
+
- ✅ **Automatic layer wiring** - Domain, application, infrastructure pre-connected
|
|
55
|
+
- ✅ **Modular monolith first** - Simple development, microservices ready
|
|
56
|
+
- ✅ **Architectural consistency** - Same patterns across all modules
|
|
57
|
+
|
|
58
|
+
---
|
|
10
59
|
|
|
11
|
-
|
|
12
|
-
- 🎯 **Generar módulos de dominio** con capas hexagonales pre-configuradas
|
|
13
|
-
- 🔄 **Implementar CQRS** sin código repetitivo (commands, queries, handlers)
|
|
14
|
-
- 📦 **Agregar integraciones** (Kafka, HTTP clients) con configuración automática
|
|
15
|
-
- 🚢 **Extraer microservicios** de tu monolito cuando sea necesario, sin reescribir código
|
|
60
|
+
## 🎯 Key Benefits & Impact
|
|
16
61
|
|
|
17
|
-
###
|
|
62
|
+
### 1. **Massive Time Savings**
|
|
18
63
|
|
|
19
|
-
|
|
64
|
+
| Task | Without eva4j | With eva4j | Time Saved |
|
|
65
|
+
|------|---------------|------------|------------|
|
|
66
|
+
| Project setup | 2-4 hours | 30 seconds | **99%** |
|
|
67
|
+
| Module creation | 1-2 hours | 15 seconds | **99%** |
|
|
68
|
+
| Entity + CRUD | 3-6 hours | 1 minute | **98%** |
|
|
69
|
+
| HTTP integration | 1-2 hours | 30 seconds | **99%** |
|
|
70
|
+
| Kafka setup | 2-3 hours | 30 seconds | **99%** |
|
|
20
71
|
|
|
21
|
-
|
|
22
|
-
- 🖥️ **Un solo servidor** - despliega una aplicación en desarrollo para validar cambios
|
|
23
|
-
- 🐛 **Debug simple** - breakpoints que funcionan en todo el flujo
|
|
24
|
-
- ⚡ **Startup rápido** - segundos, no minutos
|
|
25
|
-
- 🧪 **Testing integrado** - prueba interacciones entre módulos sin Docker Compose
|
|
72
|
+
**Total saved per module: 7-15 hours** → Invest in business logic instead!
|
|
26
73
|
|
|
27
|
-
|
|
74
|
+
### 2. **Quality & Consistency**
|
|
75
|
+
|
|
76
|
+
- ✅ **Clean/Hexagonal Architecture** - Enforced by design
|
|
77
|
+
- ✅ **CQRS Pattern** - Write and read operations properly separated
|
|
78
|
+
- ✅ **Domain-Driven Design** - Entities, Value Objects, Aggregates
|
|
79
|
+
- ✅ **Best Practices** - Industry-standard patterns built-in
|
|
80
|
+
- ✅ **No Architectural Drift** - All modules follow same structure
|
|
81
|
+
|
|
82
|
+
### 3. **Developer Experience**
|
|
83
|
+
|
|
84
|
+
- ✅ **Simple Learning Curve** - YAML + CLI commands
|
|
85
|
+
- ✅ **Interactive Prompts** - Guided project creation
|
|
86
|
+
- ✅ **Clear Documentation** - Every command fully documented
|
|
87
|
+
- ✅ **Rich Examples** - 10+ YAML examples included
|
|
88
|
+
- ✅ **Fast Feedback** - Generate, run, test in seconds
|
|
89
|
+
|
|
90
|
+
### 4. **Pragmatic Microservices**
|
|
91
|
+
|
|
92
|
+
#### Start Simple (Modular Monolith)
|
|
93
|
+
- 📁 **Single repository** - All code in one place
|
|
94
|
+
- 🖥️ **Single application** - Deploy and debug easily
|
|
95
|
+
- 🐛 **Simple debugging** - Breakpoints work across modules
|
|
96
|
+
- ⚡ **Fast startup** - Seconds, not minutes
|
|
97
|
+
- 🧪 **Integrated testing** - Test module interactions without Docker
|
|
98
|
+
|
|
99
|
+
#### Scale When Needed (Microservices)
|
|
100
|
+
- 🚀 **Extract modules** - One command to microservice
|
|
101
|
+
- 🔄 **Zero rewrite** - Same code structure
|
|
102
|
+
- 📦 **Independent deployment** - Deploy modules separately
|
|
103
|
+
- 🎯 **Gradual migration** - Extract only what you need
|
|
104
|
+
- 🏗️ **Same architecture** - Familiar structure everywhere
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 🏆 Real-World Impact
|
|
109
|
+
|
|
110
|
+
### Typical Project Timeline Comparison
|
|
111
|
+
|
|
112
|
+
**Traditional Approach:**
|
|
113
|
+
```
|
|
114
|
+
Week 1-2: Project setup, architecture decisions
|
|
115
|
+
Week 3-4: First module implementation
|
|
116
|
+
Week 5-6: Second module, refactor patterns
|
|
117
|
+
Week 7-8: Third module, stabilize architecture
|
|
118
|
+
Week 9+: Business logic finally starts
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**With eva4j:**
|
|
122
|
+
```
|
|
123
|
+
Day 1: Project setup, 3 modules created, CRUD working
|
|
124
|
+
Week 1: Business logic implementation
|
|
125
|
+
Week 2: Testing and refinement
|
|
126
|
+
Week 3+: More features, not more infrastructure
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Result: Ship in 1/3 of the time** while maintaining higher quality standards.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 💡 Development Philosophy
|
|
134
|
+
|
|
135
|
+
### Without Complex Infrastructure
|
|
136
|
+
|
|
137
|
+
You **don't need** from day one:
|
|
138
|
+
- ❌ Multiple services running
|
|
139
|
+
- ❌ Distributed databases
|
|
140
|
+
- ❌ Service mesh
|
|
141
|
+
- ❌ Complex orchestration
|
|
142
|
+
- ❌ Microservices overhead
|
|
143
|
+
|
|
144
|
+
Instead, you **get**:
|
|
145
|
+
- ✅ **Single application** - Simple to develop and debug
|
|
146
|
+
- ✅ **Module boundaries** - Enforced by Spring Modulith
|
|
147
|
+
- ✅ **Clean architecture** - Ready for extraction
|
|
148
|
+
- ✅ **Fast iteration** - Change multiple modules instantly
|
|
149
|
+
- ✅ **Microservices ready** - Extract when business requires it
|
|
150
|
+
|
|
151
|
+
### Result
|
|
152
|
+
|
|
153
|
+
**Reduce setup time from days to minutes**, maintain architectural consistency, and scale from rapid development to distributed production when actually needed.
|
|
28
154
|
|
|
29
155
|
## 🎯 Philosophy: Modular Monolith to Microservices
|
|
30
156
|
|
|
@@ -84,7 +210,104 @@ npm link
|
|
|
84
210
|
|
|
85
211
|
---
|
|
86
212
|
|
|
87
|
-
## 📚
|
|
213
|
+
## 📚 Complete Documentation
|
|
214
|
+
|
|
215
|
+
### 📖 Command Reference
|
|
216
|
+
|
|
217
|
+
All commands are fully documented with examples, use cases, and best practices:
|
|
218
|
+
|
|
219
|
+
**[📑 Complete Commands Index](docs/commands/INDEX.md)** - Full documentation hub
|
|
220
|
+
|
|
221
|
+
#### Quick Links to Most Used Commands
|
|
222
|
+
|
|
223
|
+
| Command | Purpose | Documentation |
|
|
224
|
+
|---------|---------|---------------|
|
|
225
|
+
| `create` | Create new project | [📖 CREATE.md](docs/commands/CREATE.md) |
|
|
226
|
+
| `add module` | Add domain module | [📖 ADD_MODULE.md](docs/commands/ADD_MODULE.md) |
|
|
227
|
+
| `g entities` | Generate from YAML | [📖 GENERATE_ENTITIES.md](docs/commands/GENERATE_ENTITIES.md) |
|
|
228
|
+
| `g usecase` | Create use case | [📖 GENERATE_USECASE.md](docs/commands/GENERATE_USECASE.md) |
|
|
229
|
+
| `g resource` | Generate REST API | [📖 GENERATE_RESOURCE.md](docs/commands/GENERATE_RESOURCE.md) |
|
|
230
|
+
| `g http` | HTTP client | [📖 GENERATE_HTTP_EXCHANGE.md](docs/commands/GENERATE_HTTP_EXCHANGE.md) |
|
|
231
|
+
| `g kafka-event` | Kafka events | [📖 GENERATE_KAFKA_EVENT.md](docs/commands/GENERATE_KAFKA_EVENT.md) |
|
|
232
|
+
| `detach` | Extract microservice | [📖 DETACH.md](docs/commands/DETACH.md) |
|
|
233
|
+
|
|
234
|
+
### 📘 Additional Resources
|
|
235
|
+
|
|
236
|
+
- **[DOMAIN_YAML_GUIDE.md](DOMAIN_YAML_GUIDE.md)** - Complete YAML syntax reference
|
|
237
|
+
- **[QUICK_REFERENCE.md](QUICK_REFERENCE.md)** - Command cheat sheet
|
|
238
|
+
- **[examples/](examples/)** - 10+ YAML examples for different scenarios
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 📚 Commands Documentation
|
|
243
|
+
|
|
244
|
+
Eva4j provides a comprehensive set of commands for different stages of development. Each command has detailed documentation with examples and best practices.
|
|
245
|
+
|
|
246
|
+
### Core Commands
|
|
247
|
+
|
|
248
|
+
| Command | Description | Documentation |
|
|
249
|
+
|---------|-------------|---------------|
|
|
250
|
+
| **create** | Create a new Spring Boot project with modular architecture | [📖 CREATE.md](docs/commands/CREATE.md) |
|
|
251
|
+
| **add module** | Add a new domain module with hexagonal architecture | [📖 ADD_MODULE.md](docs/commands/ADD_MODULE.md) |
|
|
252
|
+
| **detach** | Extract a module into an independent microservice | [📖 DETACH.md](docs/commands/DETACH.md) |
|
|
253
|
+
|
|
254
|
+
### Code Generation Commands
|
|
255
|
+
|
|
256
|
+
| Command | Description | Documentation |
|
|
257
|
+
|---------|-------------|---------------|
|
|
258
|
+
| **generate entities** (g entities) | Generate complete domain model from YAML | [📖 GENERATE_ENTITIES.md](docs/commands/GENERATE_ENTITIES.md) |
|
|
259
|
+
| **generate usecase** (g usecase) | Create CQRS commands or queries | [📖 GENERATE_USECASE.md](docs/commands/GENERATE_USECASE.md) |
|
|
260
|
+
| **generate resource** (g resource) | Generate REST controller with CRUD endpoints | [📖 GENERATE_RESOURCE.md](docs/commands/GENERATE_RESOURCE.md) |
|
|
261
|
+
| **generate record** (g record) | Create Java Record for DTOs | [📖 GENERATE_RECORD.md](docs/commands/GENERATE_RECORD.md) |
|
|
262
|
+
|
|
263
|
+
### Integration Commands
|
|
264
|
+
|
|
265
|
+
| Command | Description | Documentation |
|
|
266
|
+
|---------|-------------|---------------|
|
|
267
|
+
| **generate http-exchange** (g http) | Create HTTP client with OpenFeign | [📖 GENERATE_HTTP_EXCHANGE.md](docs/commands/GENERATE_HTTP_EXCHANGE.md) |
|
|
268
|
+
| **generate kafka-event** (g kafka-event) | Setup Kafka event publishing | [📖 GENERATE_KAFKA_EVENT.md](docs/commands/GENERATE_KAFKA_EVENT.md) |
|
|
269
|
+
| **generate kafka-listener** (g kafka-listener) | Create Kafka event consumer | Coming soon |
|
|
270
|
+
| **add kafka-client** | Add Kafka dependencies to module | Coming soon |
|
|
271
|
+
|
|
272
|
+
### Quick Start Example
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
# 1. Create project
|
|
276
|
+
eva4j create my-ecommerce
|
|
277
|
+
cd my-ecommerce
|
|
278
|
+
|
|
279
|
+
# 2. Start development services
|
|
280
|
+
docker-compose up -d
|
|
281
|
+
|
|
282
|
+
# 3. Add modules
|
|
283
|
+
eva4j add module product
|
|
284
|
+
eva4j add module order
|
|
285
|
+
eva4j add module customer
|
|
286
|
+
|
|
287
|
+
# 4. Generate entities from YAML
|
|
288
|
+
eva4j g entities product
|
|
289
|
+
|
|
290
|
+
# 5. Run application
|
|
291
|
+
./gradlew bootRun
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### Command Aliases
|
|
295
|
+
|
|
296
|
+
For faster development, most generate commands have short aliases:
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
eva4j g entities <name> # generate entities
|
|
300
|
+
eva4j g usecase <name> # generate usecase
|
|
301
|
+
eva4j g resource <name> # generate resource
|
|
302
|
+
eva4j g record <name> # generate record
|
|
303
|
+
eva4j g http <name> # generate http-exchange
|
|
304
|
+
eva4j g kafka-event <name> # generate kafka-event
|
|
305
|
+
eva4j g kafka-listener <name> # generate kafka-listener
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## 📖 Detailed Command Reference
|
|
88
311
|
|
|
89
312
|
### 1. `create` - Create New Project
|
|
90
313
|
|
|
@@ -94,106 +317,147 @@ Initialize a new Spring Boot project with modular architecture.
|
|
|
94
317
|
eva4j create <project-name>
|
|
95
318
|
```
|
|
96
319
|
|
|
97
|
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
- Author name
|
|
320
|
+
Creates a production-ready Spring Boot project with:
|
|
321
|
+
- ✅ Modular architecture (Spring Modulith)
|
|
322
|
+
- ✅ Multi-environment configuration (local, dev, test, prod)
|
|
323
|
+
- ✅ Docker Compose with database and Kafka
|
|
324
|
+
- ✅ Gradle build with all necessary dependencies
|
|
325
|
+
- ✅ Hexagonal architecture structure
|
|
104
326
|
|
|
105
|
-
**
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
│ │ └── Application.java
|
|
116
|
-
│ └── resources/
|
|
117
|
-
│ ├── application.yml
|
|
118
|
-
│ ├── application-local.yml
|
|
119
|
-
│ ├── application-develop.yml
|
|
120
|
-
│ ├── application-test.yml
|
|
121
|
-
│ └── application-production.yml
|
|
122
|
-
└── test/
|
|
327
|
+
**[📖 Full Documentation](docs/commands/CREATE.md)**
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
### 2. `add module` - Add Domain Module
|
|
332
|
+
|
|
333
|
+
Add a domain module following hexagonal architecture.
|
|
334
|
+
|
|
335
|
+
```bash
|
|
336
|
+
eva4j add module <module-name>
|
|
123
337
|
```
|
|
124
338
|
|
|
125
|
-
|
|
339
|
+
Generates a complete module with:
|
|
340
|
+
- ✅ Domain layer (entities, value objects, repositories)
|
|
341
|
+
- ✅ Application layer (commands, queries, handlers, DTOs)
|
|
342
|
+
- ✅ Infrastructure layer (JPA, REST controllers)
|
|
343
|
+
- ✅ CQRS pattern ready
|
|
344
|
+
- ✅ Spring Modulith boundaries validated
|
|
345
|
+
|
|
346
|
+
**[📖 Full Documentation](docs/commands/ADD_MODULE.md)**
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
### 3. `generate entities` - Generate Domain Model
|
|
351
|
+
|
|
352
|
+
Generate complete domain implementation from YAML definition.
|
|
353
|
+
|
|
126
354
|
```bash
|
|
127
|
-
eva4j
|
|
128
|
-
|
|
355
|
+
eva4j generate entities <aggregate-name>
|
|
356
|
+
eva4j g entities <aggregate-name> # Short alias
|
|
129
357
|
```
|
|
130
358
|
|
|
359
|
+
Creates from a YAML file:
|
|
360
|
+
- ✅ Domain entities and value objects
|
|
361
|
+
- ✅ JPA entities and repositories
|
|
362
|
+
- ✅ CRUD commands and queries
|
|
363
|
+
- ✅ Command/Query handlers
|
|
364
|
+
- ✅ DTOs and mappers
|
|
365
|
+
- ✅ REST controller
|
|
366
|
+
|
|
367
|
+
**[📖 Full Documentation](docs/commands/GENERATE_ENTITIES.md)**
|
|
368
|
+
|
|
369
|
+
**Example YAML:** See [examples/](examples/) directory for complete examples.
|
|
370
|
+
|
|
131
371
|
---
|
|
132
372
|
|
|
133
|
-
###
|
|
373
|
+
### 4. Other Commands
|
|
374
|
+
|
|
375
|
+
For complete documentation on all commands, see:
|
|
134
376
|
|
|
135
|
-
|
|
377
|
+
- **[generate usecase](docs/commands/GENERATE_USECASE.md)** - Create individual CQRS use cases
|
|
378
|
+
- **[generate resource](docs/commands/GENERATE_RESOURCE.md)** - Generate REST controllers
|
|
379
|
+
- **[generate record](docs/commands/GENERATE_RECORD.md)** - Create Java Records
|
|
380
|
+
- **[generate http-exchange](docs/commands/GENERATE_HTTP_EXCHANGE.md)** - HTTP client integration
|
|
381
|
+
- **[generate kafka-event](docs/commands/GENERATE_KAFKA_EVENT.md)** - Kafka event publishing
|
|
382
|
+
- **[detach](docs/commands/DETACH.md)** - Extract module to microservice
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
## 🎯 Common Workflows
|
|
387
|
+
|
|
388
|
+
### Workflow 1: Create CRUD Module
|
|
136
389
|
|
|
137
390
|
```bash
|
|
138
|
-
|
|
391
|
+
# 1. Add module
|
|
392
|
+
eva4j add module product
|
|
393
|
+
|
|
394
|
+
# 2. Create YAML definition
|
|
395
|
+
# Edit examples/product.yaml
|
|
396
|
+
|
|
397
|
+
# 3. Generate entities
|
|
398
|
+
eva4j g entities product
|
|
399
|
+
|
|
400
|
+
# 4. Run and test
|
|
401
|
+
./gradlew bootRun
|
|
139
402
|
```
|
|
140
403
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
│ ├── commands/ # CQRS commands
|
|
152
|
-
│ ├── queries/ # CQRS queries
|
|
153
|
-
│ ├── usecases/ # Command/Query handlers
|
|
154
|
-
│ ├── dtos/ # Response DTOs
|
|
155
|
-
│ ├── events/ # Domain events
|
|
156
|
-
│ ├── mappers/ # Entity-DTO mappers
|
|
157
|
-
│ └── ports/ # Output ports (interfaces)
|
|
158
|
-
├── domain/
|
|
159
|
-
│ ├── models/
|
|
160
|
-
│ │ ├── entities/ # Domain entities
|
|
161
|
-
│ │ └── valueObjects/ # Value objects
|
|
162
|
-
│ ├── repositories/ # Repository interfaces
|
|
163
|
-
│ └── services/ # Domain services
|
|
164
|
-
└── infrastructure/
|
|
165
|
-
├── adapters/ # Port implementations
|
|
166
|
-
├── database/ # JPA repositories
|
|
167
|
-
└── rest/
|
|
168
|
-
├── controllers/ # REST controllers
|
|
169
|
-
└── validators/ # Request validators
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
**Auto-Generated Shared Module (First Module Only):**
|
|
173
|
-
```
|
|
174
|
-
src/main/java/.../shared/
|
|
175
|
-
├── domain/
|
|
176
|
-
│ ├── annotations/ # @DomainComponent, @ApplicationComponent
|
|
177
|
-
│ ├── customExceptions/ # DomainException, EntityNotFoundException
|
|
178
|
-
│ ├── errorMessage/ # ErrorMessage
|
|
179
|
-
│ └── interfaces/ # BaseEntity, AuditableEntity
|
|
180
|
-
└── infrastructure/
|
|
181
|
-
├── configurations/ # SwaggerConfig, JacksonConfig
|
|
182
|
-
├── eventEnvelope/ # EventEnvelope wrapper
|
|
183
|
-
├── filters/ # Request/Response logging
|
|
184
|
-
└── handlerException/ # Global exception handler
|
|
404
|
+
### Workflow 2: Add Custom Use Cases
|
|
405
|
+
|
|
406
|
+
```bash
|
|
407
|
+
# Generate additional commands
|
|
408
|
+
eva4j g usecase UpdateProductPrice --type command
|
|
409
|
+
eva4j g usecase DeactivateProduct --type command
|
|
410
|
+
|
|
411
|
+
# Generate custom queries
|
|
412
|
+
eva4j g usecase SearchProductsByCategory --type query
|
|
413
|
+
eva4j g usecase GetLowStockProducts --type query
|
|
185
414
|
```
|
|
186
415
|
|
|
187
|
-
|
|
416
|
+
### Workflow 3: Integrate External Service
|
|
417
|
+
|
|
188
418
|
```bash
|
|
189
|
-
|
|
190
|
-
eva4j
|
|
191
|
-
|
|
419
|
+
# Create HTTP client
|
|
420
|
+
eva4j g http PaymentGateway
|
|
421
|
+
|
|
422
|
+
# Configure in application.yml
|
|
423
|
+
# Implement client methods
|
|
424
|
+
# Use in domain through ports
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
### Workflow 4: Event-Driven Communication
|
|
428
|
+
|
|
429
|
+
```bash
|
|
430
|
+
# Publish events
|
|
431
|
+
eva4j g kafka-event OrderCreated
|
|
432
|
+
|
|
433
|
+
# Consume events in another module
|
|
434
|
+
eva4j g kafka-listener OrderCreated
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
### Workflow 5: Extract to Microservice
|
|
438
|
+
|
|
439
|
+
```bash
|
|
440
|
+
# When module is mature and needs independence
|
|
441
|
+
eva4j detach order
|
|
442
|
+
|
|
443
|
+
# Result: order-service/ as standalone application
|
|
192
444
|
```
|
|
193
445
|
|
|
194
446
|
---
|
|
195
447
|
|
|
196
|
-
|
|
448
|
+
## 🎓 Additional Resources
|
|
449
|
+
|
|
450
|
+
- **[DOMAIN_YAML_GUIDE.md](DOMAIN_YAML_GUIDE.md)** - Complete YAML syntax reference
|
|
451
|
+
- **[QUICK_REFERENCE.md](QUICK_REFERENCE.md)** - Command cheat sheet
|
|
452
|
+
- **[examples/](examples/)** - YAML examples for different scenarios
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
### 3. Legacy Reference (Deprecated Section)
|
|
457
|
+
|
|
458
|
+
For backward compatibility, here's the old reference format:
|
|
459
|
+
|
|
460
|
+
### `add kafka-client` - Add Kafka Support
|
|
197
461
|
|
|
198
462
|
Install Kafka dependencies and configuration.
|
|
199
463
|
|