Arc
Arc
Full-stack CQRS, typed to the browser
Turn commands and queries into a full-stack CQRS application with generated TypeScript proxies that keep React in lockstep with your C#: no hand-written API client, no DTO duplication. Arc pairs naturally with Chronicle’s event sourcing, and can also run over MongoDB or EF Core when a slice is deliberately current-state only. Build your first slice → · Why Arc? →
Start here
Section titled “Start here”Build a backend slice end to end: a command with Handle(), the read model it writes, and the live query that serves it.
Consume the generated proxies from React — a typed query and a command, with the client model generated from C#.
MediatR, MVC, and ArcMaps controllers, handlers, and DTOs onto Arc’s command/query model so the shift is short.
Explore Arc
Section titled “Explore Arc”The plumbing Arc removes, and why CQRS plus proxy generation keeps a full-stack app honest.
Vertical slicesWhy everything for one feature — backend and frontend — lives in a single folder.
CQRS without event sourcingUse Arc on its own over MongoDB or EF Core when you want the CQRS boundary without an event log.
Integrate with ChronicleAdd Chronicle when a slice needs events, projections, reducers, reactors, history, or aggregate roots.
BackendCommands, queries, validation, identity, tenancy, persistence, and proxy generation.
FrontendReact integration, command forms, observable queries, and the optional MVVM approach.
Build a full-stack featureOne slice from command to React screen, with full-stack type safety throughout.
TroubleshootingAnswers to the questions that come up most when wiring Arc together.
Arc feeds Components and gives the application its CQRS boundary. In the full Cratis loop it sits on top of Chronicle through the Chronicle integration; for bounded current-state slices it can also run over MongoDB or EF Core. See Why developers choose Cratis for how the pieces fit.