Appearance
Build rich domain models and event-sourced systems in Laravel β without friction.
Unit of Work that tracks aggregates & persists changes atomically.
Pluggable backend, optimistic locking, generator-based streams.
Load all, chunked, or streaming β pick per aggregate.
Strongly-typed UUID IDs with readable stream names (e.g. document-).
Human-readable names with backward compatibility.
Local, inline, and publishable events.
Evolve event schemas safely over time.
Always, cadence, or on-demand policies with pluggable store.
Slice streams by stream seq, global seq, or time for partial loads and replays.
Build read models fed from event streams; safe to rebuild with replay.
Per-context wiring for commands, queries, events, upcasters & aggregate IDs.
Patterns and helpers for testing aggregates, sessions, and projections.
Event-sourced or state-based per aggregate.
Only projectors run during replays to rebuild read models.
Reliable event delivery with retries & partitioning.
CLI with leasing, live stats UI & JSON mode.
Dispatch commands, ask queries; keep orchestration simple.
Read/write separation with projectors and a fast query side.
Default JSON serializer, swap or implement your own.
Pluggable cipher, perβevent overrides.
Browse event streams, inspect payloads, and timeβtravel aggregate state.
How pieces fit together and how to configure them.
Prometheus metrics for event store, outbox, commands, queries and workers.