Learning path | FCQRS
Links
License
Release<br>Notes
Source<br>Repository
Overview
Overview
Learn FCQRS
0. Quickstart
1. The aggregate
2. Wiring and running it
3. Adding a saga
4. Testing and evolution
5. Preparing for production
Understand
CQRS and event sourcing
Aggregates and the write side
The read side
Correlation IDs and read-your-writes
Sagas
Deferring, snapshots, and passivation
Consistency and recovery
C# interop and serialization
Apply
Define an aggregate
Add a projection
Read your writes
Write a saga
Test your domain
Evolve persisted events
Rebuild a read model
Dispatch a best-effort async effect
Configure the database
Observe your system
Use FCQRS from C#
Reference
Configuration
API Reference
All Namespaces
Learn FCQRS: one path from zero to production
This is the beginner path. Stay inside these numbered pages on the first pass. Each stage introduces<br>the vocabulary and reasoning it needs, builds on the previous stage, and ends with one clear next<br>step. You do not need to open a concept page or how-to guide to complete the course.
The course builds one document application. Documents can be created and edited. Publishing requires<br>a unique URL slug, so the application eventually adds a second aggregate and a resumable saga. The<br>domain is intentionally small so state, events, projection progress, retries, and recovery remain<br>visible.
0. See one complete request<br>1. Model one decision<br>2. Persist, project, and query<br>3. Coordinate two owners<br>4. Prove replay and compatibility<br>5. Prepare the system for failure
Follow the stages in order
Stage
Question answered
What you build
0. Quickstart
What does one FCQRS request do end to end?
One command, stored event, projection, and query
1. The aggregate
Where does a business decision live?
Validated values, command, event, decide, and fold
2. Wiring and running it
How does durable state become query data?
SQLite journal, actor runtime, projection, and read-your-writes
3. Adding a saga
How do independent owners coordinate safely?
Slug aggregate and resumable publication workflow
4. Testing and evolution
How can this system change without breaking history?
Decision, replay, retry, and compatibility tests
5. Preparing for production
What must survive or become visible in production?
Storage, recovery, diagnostics, backup, and deployment checklist
Start at stage 0 even if you know CQRS. It gives the names used throughout the rest of the course. If<br>you already ran one of the repository samples, stage 0 will be a short review.
What you need
The .NET 10 SDK . dotnet --version should print 10.*.
A scratch project for the executable course:
dotnet new console -lang F# -n DocStore<br>cd DocStore<br>dotnet add package FCQRS
dotnet new console -n DocStore<br>cd DocStore<br>dotnet add package FCQRS
Run the project at any point with dotnet run. Chapter 2 creates tutorial.db, which contains the<br>event journal and snapshots. Delete tutorial.db* only when you intentionally want to discard that<br>history and begin again.
Every teaching block has an adjacent F# and C# tab. The executable F# is checked during the docs build.<br>The fuller C# examples use preview discriminated unions; the stable .NET 10<br>C# sample uses ordinary<br>concrete message types. The course explains the architectural model identically in both languages.
Use the other sections after the course introduces a topic
Understand explains guarantees and failure boundaries in greater depth. These pages are optional<br>during the first pass.
Apply contains short task recipes for work in your own application. Use it after the matching<br>course stage.
Reference lists configuration keys and API details. Consult it when choosing exact options.
This separation is deliberate: the learning path teaches in dependency order; the other sections help<br>you deepen or reuse something you have already encountered.
Continue to 0. Quickstart.
On this page
Learn FCQRS: one path from zero to production
Follow the stages in order
What you need
Use the other sections after the course introduces a topic
Type something to start searching.