# Chronicle

<TopicHero icon="seti:db" eyebrow="Chronicle" title="Event sourcing, the productive way">
For information systems, this is the default architecture we recommend: store **every meaningful change as an immutable event** — the complete history of what happened — and turn those events into exactly the read models, reactions, and projections your application needs. Chronicle gives that event log a gRPC boundary, storage choice, Orleans-based processing, and tools you can actually operate. [Get started →](/chronicle/get-started/) · [Architecture →](/chronicle/architecture/)
</TopicHero>

## Start here

<SimpleCard title="Why event sourcing" icon="approve-check" link="/chronicle/why-event-sourcing/">
    Why we see full history as the default for information systems — audit, time-travel, many read models from one source of truth — and where the exceptions are.
  </SimpleCard>
  <SimpleCard title="Get started" icon="rocket" link="/chronicle/get-started/">
    Scaffold a project from a template and watch one event flow through a projection and a reactor — in minutes.
  </SimpleCard>
  <SimpleCard title="Choose a hosting model" icon="puzzle" link="/chronicle/get-started/choose-hosting-model/">
    Compare console, worker, ASP.NET Core, Arc, Aspire, and production-managed kernel setups.
  </SimpleCard>
  <SimpleCard title="Build the library tutorial" icon="open-book" link="/chronicle/tutorial/">
    Learn the model by building a small event-sourced system one concept at a time.
  </SimpleCard>
## Architecture wins

<SimpleCard title="gRPC at the boundary" icon="puzzle" link="/chronicle/architecture/">
    Chronicle is a client-server kernel with gRPC/protobuf contracts. The .NET client is first-class and most mature; TypeScript and Elixir clients/contracts are generated from the same protocol.
  </SimpleCard>
  <SimpleCard title="Storage agnostic" icon="seti:db" link="/chronicle/hosting/configuration/storage/">
    Run the event store over MongoDB, PostgreSQL, Microsoft SQL Server, or SQLite, with the same event model above it.
  </SimpleCard>
  <SimpleCard title="Built on Orleans" icon="rocket" link="/chronicle/architecture/">
    The kernel uses .NET Orleans for distributed, stateful processing: event sequences, observers, jobs, reminders, and recovery all live inside the runtime.
  </SimpleCard>
  <SimpleCard title="Observable and operable" icon="approve-check" link="/cli/chronicle/">
    Workbench, CLI, OpenTelemetry, recommendations, read-model inspection, failed partitions, jobs, and replay make the running store visible.
  </SimpleCard>
## Understand the model

<SimpleCard title="Architecture" icon="puzzle" link="/chronicle/architecture/">
    How the kernel, client, storage, and read models fit together.
  </SimpleCard>
  <SimpleCard title="Concepts & glossary" icon="open-book" link="/chronicle/concepts/">
    Events, event sources, projections, and the rest of the vocabulary — defined once.
  </SimpleCard>
  <SimpleCard title="CRUD, EF Core, and Chronicle" icon="right-arrow" link="/chronicle/coming-from-crud/">
    Maps tables, rows, and `SaveChanges` onto events so the shift makes sense.
  </SimpleCard>
## Build with the core pieces

<SimpleCard title="Events" icon="approve-check" link="/chronicle/events/">
    The immutable facts at the heart of everything — how to model and append them.
  </SimpleCard>
  <SimpleCard title="Projections" icon="seti:db" link="/chronicle/projections/">
    Declare read models that stay in sync as events arrive — no update code.
  </SimpleCard>
  <SimpleCard title="Choose a read-model style" icon="list-format" link="/chronicle/projections/choosing-a-read-model-style/">
    See model-bound projections, declarative projections, and reducers build the same read model.
  </SimpleCard>
  <SimpleCard title="Reactors" icon="rocket" link="/chronicle/reactors/">
    Do something when an event happens — notify, integrate, or trigger a command.
  </SimpleCard>
  <SimpleCard title="Read models" icon="laptop" link="/chronicle/read-models/">
    The queryable state your application reads, derived from the event log.
  </SimpleCard>
  <SimpleCard title="Reducers" icon="seti:folder" link="/chronicle/reducers/">
    Fold events into state imperatively when a projection isn't enough.
  </SimpleCard>
  <SimpleCard title="Scenarios" icon="heart" link="/chronicle/scenarios/">
    Task-oriented recipes — rebuild a read model, enforce uniqueness, react to an event.
  </SimpleCard>
Chronicle stands on its own — run it from any .NET host, with no other Cratis product required. When you want a typed full-stack app on top, [Arc](/arc/) adds the CQRS boundary and [Components](/components/) renders it. CQRS and event sourcing fit naturally together, but neither depends on the other. See [Why developers choose Cratis](/why-cratis/) for how the pieces fit.