CQRS & Event Sourcing for PHP

Dynamic consistency boundaries

Define which events matter for each decision. No fixed aggregates; just queries that fetch exactly what you need.

Framework agnostic

Works with any PHP framework or runs standalone. Use it with Laravel, Symfony, Slim, or your own custom setup.

Built-in persistence

PDO-compatible adapters for storing events and projections are included. Supports MySQL and SQLite out of the box.

Optimistic concurrency control

Prevent race conditions with built-in version checking that detects concurrent modifications.

Extensible through middleware

Add logging, validation, transactions, or any cross-cutting concern by wrapping core operations with middleware.

BDD-style testing

Write expressive tests using the Scenario component with given-when-then syntax that reads like specifications.