- CLAUDE.md: repo-specific tech stack, commands, deps (points to root) - LICENSE: MIT 2026 svrnty (standardized) - CONTRIBUTING.md: unified workflow, correct co-author email - SECURITY.md: unified vulnerability reporting policy - CHANGELOG.md: Keep a Changelog template (if new) - lefthook.yml: added doc-hygiene hook, improved bootstrap Co-Authored-By: Svrnty Inc. <jp@svrnty.io> |
||
|---|---|---|
| .claude | ||
| .gitea/workflows | ||
| .github | ||
| roadmap-2026 | ||
| Svrnty.CQRS | ||
| Svrnty.CQRS.Abstractions | ||
| Svrnty.CQRS.DynamicQuery | ||
| Svrnty.CQRS.DynamicQuery.Abstractions | ||
| Svrnty.CQRS.DynamicQuery.EntityFramework | ||
| Svrnty.CQRS.DynamicQuery.MinimalApi | ||
| Svrnty.CQRS.Events.Abstractions | ||
| Svrnty.CQRS.Events.RabbitMQ | ||
| Svrnty.CQRS.FluentValidation | ||
| Svrnty.CQRS.Grpc | ||
| Svrnty.CQRS.Grpc.Abstractions | ||
| Svrnty.CQRS.Grpc.Generators | ||
| Svrnty.CQRS.MinimalApi | ||
| Svrnty.CQRS.Notifications.Abstractions | ||
| Svrnty.CQRS.Notifications.Grpc | ||
| Svrnty.CQRS.Sagas | ||
| Svrnty.CQRS.Sagas.Abstractions | ||
| Svrnty.CQRS.Sagas.RabbitMQ | ||
| Svrnty.Sample | ||
| tests/Svrnty.CQRS.Tests | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| CONTRIBUTING.md | ||
| icon.png | ||
| lefthook.yml | ||
| LICENSE | ||
| README.md | ||
| SECURITY.md | ||
| Svrnty.CQRS.sln | ||
Svrnty.CQRS
Modern CQRS framework for .NET with gRPC source generation and HTTP Minimal API support.
Where This Fits
Layer: libs Depends on: Nothing (standalone .NET framework) Depended on by: a-gent-app (backend services), flutter-cqrs-datasource (client) Git: git.openharbor.io/svrnty/dotnet-cqrs.git
Tech Stack
- Language: C# 14 / .NET 10
- Framework: ASP.NET Core Minimal API, gRPC
- Key Dependencies: FluentValidation 11.x, Grpc.AspNetCore, PoweredSoft.DynamicQuery
Quick Start
# Build
dotnet build
# Run
dotnet run --project Svrnty.Sample
# Test
dotnet test
Architecture
10 NuGet packages organized by concern:
- Abstractions: Core interfaces (ICommandHandler, IQueryHandler)
- Core: Discovery, registration, handler execution
- MinimalApi: HTTP endpoint mapping with RFC 7807 validation
- Grpc: gRPC service support with Google Rich Error Model
- Grpc.Generators: Source generator for .proto files and service implementations
- DynamicQuery: PoweredSoft integration for filtering, sorting, paging
- FluentValidation: Validator registration helpers
Configuration
// Register handlers
builder.Services.AddCommand<CreateUserCommand, int, CreateUserCommandHandler>();
builder.Services.AddQuery<GetUserQuery, User, GetUserQueryHandler>();
// Configure CQRS with gRPC + HTTP
builder.Services.AddSvrntyCqrs(cqrs =>
{
cqrs.AddGrpc(grpc => grpc.EnableReflection());
cqrs.AddMinimalApi();
});
app.UseSvrntyCqrs();
Contributing
See CLAUDE.md for development guidelines.
License
MIT OR Apache-2.0