Skip to content

Event Sourcing Handbook

Every write in Kumiko is stored as an event — an immutable record of what happened. Your tables are derived from those events and can be rebuilt from them at any time. That single design decision is why audit trails, time travel, undo and realtime come for free.

The good news: you don’t need to know any of that to ship. This handbook is a four-level path — each level is fully productive on its own, and you only climb when your app actually needs the next power.

LevelYou learnYou need it when
1 — CRUD, no jargonr.crud — one call, full CRUDAlways. This is the default way to ship an entity.
2 — Events & projectionsYour own domain events and read modelsYour domain has verbs beyond create/update/delete (“approve”, “pay”).
3 — EvolutionUpcasters, snapshots, time travelYour event shapes change, or aggregates grow long histories.
4 — Scale & operationsCross-aggregate read models, rebuilds, opsYou aggregate across entities, or you run this in production.

Every code block in this handbook is embedded from a tested, runnable recipe — the same files that run in CI: basic-entity and event-sourcing.

Prefer concepts over a guided path? Read How events work — the same model, explained top-down.