CCC is an example application for illustrating Command Context Consistency (CCC).
It implements a very basic version of the ideas behind the Calinga system: tenants, projects, translation keys, and related write-side business rules.
The repository is not intended to be a generic content management system. Its main purpose is to explore and demonstrate an event-sourced write model based on minimal command-specific context slices and conditional appends.
backend/- ASP.NET Core backend with the event-sourced write model and APIfrontend/- React frontend for exploring and exercising the sample applicationpresentation/- standalone React/RevealJS slide deck used to explain CCC in this repositorydocs/architecture/- architecture decision records for the main technical choices
dotnet build backend/CCC.sln
dotnet run --project backend/CCC/CCC.csprojSwagger UI is available at http://localhost:5039/swagger in development.
cd frontend
npm install
npm run devUI is available at http://localhost:5173. Requires the backend to be running.
cd presentation
npm install
npm run devThe browser-hosted presentation runs on Vite's default dev port unless that port is already in use.
| Document | Description |
|---|---|
| ADR-001: Use Architecture Decision Records | Establishes the ADR format and file naming convention used in this project |
| ADR-002: Event Sourcing with Command-Context-Consistency | Defines the core architectural model used in this example |
| ADR-003: PostgreSQL as Event Log Database | Explains why PostgreSQL is used as the append-only event log |
| ADR-004: Dapper as Event Log Data Access Library | Explains why the event store uses Dapper and explicit SQL |
| ADR-005: No CRUD Terminology in Requests, Commands, and Events | Defines the naming convention for commands, requests, and events |