Start here
What is Relay?
A DDD / CQRS / event-sourcing framework for .NET 10 — the batteries-included choice for services with real domain behavior.
Relay (Nuvora.Nexus.Relay) is a DDD / CQRS / event-sourcing framework for
.NET 10, PostgreSQL-native, built around an in-process mediator with a
transactional pipeline. It’s the kind of batteries-included backend framework you
reach for when a service has real domain behavior — orders, payments, ledgers,
bookings — rather than plain CRUD.
The core mental model
Every operation is an immutable message: a command (changes state) or a
query (reads state), handed to a bus. The bus finds the single
handler for that message and runs it through a pipeline of cross-cutting
behaviors — authorization → validation → logging → transaction. One call,
AddRelay(assembly), scans your assembly at startup and auto-registers every
handler, validator, and behavior. You never register handlers by hand.
Fail-closed by default. Every command and query must declare an authorization posture. An undecorated message defaults to require authentication, and the host refuses to start if authorization is unresolved. Genuinely public endpoints are marked
[AllowAnonymous]— deliberately, visibly.
What ships in the box
Around the mediator core, Relay layers everything a production service ends up needing anyway:
- a durable, append-only event store with snapshots, upcasters and time-travel reads
- asynchronous projections (read models) with checkpoints, sharding and blue/green rebuilds
- reliable messaging via outbox/inbox and eight pluggable broker transports
- sagas, state machines and routing slips for long-running workflows
- a durable scheduler for delayed commands and recurring jobs
- first-class multi-tenancy, declarative authorization, query caching
- observability (OpenTelemetry), resiliency (retries, circuit breakers, limiters), and distributed coordination (locks, leader election, partitioning)
- Relay Watch — a live management control plane with a React dashboard
- source generators and analyzers that catch missing or duplicate handlers at compile time
Where to go next
- The quickstart gets you from
dotnet newto a running Relay service. - Core concepts explains messages, handlers, behaviors and the pipeline in depth.
- The articles are 37 numbered tutorials — one per capability, each with a runnable, test-backed sample.
- The stories are the why: thirty short narratives about the problems this framework exists to prevent.