Skip to content

Concepts

This area contains explanations and guidance on the concepts in Cratis.

TopicDescription
EventWhat constitutes an event
Event TypeWhat is an event type
Modeling events wellHow to design events that are clear today and still make sense in five years
Event Type MigrationsHow event schemas evolve without breaking existing events
Event SourceWhat is an event source
SubjectThe identity an event is about — used to key compliance concerns
Event StoreWhere your events live — durably persisted in a database
NamespacesWhat are namespaces within an event store
Event SequenceWhat is an event sequence
ObserverWhat is an observer
Projections, reducers, and reactorsThe three observer patterns side by side — deriving state from events vs causing side effects
ProjectionHow a projection declaratively maps events onto a read model instance
Designing read modelsSpecialize each read model for the query it serves, not for reuse
Deep dive: consistencyImmediate vs eventual consistency, and how to choose
ConstraintsWhat are constraints
Event Metadata TagsMetadata tags attached to events
TaggingHow to tag events for organization and filtering
Tagging ReactorsHow to use tags with reactors
Geospatial TypesBuilt-in geospatial types for events and read models
When to use event sourcingAn honest look at where event sourcing pays off — and where it doesn’t
GlossaryOne definition for each core Chronicle term

One nuance worth carrying with you: projections and reducers are not only factories for materialized, queryable views. The state they derive from events can be stored in a database for fast queries — or computed on demand, with strong consistency, for anything that must trust the current state: validation rules, command handlers, or aggregate roots in Arc.