Learning paths
Cratis covers an event store, an application framework, a UI library, and the tools around them, so the documentation is wide. A path gives you an order to read it in. Each one says who it is for, what you can do when you finish, and which pages to read or build along the way.
Paths share pages, and you can switch at any point. If none of them fits, Adopting Cratis helps you pick a starting product first.
New to event sourcing
Section titled “New to event sourcing”For developers who have built CRUD applications and want to know what changes when events become the source of truth. When you finish, you can model a small domain as facts, explain how read models are derived from them, and say where event sourcing is the wrong tool.
- Read Why event sourcing for the argument, then CRUD, EF Core, and Chronicle to map tables and
SaveChangesonto events. - Read Event modeling. It gives you the notation the rest of the docs use for commands, events, and read models.
- Build the Chronicle tutorial. It adds one concept at a time to a small library domain.
- Read Consistency and When to use event sourcing.
- Bring your first real model to Community and help. A modeling question with the business decision and the facts you already have usually gets a useful answer.
Build a full-stack app
Section titled “Build a full-stack app”For .NET developers starting a new information system with Chronicle, Arc, and Components together. When you finish, you have a running application with one slice you wrote yourself, and you know where the command, event, projection, query, and screen for a feature live.
- Follow Build a full-stack feature. It scaffolds an application from the Cratis template and adds one slice end to end.
- Read Vertical slices to see why the feature lives in one folder.
- Work through the Arc tutorial for validation, related slices, live queries, and authorization. It runs over a plain database, which keeps the focus on commands, queries, and generated proxies.
- Read Add event sourcing to an Arc slice to see what changes when a slice’s writes move to Chronicle, and what does not.
- Continue with the vertical slices scenario for the state view, automation, and translation patterns, and Testing with Cratis for specs.
- Follow Generated values, from Screenplay to running app to have the server own your ids and secrets, from the model through Stage and Arc to pinned specs.
Building on Kotlin or Java instead? The Cratis Kotlin and Cratis Java templates scaffold the same full-stack shape on Spring Boot, and the Arc tutorial shows its main slice examples in Kotlin as well as C#. Some backend snippets are C# only.
Write-side consistency
Section titled “Write-side consistency”For developers who write commands whose outcome depends on stored state: a stock level, a limit, a capacity, a document someone else may edit. When you finish, you can say why a plain read does not hold a rule, pick the mechanism that does, write a protected command, and test that it holds when two requests race. Arc read protection needs Arc 22.106.0 or later, which uses Chronicle 19.71.0 or later.
- Read Keeping decisions correct. It is the five-minute introduction: why a read model can be stale at write time, what read protection does, and which mechanism holds which rule. If you know DCB, KurrentDB, Marten or Axon, read Read this first next.
- Follow Getting started with read protection to write your first protected command and see the error the losing request gets. Using Chronicle without Arc? Start from Decision reads instead.
- Work through the scenarios from simple to advanced. Each has the rule, the code and the guard it produces.
- One entity: stock on one book.
- Unique and once: constraints, no read needed.
- Two entities: a loan limit and a course capacity.
- One stream: a monthly limit, with a per-stream read model.
- Process stream, gapless numbers, rich aggregate and editing conflict.
- Test the race to prove a rule holds. For the Chronicle client, see the Chronicle scenarios.
- Adopt it in an existing application with Adopting read protection:
Off, thenMeasure, thenOn. - Walk the whole stack in Decisions that hold, from model to frontend: one rule from a Screenplay model to an Arc command under read protection, a spec that makes the race happen, and a frontend that handles a lost race. For the idea behind it, read The Dynamic Consistency Boundary.
- Keep the reference close: Reads, Validators, Refusals, Pitfalls and the FAQ. For the mechanics, read How guards are derived and Read protection in Chronicle.
Use Chronicle from another language
Section titled “Use Chronicle from another language”For developers whose services are not written in .NET. When you finish, your service appends events to Chronicle and a projection or reactor responds to them.
- Read Chronicle in your language to see which clients are published and where each is documented.
- Start a local kernel and follow the shared loop on Chronicle getting started. Its examples have a tab for each client that implements them.
- Follow your client’s setup guide: TypeScript, Kotlin and Java, or Elixir.
- Build the Chronicle tutorial and pick your client’s tab where one exists.
The Python client is pre-release and not published yet; Event sourcing in Python tracks it.
Evaluate Cratis
Section titled “Evaluate Cratis”For architects and team leads deciding whether to adopt Cratis. When you finish, you can name the product you would start with, the first slice you would move, and the version and production questions you still need answered.
- Read Why developers choose Cratis, including when it is not a good fit.
- Read Adopting Cratis to pick an entry point for a new or existing system.
- If you are comparing event stores, read Compare event sourcing for .NET or Compare event sourcing on the JVM. Marten vs Chronicle is a head-to-head for .NET teams on PostgreSQL.
- Check the FAQ, Version compatibility, and Production readiness.
- Run one sample that matches the shape you would build.
- Ask adoption questions in Community and help, or Work with us for a dedicated review.
Operate Chronicle
Section titled “Operate Chronicle”For people who deploy and run Chronicle. When you finish, you can host Chronicle with storage and TLS you chose deliberately, find a failed partition, and plan an upgrade.
- Read Chronicle hosting and Production hosting.
- Review Chronicle configuration, including storage.
- Learn the CLI and the Workbench, then keep Chronicle troubleshooting close.
- Use Production readiness as the cross-stack checklist.
- Before each upgrade, use Plan an upgrade and What’s new. Follow Security for vulnerability reporting.
Frontend developer
Section titled “Frontend developer”For React developers joining a team that already has an Arc backend. When you finish, you can call commands and queries through generated proxies and build forms, dialogs, and live tables with Components.
- Read Understanding the proxy boundary to see where the generated TypeScript comes from and why you never edit it.
- Read Arc frontend.
- Build the Components tutorial, then use Choosing a component for new screens.
- Browse Storybook for live examples. Coming from PrimeReact? Read Coming from PrimeReact.
- Run a sample with a React frontend to see the screen and backend together.
Contributor
Section titled “Contributor”For people changing Cratis itself. When you finish, you know where a change belongs and what a pull request needs before review.
- Read Contributing and Governance.
- Find the repository that owns the behavior. Product pages are written in each product repository’s
Documentation/folder; only site-level pages such as this one live in the Documentation repository. - Use Feedback and suggestions or Discord for early ideas before opening a large proposal.
- Run the owning repository’s build, specs, and documentation checks before opening a pull request.