Define rich, type-safe domain model

Once, for all tiers and platforms. Don't mess with Json. DRY.

Define domain model
Focus on the business logic

Focus on the business logic

... rather than “plumbing”. A Command will be delivered to only one Aggregate. Projections will get all Events they need. ProcessManagers will cover more complex scenarios. Storage, message delivery, and other environment matters are isolated from the main code.

Clear work separation

Thanks to CQRS, more experienced developers can work on the core domain. The read–side and UI are created by the rest of the team. People don't add new database indexes or fields to core data because of UI needs.

Clear work separation
Start quickly

Start quickly

In-memory and JDBC-based storage implementations allow to implement and test the core logic quickly. Adopt your application to selected deployment environment(s) with a few lines of code, added in one place.

Evolve your business model

Add and remove fields while keeping binary compatibility with older code; handle new opportunities with oneof, natively provided by Protobuf. Build new Projections on the whole event history of the system.

Evolve your domain model
Scale

Scale with micro-services

CQRS architecture allows to scale read- and write- sides independently. When further scaling is needed, Event-Driven Architecture allows to further separate and scale heavily loaded parts.

Use freely

Permissive Apache License allows using the framework in closed-source projects. You are welcome to contribute to improving the framework.

Open Source

Want to learn more?

Get started by learning concepts and exploring example applications.