Simple · Object-Oriented · Domain-Driven · Architecture
Enterprise DDD and CQRS for Spring Boot.
Made simple, on purpose.
A clean four-layer architecture, CQRS, and event-driven design — in one starter. Generate a project and ship.
SODA is not another framework. It's a way of building Spring Boot software that stays legible as it grows.
Low ceremony, low learning curve. The DDD pieces you need — nothing you don't.
Encapsulation and clear ownership. Models are modeled the OO way.
The domain comes first: aggregates, entities, domain events, ubiquitous language.
Four layers with strict boundaries — so every file has exactly one home.
Commands and queries speak different languages — on purpose. Write-side rules stay in the domain; reads stay fast.
Clear boundaries — so you can let AI write freely
Dependency direction is fixed, and every change has exactly one home. Code AI adds lands in the layer it belongs in — nowhere to stray.
Every generated project ships with a CLAUDE.md — layer duties, naming conventions, the full checklist for adding an endpoint. AI reads it once and knows the drill.
Say “add an order query endpoint” and AI produces the Query, Handler, Repository and Assembler — right files, right names, right places.
## Scenario A · add a read-only endpoint Step 1 domain model + repository 1 XxxDetail.java domain/{domain}/ 2 XxxData.java domain/{domain}/ 3 ListXxxQuery.java application/cqrs/command/query/ 4 XxxReadRepository.java infrastructure/repository/{domain}/ Step 2 API layer 5 XxxVO.java application/{domain}/model/vo/ 6 XxxAssembler.java infrastructure/assembler/ 7 ListXxxQueryHandler.java application/cqrs/handler/query/ 8 XxxAppService + Impl application/{domain}/service/
You just say what you want.
Generated for you on day one — and enforced ever after.
DDD and CQRS without the academic overhead. New contributors productive in days.
Read models tuned for query speed, write models keep the business rules — CQRS lets each side do its own job.
Sensible persistence patterns. No event-store tax unless you opt in.
Clear data paths and one home per class. When it breaks, you know where to look.
| soda | Axon | |
|---|---|---|
| Learning curve | ● simple | ●● moderate |
| Event sourcing | extensible | full support |
| Storage efficiency | ● efficient | ●● needs care |
| Query performance | ● fast | ●● needs care |
| Debugging | ● straightforward | ●● moderate |
| AI-assisted development | ● CLAUDE.md built in | ○ none |
Pick a template on the generator — single module or cloud-ready multi-module.
mvn package — H2 in-memory by default, zero external deps.
Boot it, hit the sample API — the four layers are already wired.
$ mvn package $ java -jar target/my-soda-project.jar … $ curl localhost:8080/check ok
Generate it in the browser. Own the code forever.