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

... 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.

Focus on the business logic

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

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.

Start quickly

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 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.

Scale

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.