@eventmodelers/cli 1.0.17 → 1.0.19

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eventmodelers/cli",
3
- "version": "1.0.17",
3
+ "version": "1.0.19",
4
4
  "description": "Eventmodelers CLI — real-time Claude agent + skills for Claude Code, for any stack (Node, Supabase, Axon, Cratis, or modeling-only)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -4,7 +4,7 @@
4
4
  <modelVersion>4.0.0</modelVersion>
5
5
  <groupId>io.axoniq.quickstart</groupId>
6
6
  <artifactId>quickstart</artifactId>
7
- <name>Axoniq Platform Quickstart</name>
7
+ <name>Axoniq Quickstart</name>
8
8
  <version>0.0.1-SNAPSHOT</version>
9
9
 
10
10
  <properties>
@@ -20,6 +20,8 @@
20
20
  <artifactId>spring-boot-starter-webflux</artifactId>
21
21
  </dependency>
22
22
 
23
+
24
+
23
25
  <!-- Read model persistence: Spring Data JPA + PostgreSQL, default for all projections -->
24
26
  <dependency>
25
27
  <groupId>org.springframework.boot</groupId>
@@ -43,6 +45,14 @@
43
45
  <artifactId>axoniq-platform-spring-boot-starter</artifactId>
44
46
  </dependency>
45
47
 
48
+ <!-- Auto-starts docker-compose.yml services (e.g. postgres) on app run -->
49
+ <dependency>
50
+ <groupId>org.springframework.boot</groupId>
51
+ <artifactId>spring-boot-docker-compose</artifactId>
52
+ <scope>runtime</scope>
53
+ <optional>true</optional>
54
+ </dependency>
55
+
46
56
  <!-- Testing -->
47
57
  <dependency>
48
58
  <groupId>org.springframework.boot</groupId>
@@ -1,6 +1,5 @@
1
1
  package io.axoniq.quickstart;
2
2
 
3
- import io.axoniq.quickstart.giftcard.domain.GiftCard;
4
3
  import org.axonframework.messaging.eventhandling.processing.streaming.token.store.TokenStore;
5
4
  import org.axonframework.messaging.eventhandling.processing.streaming.token.store.inmemory.InMemoryTokenStore;
6
5
  import org.springframework.boot.SpringApplication;
@@ -8,115 +7,10 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
8
7
  import org.springframework.context.annotation.Bean;
9
8
  import org.springframework.scheduling.annotation.EnableScheduling;
10
9
 
11
- /**
12
- * Main entry point for the Axoniq Platform Quickstart application.
13
- *
14
- * <p>This Spring Boot application demonstrates a complete CQRS/Event Sourcing implementation
15
- * using Axon Framework and Axon Server, showcasing best practices for building reactive,
16
- * scalable applications with event-driven architecture.</p>
17
- *
18
- * <p><strong>Architecture Overview:</strong></p>
19
- * <ul>
20
- * <li><strong>CQRS Implementation</strong>: Separates command and query responsibilities</li>
21
- * <li><strong>Event Sourcing</strong>: Stores state changes as immutable events</li>
22
- * <li><strong>Reactive Web Stack</strong>: Uses Spring WebFlux for non-blocking I/O</li>
23
- * <li><strong>Real-time Updates</strong>: Implements Server-Sent Events for live UI updates</li>
24
- * <li><strong>In-Memory Projections</strong>: Fast query performance with eventual consistency</li>
25
- * </ul>
26
- *
27
- * <p><strong>Key Components Enabled:</strong></p>
28
- * <ul>
29
- * <li><strong>{@code @SpringBootApplication}</strong>: Enables auto-configuration, component scanning, and configuration properties</li>
30
- * <li><strong>{@code @EnableScheduling}</strong>: Activates scheduled task execution for the {@link io.axoniq.quickstart.giftcard.scheduler.GiftCardScheduler}</li>
31
- * </ul>
32
- *
33
- * <p><strong>Domain Model:</strong></p>
34
- * <p>The application centers around a Gift Card domain implementing:</p>
35
- * <ul>
36
- * <li><strong>EventSourced DCB Model</strong>: {@link GiftCard} - Core business logic and state</li>
37
- * <li><strong>Commands</strong>: Issue and redeem operations with business validation</li>
38
- * <li><strong>Events</strong>: Immutable facts about gift card lifecycle changes</li>
39
- * <li><strong>Queries</strong>: Read operations with subscription query support</li>
40
- * <li><strong>Projections</strong>: Denormalized read models for efficient querying</li>
41
- * </ul>
42
- *
43
- * <p><strong>Technical Stack:</strong></p>
44
- * <ul>
45
- * <li><strong>Axon Framework</strong>: CQRS/Event Sourcing framework</li>
46
- * <li><strong>Axon Server</strong>: Event store and message routing infrastructure</li>
47
- * <li><strong>Spring WebFlux</strong>: Reactive web framework with non-blocking I/O</li>
48
- * <li><strong>Vue.js 3</strong>: Frontend framework with Vuetify UI components</li>
49
- * <li><strong>Server-Sent Events</strong>: Real-time updates without WebSocket complexity</li>
50
- * </ul>
51
- *
52
- * <p><strong>Educational Value:</strong></p>
53
- * <p>This quickstart serves as a practical learning resource demonstrating:</p>
54
- * <ul>
55
- * <li>Event Sourcing patterns and practices</li>
56
- * <li>CQRS implementation with separate read/write models</li>
57
- * <li>Real-time web applications with reactive streams</li>
58
- * <li>Integration between Axon Framework and Spring Boot</li>
59
- * <li>Modern UI development with real-time data updates</li>
60
- * </ul>
61
- *
62
- * <p><strong>Production Readiness Notes:</strong></p>
63
- * <p>While this quickstart demonstrates core patterns, production deployments should consider:</p>
64
- * <ul>
65
- * <li>Persistent event store configuration (vs. in-memory)</li>
66
- * <li>Distributed deployment strategies</li>
67
- * <li>Monitoring and observability integration</li>
68
- * <li>Security implementation (authentication, authorization)</li>
69
- * <li>Error handling and retry mechanisms</li>
70
- * <li>Performance tuning and resource optimization</li>
71
- * </ul>
72
- *
73
- * <p><strong>Getting Started:</strong></p>
74
- * <ol>
75
- * <li>Ensure Axon Server is running on localhost:8124</li>
76
- * <li>Run this application using Spring Boot</li>
77
- * <li>Access the web interface at http://localhost:8080</li>
78
- * <li>Observe real-time gift card operations via the scheduler</li>
79
- * <li>Interact with the API endpoints at /api/giftcards</li>
80
- * </ol>
81
- *
82
- * @see GiftCard
83
- * @see io.axoniq.quickstart.giftcard.web.GiftCardController
84
- * @see io.axoniq.quickstart.giftcard.query.GiftCardProjection
85
- * @see io.axoniq.quickstart.giftcard.scheduler.GiftCardScheduler
86
- * @see <a href="https://docs.axoniq.io/reference-guide/">Axon Framework Reference Guide</a>
87
- *
88
- * @author AxonIQ Quickstart
89
- * @version 1.0
90
- * @since 1.0
91
- */
92
10
  @SpringBootApplication
93
11
  @EnableScheduling
94
12
  public class QuickstartApplication {
95
13
 
96
- /**
97
- * Application entry point that starts the Spring Boot application.
98
- *
99
- * <p>This method bootstraps the entire application context, including:</p>
100
- * <ul>
101
- * <li>Axon Framework auto-configuration</li>
102
- * <li>Spring WebFlux reactive web server</li>
103
- * <li>Component scanning and dependency injection</li>
104
- * <li>Scheduled task initialization</li>
105
- * <li>Static resource serving configuration</li>
106
- * </ul>
107
- *
108
- * <p><strong>Startup sequence:</strong></p>
109
- * <ol>
110
- * <li>Spring Boot application context initialization</li>
111
- * <li>Axon Server connection establishment</li>
112
- * <li>Event store and command/query bus configuration</li>
113
- * <li>EventSourced DCB model and projection registration</li>
114
- * <li>Web server startup on port 8080</li>
115
- * <li>Scheduler activation for demo operations</li>
116
- * </ol>
117
- *
118
- * @param args command line arguments passed to the application
119
- */
120
14
  public static void main(String[] args) {
121
15
  SpringApplication.run(QuickstartApplication.class, args);
122
16
  }
@@ -1,2 +1,8 @@
1
1
  spring.application.name=Platform QuickStart
2
- axoniq.platform.credentials=${AXONIQ_PLATFORM_CREDENTIALS}
2
+
3
+ spring.datasource.url=jdbc:postgresql://localhost:5432/quickstart
4
+ spring.datasource.username=quickstart
5
+ spring.datasource.password=quickstart
6
+
7
+ spring.docker.compose.enabled=true
8
+ spring.docker.compose.file=docker-compose.yml