Domain Model as a Service
A reactive CQRS and Event Sourcing framework for explicit, testable, and traceable domain decisions.
Domain-Driven · Event-Driven · Test-Driven · Declarative · Reactive
Wow turns each write into an observable domain flow:
HTTP command → aggregate decision → domain event → sourced state → projection / saga
You define commands, events, aggregate rules, and sourcing handlers. Wow supplies the reactive command pipeline, event persistence, snapshots, wait stages, projections, sagas, generated metadata, WebFlux routes, and a Given → When → Expect test DSL.
This is most useful when business rules, state history, multiple read models, or cross-aggregate workflows justify Event Sourcing. For simple CRUD where one database transaction already expresses the whole problem, the added event-evolution and eventual-consistency costs may not pay off.
- Create or clone the Wow Project Template.
- Run
./gradlew :domain:check, then start./gradlew :server:runwith the documented in-memory configuration. - Follow Getting Started to send a real
CreateDemocommand, wait forSNAPSHOT, and read state at aggregate version1.
That path proves the domain test, generated route, command pipeline, event sourcing, snapshot wait, and versioned state read. The 30-minute duration is a target: the functional path has been exercised, but a first-time developer's wall-clock completion has not been measured. If you are adding Wow to an existing service, use Add Wow to an Existing Project.
| Capability | What to inspect |
|---|---|
| Aggregate decisions and event-sourced state | Order and cart example and its domain specifications |
| Command dispatch, event persistence, projections, and sagas | wow-core |
| Given → When → Expect verification | wow-test |
| Generated HTTP command and state routes | wow-webflux |
| Optional storage, messaging, security, and telemetry integrations | wow-spring-boot-starter feature capabilities |
| Compensation and recovery operations | Compensation domain and control plane |
The current source tree declares:
| Component | Baseline |
|---|---|
| Wow | 9.0.10 |
| Java | 17+ |
| Spring Boot | 4.1.1 |
| Kotlin | 2.4.10 |
| KSP | 2.3.11 |
The project template evolves independently. The tutorial records the exact template commit and its pinned Wow version; inspect its gradle/libs.versions.toml before starting. For another framework line, pin the exact release and inspect that tag: for example, v6.20.16 declares Wow 6.20.16 and Spring Boot 3.5.11.
Source, binary, and wire compatibility are separate concerns. Validate the one your upgrade requires, especially persisted events and generated HTTP contracts.
- Start with the Introduction, Core Concepts, and documentation map.
- Read the Kotlin Order Service or Java Bank Transfer example.
- Explore processing stages in Command Completion, read models in Projection, and recovery in Event Compensation.
- Review Contributing, the Code of Conduct, and the Security Policy.
- Wow received the KaiCode’26 Excellent Award for evidence including its modular design, review discipline, testing, static analysis, bilingual documentation, and Maven Central release history.
Related projects: CosId, CoSec, CoCache, Simba, CoSky, CoApi, and FluentAssert.
Wow is released under the Apache 2.0 License.
