Cratis Templates
The Cratis Stack
Start your Cratis app with the conventions already in place
Every Cratis application follows the same conventions: vertical slices, model-bound commands and queries, events as facts, read models projected from the log. The Cratis templates give you a working application with those conventions already in place — a real project you can run in minutes, not a blank folder you fill in from documentation.
Install the .NET templates once:
dotnet new install Cratis.TemplatesThe Kotlin and Java templates ship as separate packages — Cratis.Templates.Kotlin and Cratis.Templates.Java — so they do not show up in dotnet new unless you want them; the Cratis CLI installs and invokes them directly when you create a JVM project.
The templates
Section titled “The templates”The full-stack starting point: ASP.NET Core with Arc commands and queries, Chronicle event sourcing, and a React frontend with generated TypeScript proxies — wired together in vertical slices.
Cratis Kotlin ApplicationThe same full-stack application on Spring Boot, authored in Kotlin — Arc commands and queries, Chronicle event sourcing, TypeScript proxy generation through the Arc Gradle plugin, and a React frontend.
Cratis Java ApplicationThe same full-stack application on Spring Boot, authored in Java — records as commands and read models, Chronicle event sourcing, TypeScript proxy generation through the Arc Gradle plugin, and a React frontend.
Chronicle WebA minimal ASP.NET Core application connected to Chronicle — events in, projections out, no frontend. The smallest possible server-side starting point.
Chronicle ConsoleA console application that appends an event and observes it through a projection and a reactor. The shortest path to seeing Chronicle move.
Cratis AspireThe full-stack web application, composed with .NET Aspire — the same vertical slices with an orchestrated development topology.
What the templates have in common
Section titled “What the templates have in common”- Vertical slices — everything for a behavior lives in one folder: the C# command or query, the events it produces, the React component that calls it, and the generated TypeScript proxy.
- Model-bound by default — commands and queries are plain records the framework maps to HTTP routes; no controllers to write.
- Infrastructure included — a
docker-compose.ymlthat starts a local Chronicle development container (with its bundled MongoDB) and an Aspire dashboard for telemetry. - AI-ready — every template ships a
.cratis/ai.jsonwith the Cratis AI profiles, languages, and coding agent harnesses for that template. Install the Cratis CLI and runcratis ai updateto get the AI rules, skills, and harness integration in place —dotnet newprints this reminder after scaffolding. - Builds clean — the sample code compiles with zero warnings under the Cratis analyzers, so the first warning you see is your own.
Learn more
Section titled “Learn more”- Chronicle documentation — the event-sourcing database at the center of the stack.
- Arc documentation — the CQRS application framework the web templates build on.
- The Cratis AI skills teach coding agents these same conventions.