eva4j 1.0.11 → 1.0.13

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 (73) hide show
  1. package/AGENTS.md +441 -14
  2. package/DOMAIN_YAML_GUIDE.md +425 -21
  3. package/FUTURE_FEATURES.md +315 -115
  4. package/QUICK_REFERENCE.md +101 -153
  5. package/README.md +77 -70
  6. package/bin/eva4j.js +57 -1
  7. package/config/defaults.json +3 -0
  8. package/docs/commands/GENERATE_ENTITIES.md +662 -1968
  9. package/docs/commands/GENERATE_HTTP_EXCHANGE.md +274 -450
  10. package/docs/commands/GENERATE_KAFKA_EVENT.md +219 -498
  11. package/docs/commands/GENERATE_KAFKA_LISTENER.md +18 -18
  12. package/docs/commands/GENERATE_RECORD.md +335 -311
  13. package/docs/commands/GENERATE_TEMPORAL_ACTIVITY.md +174 -0
  14. package/docs/commands/GENERATE_TEMPORAL_FLOW.md +237 -0
  15. package/docs/commands/GENERATE_USECASE.md +216 -282
  16. package/docs/commands/INDEX.md +36 -7
  17. package/examples/doctor-evaluation.yaml +3 -3
  18. package/examples/domain-audit-complete.yaml +2 -2
  19. package/examples/domain-collections.yaml +2 -2
  20. package/examples/domain-ecommerce.yaml +2 -2
  21. package/examples/domain-events.yaml +201 -0
  22. package/examples/domain-field-visibility.yaml +11 -5
  23. package/examples/domain-multi-aggregate.yaml +12 -6
  24. package/examples/domain-one-to-many.yaml +1 -1
  25. package/examples/domain-one-to-one.yaml +1 -1
  26. package/examples/domain-secondary-onetomany.yaml +1 -1
  27. package/examples/domain-secondary-onetoone.yaml +1 -1
  28. package/examples/domain-simple.yaml +1 -1
  29. package/examples/domain-soft-delete.yaml +3 -3
  30. package/examples/domain-transitions.yaml +1 -1
  31. package/examples/domain-value-objects.yaml +1 -1
  32. package/package.json +2 -2
  33. package/src/commands/add-kafka-client.js +3 -1
  34. package/src/commands/add-temporal-client.js +286 -0
  35. package/src/commands/generate-entities.js +75 -4
  36. package/src/commands/generate-kafka-event.js +273 -89
  37. package/src/commands/generate-temporal-activity.js +228 -0
  38. package/src/commands/generate-temporal-flow.js +216 -0
  39. package/src/generators/module-generator.js +1 -0
  40. package/src/generators/shared-generator.js +26 -0
  41. package/src/utils/yaml-to-entity.js +93 -4
  42. package/templates/aggregate/AggregateRepository.java.ejs +3 -2
  43. package/templates/aggregate/AggregateRepositoryImpl.java.ejs +15 -7
  44. package/templates/aggregate/AggregateRoot.java.ejs +38 -2
  45. package/templates/aggregate/DomainEntity.java.ejs +6 -2
  46. package/templates/aggregate/DomainEventHandler.java.ejs +62 -0
  47. package/templates/aggregate/DomainEventRecord.java.ejs +50 -0
  48. package/templates/aggregate/JpaAggregateRoot.java.ejs +3 -1
  49. package/templates/aggregate/JpaEntity.java.ejs +3 -1
  50. package/templates/base/docker/kafka-services.yaml.ejs +2 -2
  51. package/templates/base/docker/temporal-services.yaml.ejs +29 -0
  52. package/templates/base/resources/parameters/develop/temporal.yaml.ejs +9 -0
  53. package/templates/base/resources/parameters/local/temporal.yaml.ejs +9 -0
  54. package/templates/base/resources/parameters/production/temporal.yaml.ejs +9 -0
  55. package/templates/base/resources/parameters/test/temporal.yaml.ejs +9 -0
  56. package/templates/base/root/AGENTS.md.ejs +916 -51
  57. package/templates/crud/Controller.java.ejs +36 -6
  58. package/templates/crud/ListQuery.java.ejs +6 -2
  59. package/templates/crud/ListQueryHandler.java.ejs +24 -10
  60. package/templates/crud/UpdateCommand.java.ejs +52 -0
  61. package/templates/crud/UpdateCommandHandler.java.ejs +105 -0
  62. package/templates/kafka-event/DomainEventHandlerMethod.ejs +1 -0
  63. package/templates/kafka-event/Event.java.ejs +23 -0
  64. package/templates/shared/application/dtos/PagedResponse.java.ejs +30 -0
  65. package/templates/shared/configurations/temporalConfig/TemporalConfig.java.ejs +104 -0
  66. package/templates/shared/domain/DomainEvent.java.ejs +40 -0
  67. package/templates/shared/interfaces/HeavyActivity.java.ejs +4 -0
  68. package/templates/shared/interfaces/LightActivity.java.ejs +4 -0
  69. package/templates/temporal-activity/ActivityImpl.java.ejs +14 -0
  70. package/templates/temporal-activity/ActivityInterface.java.ejs +11 -0
  71. package/templates/temporal-flow/WorkFlowImpl.java.ejs +64 -0
  72. package/templates/temporal-flow/WorkFlowInterface.java.ejs +19 -0
  73. package/templates/temporal-flow/WorkFlowService.java.ejs +49 -0
@@ -1,204 +1,152 @@
1
- # Quick Reference: Configuration Persistence Feature
1
+ # eva — Quick Reference Cheat Sheet
2
2
 
3
- ## New Command
3
+ > Binary: `eva`  |  Install: `npm install -g eva4j`  |  [Full docs](docs/commands/INDEX.md)
4
4
 
5
- ```bash
6
- eva4j info
7
- ```
5
+ ---
8
6
 
9
- **Purpose**: Display project configuration and module history
7
+ ## 🏗️ Project Setup
10
8
 
11
- **Output Example**:
12
- ```
13
- 📦 Eva4j Project Information
14
-
15
- Project Details:
16
- Name: my-shop
17
- Group ID: com.company
18
- Artifact ID: my-shop
19
- Package: com.company.myshop
20
-
21
- Versions:
22
- Java: 21
23
- Spring Boot: 3.5.5
24
- Spring Modulith: 1.4.6
25
-
26
- Dependencies:
27
- • web
28
- • data-jpa
29
- • validation
30
-
31
- Modules:
32
- • user (soft-delete, audit)
33
- • product (soft-delete, audit)
34
-
35
- Timestamps:
36
- Created: 1/27/2026, 10:25:00 AM
37
- Last Updated: 1/27/2026, 10:35:00 AM
9
+ ```bash
10
+ eva create <project-name> # Create Spring Boot project (interactive)
11
+ eva add module <module> # Add hexagonal module to existing project
12
+ eva info # Show project config and module list
13
+ eva detach <module> # Extract module to standalone microservice
38
14
  ```
39
15
 
40
- ## .eva4j.json File
41
-
42
- **Location**: Project root directory
16
+ ---
43
17
 
44
- **Purpose**:
45
- - Persist project configuration
46
- - Track module history
47
- - Share state with team members
18
+ ## ⚡ Code Generation
48
19
 
49
- **When Created**: Automatically when you run `eva4j create <project-name>`
20
+ ### Domain Model
50
21
 
51
- **When Updated**: Automatically when you run `eva4j add module <module-name>`
22
+ ```bash
23
+ eva g entities <module> # Generate full CRUD from domain.yaml
24
+ ```
52
25
 
53
- **Should I commit it?**: **YES!**
54
- - It's tracked in git by default
55
- - Helps team members see project state
56
- - Ensures consistent configuration
26
+ ### Use Cases (CQRS)
57
27
 
58
- ## What Gets Persisted?
28
+ ```bash
29
+ eva g usecase <module> # Create command or query (interactive)
30
+ ```
59
31
 
60
- ### Project Information
61
- - Project name, group ID, artifact ID
62
- - Base package name
63
- - Java version
64
- - Spring Boot version
65
- - Spring Modulith version
32
+ ### REST API
66
33
 
67
- ### Dependencies
68
- - Selected dependencies (web, data-jpa, security, etc.)
34
+ ```bash
35
+ eva g resource <module> # Generate REST controller + 5 CRUD use cases
36
+ eva g record <module> # Create immutable Java Record (DTO / value object)
37
+ ```
69
38
 
70
- ### Modules
71
- - Module names
72
- - Module options:
73
- - hasSoftDelete: boolean
74
- - hasAudit: boolean
75
- - Creation timestamps per module
39
+ ---
76
40
 
77
- ### Timestamps
78
- - Project creation date/time
79
- - Last update date/time
41
+ ## 🔌 Integration
80
42
 
81
- ## Usage Examples
43
+ ### HTTP Clients
82
44
 
83
- ### View Project Configuration
84
45
  ```bash
85
- cd my-shop
86
- eva4j info
46
+ eva g http-exchange <module> # Spring OpenFeign HTTP client (interactive)
87
47
  ```
88
48
 
89
- ### Check Before Adding Module
90
- ```bash
91
- eva4j info # See existing modules
92
- eva4j add module inventory # Add new module
93
- eva4j info # Verify module was added
94
- ```
49
+ ### Kafka
95
50
 
96
- ### After Closing Terminal
97
51
  ```bash
98
- # Day 1
99
- eva4j create my-shop
100
- cd my-shop
101
- eva4j add module user
102
-
103
- # Close terminal...
104
-
105
- # Day 2 - Open new terminal
106
- cd my-shop
107
- eva4j info # Shows all previous configuration!
108
- eva4j add module product # Continues where you left off
52
+ eva add kafka-client # Install Kafka SDK + base configuration
53
+ eva g kafka-event <module> # Kafka event publisher (interactive)
54
+ eva g kafka-listener <module> # Kafka event consumer(s) — select topics
109
55
  ```
110
56
 
111
- ## New Validations
57
+ ### Temporal Workflows
112
58
 
113
- ### Module Duplicate Prevention
114
59
  ```bash
115
- eva4j add module user
116
- # Success! Module created
117
-
118
- eva4j add module user
119
- # ❌ Module 'user' is already registered
60
+ eva add temporal-client # Install Temporal SDK + 3-queue worker setup
61
+ eva g temporal-flow <module> # Workflow interface + Saga impl + service facade
62
+ eva g temporal-activity <module> # Activity interface + impl (Light or Heavy)
120
63
  ```
121
64
 
122
- The CLI now checks both:
123
- 1. Filesystem (does directory exist?)
124
- 2. Configuration file (is module registered?)
65
+ ---
125
66
 
126
- ## Error Messages
67
+ ## 🔤 Aliases
127
68
 
128
- ### Not in Project Directory
129
- ```bash
130
- cd /some/other/folder
131
- eva4j info
132
- # ❌ Not in an eva4j project directory
133
- # Run this command inside a project created with eva4j
134
- ```
69
+ All `generate` commands can be shortened to `g`:
135
70
 
136
- ### Configuration File Issues
137
- ```bash
138
- eva4j add module test
139
- # (if .eva4j.json is corrupted)
140
- # Could not load project configuration
141
- ```
71
+ | Full form | Short alias |
72
+ |-----------|-------------|
73
+ | `eva generate entities` | `eva g entities` |
74
+ | `eva generate usecase` | `eva g usecase` |
75
+ | `eva generate resource` | `eva g resource` |
76
+ | `eva generate record` | `eva g record` |
77
+ | `eva generate http-exchange` | `eva g http-exchange` |
78
+ | `eva generate kafka-event` | `eva g kafka-event` |
79
+ | `eva generate kafka-listener` | `eva g kafka-listener` |
80
+ | `eva generate temporal-flow` | `eva g temporal-flow` |
81
+ | `eva generate temporal-activity` | `eva g temporal-activity` |
142
82
 
143
- ## Developer Notes
83
+ ---
144
84
 
145
- ### ConfigManager API
85
+ ## 📋 Typical Project Workflow
146
86
 
147
- ```javascript
148
- const ConfigManager = require('./src/utils/config-manager');
87
+ ```bash
88
+ # 1. Bootstrap
89
+ eva create my-app && cd my-app
149
90
 
150
- // Create instance
151
- const configManager = new ConfigManager(projectPath);
91
+ # 2. Add modules
92
+ eva add module order
93
+ eva add module notification
152
94
 
153
- // Check if config exists
154
- const exists = await configManager.exists();
95
+ # 3. Generate domain model (edit domain.yaml first)
96
+ eva g entities order
155
97
 
156
- // Load configuration
157
- const config = await configManager.loadProjectConfig();
98
+ # 4. Add custom use cases
99
+ eva g usecase order
158
100
 
159
- // Save project configuration
160
- await configManager.saveProjectConfig({
161
- projectName: 'my-shop',
162
- groupId: 'com.company',
163
- // ... more fields
164
- });
101
+ # 5. Expose via REST
102
+ eva g resource order
165
103
 
166
- // Add module
167
- await configManager.addModule('user', {
168
- hasSoftDelete: true,
169
- hasAudit: true
170
- });
104
+ # 6. Add async events
105
+ eva add kafka-client
106
+ eva g kafka-event order order-placed
107
+ eva g kafka-listener notification
171
108
 
172
- // Check if module exists
173
- const exists = await configManager.moduleExists('user');
109
+ # 7. Add workflow orchestration
110
+ eva add temporal-client
111
+ eva g temporal-flow order # e.g., process-order
112
+ eva g temporal-activity order # e.g., validate-stock (Light)
113
+ eva g temporal-activity order # e.g., charge-payment (Heavy)
174
114
 
175
- // Get all modules
176
- const modules = await configManager.getModules();
115
+ # 8. Extract to microservice when ready
116
+ eva detach order
177
117
  ```
178
118
 
179
- ## Tips
119
+ ---
120
+
121
+ ## 🧩 Temporal Queue Model
122
+
123
+ | Queue | Purpose | ActivityOptions var |
124
+ |-------|---------|---------------------|
125
+ | `FLOW_QUEUE` | Workflow orchestration | — |
126
+ | `LIGHT_TASK_QUEUE` | Fast activities < 30 s | `lightActivityOptions` |
127
+ | `HEAVY_TASK_QUEUE` | Long-running ≤ 2 min | `heavyActivityOptions` |
180
128
 
181
- 1. **Always run `eva4j info`** before adding modules to see current state
182
- 2. **Commit .eva4j.json** to share configuration with your team
183
- 3. **Don't manually edit .eva4j.json** - let the CLI manage it
184
- 4. **Use info command** for troubleshooting configuration issues
185
- 5. **Configuration persists across sessions** - no need to remember what you did
129
+ Activities are registered automatically via Spring DI (`LightActivity` / `HeavyActivity` marker interfaces). No manual `TemporalConfig.java` patching needed.
186
130
 
187
- ## Compatibility
131
+ ---
188
132
 
189
- - Works with all existing eva4j projects
190
- - Backward compatible (won't break existing projects without .eva4j.json)
191
- - Forward compatible (configuration format can be extended)
133
+ ## 📁 Project Config File
192
134
 
193
- ## Files Involved
135
+ **`.eva4j.json`** is auto-created and managed. Commit it to git.
194
136
 
195
- - **src/utils/config-manager.js** - Configuration management
196
- - **src/commands/info.js** - Info display command
197
- - **src/generators/base-generator.js** - Saves config on project creation
198
- - **src/commands/add-module.js** - Updates config on module addition
199
- - **bin/eva4j.js** - Registers info command
200
- - **templates/base/root/gitignore.ejs** - Ensures .eva4j.json is tracked
137
+ ```bash
138
+ eva info # Read current config
139
+ ```
201
140
 
202
141
  ---
203
142
 
204
- **For full documentation, see**: [IMPLEMENTATION_SUMMARY.md](IMPLEMENTATION_SUMMARY.md)
143
+ ## 📚 Full Documentation
144
+
145
+ | Resource | Link |
146
+ |----------|------|
147
+ | All commands | [docs/commands/INDEX.md](docs/commands/INDEX.md) |
148
+ | YAML guide | [DOMAIN_YAML_GUIDE.md](DOMAIN_YAML_GUIDE.md) |
149
+ | AI agent guide | [AGENTS.md](AGENTS.md) |
150
+ | YAML examples | [examples/](examples/) |
151
+ | Temporal flow | [docs/commands/GENERATE_TEMPORAL_FLOW.md](docs/commands/GENERATE_TEMPORAL_FLOW.md) |
152
+ | Temporal activity | [docs/commands/GENERATE_TEMPORAL_ACTIVITY.md](docs/commands/GENERATE_TEMPORAL_ACTIVITY.md) |
package/README.md CHANGED
@@ -16,14 +16,14 @@
16
16
 
17
17
  ```bash
18
18
  # Create a complete project
19
- eva4j create my-ecommerce
19
+ eva create my-ecommerce
20
20
  cd my-ecommerce
21
21
 
22
22
  # Add a module
23
- eva4j add module product
23
+ eva add module product
24
24
 
25
25
  # Generate full CRUD from YAML
26
- eva4j g entities product
26
+ eva g entities product
27
27
 
28
28
  # 🎉 Done! You have:
29
29
  # ✅ Domain entities with business logic
@@ -229,6 +229,8 @@ All commands are fully documented with examples, use cases, and best practices:
229
229
  | `g resource` | Generate REST API | [📖 GENERATE_RESOURCE.md](docs/commands/GENERATE_RESOURCE.md) |
230
230
  | `g http` | HTTP client | [📖 GENERATE_HTTP_EXCHANGE.md](docs/commands/GENERATE_HTTP_EXCHANGE.md) |
231
231
  | `g kafka-event` | Kafka events | [📖 GENERATE_KAFKA_EVENT.md](docs/commands/GENERATE_KAFKA_EVENT.md) |
232
+ | `g temporal-flow` | Temporal workflow | [📖 GENERATE_TEMPORAL_FLOW.md](docs/commands/GENERATE_TEMPORAL_FLOW.md) |
233
+ | `g temporal-activity` | Temporal activity | [📖 GENERATE_TEMPORAL_ACTIVITY.md](docs/commands/GENERATE_TEMPORAL_ACTIVITY.md) |
232
234
  | `detach` | Extract microservice | [📖 DETACH.md](docs/commands/DETACH.md) |
233
235
 
234
236
  ### 📘 Additional Resources
@@ -266,26 +268,29 @@ Eva4j provides a comprehensive set of commands for different stages of developme
266
268
  |---------|-------------|---------------|
267
269
  | **generate http-exchange** (g http) | Create HTTP client with OpenFeign | [📖 GENERATE_HTTP_EXCHANGE.md](docs/commands/GENERATE_HTTP_EXCHANGE.md) |
268
270
  | **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 |
271
+ | **generate kafka-listener** (g kafka-listener) | Create Kafka event consumer | [📖 GENERATE_KAFKA_LISTENER.md](docs/commands/GENERATE_KAFKA_LISTENER.md) |
270
272
  | **add kafka-client** | Add Kafka dependencies to module | Coming soon |
273
+ | **add temporal-client** | Add Temporal SDK and worker infrastructure | Coming soon |
274
+ | **generate temporal-flow** (g temporal-flow) | Create Temporal workflow with Saga | [📖 GENERATE_TEMPORAL_FLOW.md](docs/commands/GENERATE_TEMPORAL_FLOW.md) |
275
+ | **generate temporal-activity** (g temporal-activity) | Create Temporal activity (Light or Heavy) | [📖 GENERATE_TEMPORAL_ACTIVITY.md](docs/commands/GENERATE_TEMPORAL_ACTIVITY.md) |
271
276
 
272
277
  ### Quick Start Example
273
278
 
274
279
  ```bash
275
280
  # 1. Create project
276
- eva4j create my-ecommerce
281
+ eva create my-ecommerce
277
282
  cd my-ecommerce
278
283
 
279
284
  # 2. Start development services
280
285
  docker-compose up -d
281
286
 
282
287
  # 3. Add modules
283
- eva4j add module product
284
- eva4j add module order
285
- eva4j add module customer
288
+ eva add module product
289
+ eva add module order
290
+ eva add module customer
286
291
 
287
292
  # 4. Generate entities from YAML
288
- eva4j g entities product
293
+ eva g entities product
289
294
 
290
295
  # 5. Run application
291
296
  ./gradlew bootRun
@@ -296,13 +301,15 @@ eva4j g entities product
296
301
  For faster development, most generate commands have short aliases:
297
302
 
298
303
  ```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
304
+ eva g entities <name> # generate entities
305
+ eva g usecase <name> # generate usecase
306
+ eva g resource <name> # generate resource
307
+ eva g record <name> # generate record
308
+ eva g http <name> # generate http-exchange
309
+ eva g kafka-event <name> # generate kafka-event
310
+ eva g kafka-listener <name> # generate kafka-listener
311
+ eva g temporal-flow <module> # generate temporal-flow
312
+ eva g temporal-activity <module># generate temporal-activity
306
313
  ```
307
314
 
308
315
  ---
@@ -314,7 +321,7 @@ eva4j g kafka-listener <name> # generate kafka-listener
314
321
  Initialize a new Spring Boot project with modular architecture.
315
322
 
316
323
  ```bash
317
- eva4j create <project-name>
324
+ eva create <project-name>
318
325
  ```
319
326
 
320
327
  Creates a production-ready Spring Boot project with:
@@ -333,7 +340,7 @@ Creates a production-ready Spring Boot project with:
333
340
  Add a domain module following hexagonal architecture.
334
341
 
335
342
  ```bash
336
- eva4j add module <module-name>
343
+ eva add module <module-name>
337
344
  ```
338
345
 
339
346
  Generates a complete module with:
@@ -352,8 +359,8 @@ Generates a complete module with:
352
359
  Generate complete domain implementation from YAML definition.
353
360
 
354
361
  ```bash
355
- eva4j generate entities <aggregate-name>
356
- eva4j g entities <aggregate-name> # Short alias
362
+ eva generate entities <aggregate-name>
363
+ eva g entities <aggregate-name> # Short alias
357
364
  ```
358
365
 
359
366
  Creates from a YAML file:
@@ -389,13 +396,13 @@ For complete documentation on all commands, see:
389
396
 
390
397
  ```bash
391
398
  # 1. Add module
392
- eva4j add module product
399
+ eva add module product
393
400
 
394
401
  # 2. Create YAML definition
395
402
  # Edit examples/product.yaml
396
403
 
397
404
  # 3. Generate entities
398
- eva4j g entities product
405
+ eva g entities product
399
406
 
400
407
  # 4. Run and test
401
408
  ./gradlew bootRun
@@ -405,19 +412,19 @@ eva4j g entities product
405
412
 
406
413
  ```bash
407
414
  # Generate additional commands
408
- eva4j g usecase UpdateProductPrice --type command
409
- eva4j g usecase DeactivateProduct --type command
415
+ eva g usecase UpdateProductPrice --type command
416
+ eva g usecase DeactivateProduct --type command
410
417
 
411
418
  # Generate custom queries
412
- eva4j g usecase SearchProductsByCategory --type query
413
- eva4j g usecase GetLowStockProducts --type query
419
+ eva g usecase SearchProductsByCategory --type query
420
+ eva g usecase GetLowStockProducts --type query
414
421
  ```
415
422
 
416
423
  ### Workflow 3: Integrate External Service
417
424
 
418
425
  ```bash
419
426
  # Create HTTP client
420
- eva4j g http PaymentGateway
427
+ eva g http PaymentGateway
421
428
 
422
429
  # Configure in application.yaml
423
430
  # Implement client methods
@@ -428,17 +435,17 @@ eva4j g http PaymentGateway
428
435
 
429
436
  ```bash
430
437
  # Publish events
431
- eva4j g kafka-event OrderCreated
438
+ eva g kafka-event OrderCreated
432
439
 
433
440
  # Consume events in another module
434
- eva4j g kafka-listener OrderCreated
441
+ eva g kafka-listener OrderCreated
435
442
  ```
436
443
 
437
444
  ### Workflow 5: Extract to Microservice
438
445
 
439
446
  ```bash
440
447
  # When module is mature and needs independence
441
- eva4j detach order
448
+ eva detach order
442
449
 
443
450
  # Result: order-service/ as standalone application
444
451
  ```
@@ -462,7 +469,7 @@ For backward compatibility, here's the old reference format:
462
469
  Install Kafka dependencies and configuration.
463
470
 
464
471
  ```bash
465
- eva4j add kafka-client
472
+ eva add kafka-client
466
473
  ```
467
474
 
468
475
  **What it does:**
@@ -484,7 +491,7 @@ spring.kafka:
484
491
 
485
492
  **Example:**
486
493
  ```bash
487
- eva4j add kafka-client
494
+ eva add kafka-client
488
495
  ```
489
496
 
490
497
  ---
@@ -494,8 +501,8 @@ eva4j add kafka-client
494
501
  Create a use case (command or query) following CQRS pattern.
495
502
 
496
503
  ```bash
497
- eva4j generate usecase <module-name> [usecase-name]
498
- eva4j g usecase <module-name> [usecase-name]
504
+ eva generate usecase <module-name> [usecase-name]
505
+ eva g usecase <module-name> [usecase-name]
499
506
  ```
500
507
 
501
508
  **Interactive Prompts:**
@@ -535,9 +542,9 @@ public record UserResponseDto(UUID id, String name, String email) {}
535
542
 
536
543
  **Examples:**
537
544
  ```bash
538
- eva4j g usecase user create-user # Command
539
- eva4j g usecase user find-user-by-id # Query
540
- eva4j g usecase product update-stock # Command
545
+ eva g usecase user create-user # Command
546
+ eva g usecase user find-user-by-id # Query
547
+ eva g usecase product update-stock # Command
541
548
  ```
542
549
 
543
550
  ---
@@ -547,8 +554,8 @@ eva4j g usecase product update-stock # Command
547
554
  Generate complete REST resource with full CRUD operations.
548
555
 
549
556
  ```bash
550
- eva4j generate resource <module-name>
551
- eva4j g resource <module-name>
557
+ eva generate resource <module-name>
558
+ eva g resource <module-name>
552
559
  ```
553
560
 
554
561
  **Interactive Prompts:**
@@ -576,8 +583,8 @@ public class UserController {
576
583
 
577
584
  **Example:**
578
585
  ```bash
579
- eva4j g resource user
580
- eva4j g resource product
586
+ eva g resource user
587
+ eva g resource product
581
588
  ```
582
589
 
583
590
  ---
@@ -587,8 +594,8 @@ eva4j g resource product
587
594
  Create HTTP client adapter using Spring Cloud OpenFeign.
588
595
 
589
596
  ```bash
590
- eva4j generate http-exchange <module-name> [port-name]
591
- eva4j g http-exchange <module-name> [port-name]
597
+ eva generate http-exchange <module-name> [port-name]
598
+ eva g http-exchange <module-name> [port-name]
592
599
  ```
593
600
 
594
601
  **Interactive Prompts:**
@@ -626,8 +633,8 @@ urls:
626
633
 
627
634
  **Example:**
628
635
  ```bash
629
- eva4j g http-exchange order product-service
630
- eva4j g http-exchange user payment-gateway
636
+ eva g http-exchange order product-service
637
+ eva g http-exchange user payment-gateway
631
638
  ```
632
639
 
633
640
  ---
@@ -637,8 +644,8 @@ eva4j g http-exchange user payment-gateway
637
644
  Create Kafka event publisher with topic configuration.
638
645
 
639
646
  ```bash
640
- eva4j generate kafka-event <module-name> [event-name]
641
- eva4j g kafka-event <module-name> [event-name]
647
+ eva generate kafka-event <module-name> [event-name]
648
+ eva g kafka-event <module-name> [event-name]
642
649
  ```
643
650
 
644
651
  **Prerequisites:** Kafka client must be installed
@@ -693,9 +700,9 @@ public class CreateUserCommandHandler {
693
700
 
694
701
  **Example:**
695
702
  ```bash
696
- eva4j g kafka-event user user-created
697
- eva4j g kafka-event order order-placed
698
- eva4j g kafka-event product stock-updated
703
+ eva g kafka-event user user-created
704
+ eva g kafka-event order order-placed
705
+ eva g kafka-event product stock-updated
699
706
  ```
700
707
 
701
708
  ---
@@ -705,8 +712,8 @@ eva4j g kafka-event product stock-updated
705
712
  Create individual Kafka event listener classes for consuming events from topics.
706
713
 
707
714
  ```bash
708
- eva4j generate kafka-listener <module-name>
709
- eva4j g kafka-listener <module-name>
715
+ eva generate kafka-listener <module-name>
716
+ eva g kafka-listener <module-name>
710
717
  ```
711
718
 
712
719
  **Prerequisites:**
@@ -749,7 +756,7 @@ public class UserUserCreatedListener {
749
756
 
750
757
  **Example:**
751
758
  ```bash
752
- eva4j g kafka-listener notification
759
+ eva g kafka-listener notification
753
760
  # Select: user-created, order-placed
754
761
  # Generates: NotificationUserCreatedListener.java, NotificationOrderPlacedListener.java
755
762
  ```
@@ -761,7 +768,7 @@ eva4j g kafka-listener notification
761
768
  Extract a module from the monolith into an independent microservice.
762
769
 
763
770
  ```bash
764
- eva4j detach [module-name]
771
+ eva detach [module-name]
765
772
  ```
766
773
 
767
774
  **Interactive Prompts:**
@@ -784,7 +791,7 @@ eva4j detach [module-name]
784
791
  **Example:**
785
792
  ```bash
786
793
  # In monolith project
787
- eva4j detach user
794
+ eva detach user
788
795
 
789
796
  # Creates: ../user_msvc/
790
797
  # Port: parent port + 1
@@ -835,7 +842,7 @@ cd product_msvc && ./gradlew bootJar
835
842
  Display project configuration and module history.
836
843
 
837
844
  ```bash
838
- eva4j info
845
+ eva info
839
846
  ```
840
847
 
841
848
  **Output Example:**
@@ -881,26 +888,26 @@ Timestamps:
881
888
 
882
889
  ```bash
883
890
  # 1. Create project
884
- eva4j create e-commerce
891
+ eva create e-commerce
885
892
  cd e-commerce
886
893
 
887
894
  # 2. Add modules
888
- eva4j add module user
889
- eva4j add module product
890
- eva4j add module order
895
+ eva add module user
896
+ eva add module product
897
+ eva add module order
891
898
 
892
899
  # 3. Generate resources
893
- eva4j g resource user
894
- eva4j g resource product
895
- eva4j g resource order
900
+ eva g resource user
901
+ eva g resource product
902
+ eva g resource order
896
903
 
897
904
  # 4. Add event-driven communication
898
- eva4j add kafka-client
899
- eva4j g kafka-event order order-placed
900
- eva4j g kafka-listener notification
905
+ eva add kafka-client
906
+ eva g kafka-event order order-placed
907
+ eva g kafka-listener notification
901
908
 
902
909
  # 5. Add external service clients
903
- eva4j g http-exchange order payment-service
910
+ eva g http-exchange order payment-service
904
911
 
905
912
  # 6. Run entire system locally
906
913
  ./gradlew bootRun
@@ -920,9 +927,9 @@ eva4j g http-exchange order payment-service
920
927
 
921
928
  ```bash
922
929
  # Extract modules to microservices
923
- eva4j detach user # Port 8041
924
- eva4j detach product # Port 8042
925
- eva4j detach order # Port 8043
930
+ eva detach user # Port 8041
931
+ eva detach product # Port 8042
932
+ eva detach order # Port 8043
926
933
 
927
934
  # Deploy independently
928
935
  cd ../user_msvc