Go to file
Jean-Philippe Brule 697b36900b docs: standardize documentation structure
- CLAUDE.md: universal development guidelines
- README.md: project description (consistent template)
- CONTRIBUTING.md: contribution workflow
- CHANGELOG.md: version history

Co-Authored-By: Svrnty Inc. <eng@svrnty.com>
2026-03-05 05:53:27 -05:00
.claude added roadmap and plans 2025-11-08 13:29:03 -05:00
.gitea/workflows remove TestClient and update gitea workflow 2025-11-07 12:04:47 -05:00
.github ci: add release pipeline with NuGet packaging and quality gates 2026-02-27 22:01:05 -05:00
roadmap-2026 added roadmap and plans 2025-11-08 13:29:03 -05:00
Svrnty.CQRS fix: resolve nullability warnings, add CI/CD and security workflows, harden .gitignore 2026-02-27 19:28:24 -05:00
Svrnty.CQRS.Abstractions fix: resolve nullability warnings, add CI/CD and security workflows, harden .gitignore 2026-02-27 19:28:24 -05:00
Svrnty.CQRS.DynamicQuery fix: resolve nullability warnings, add CI/CD and security workflows, harden .gitignore 2026-02-27 19:28:24 -05:00
Svrnty.CQRS.DynamicQuery.Abstractions fix: resolve nullability warnings, add CI/CD and security workflows, harden .gitignore 2026-02-27 19:28:24 -05:00
Svrnty.CQRS.DynamicQuery.EntityFramework added domain events, fix IQueryalbeProvider abstraction, added support for sagas and RabbitMQ 2025-12-20 15:13:05 -05:00
Svrnty.CQRS.DynamicQuery.MinimalApi Fix MinimalApi to resolve authorization services per-request 2026-01-14 15:56:31 -05:00
Svrnty.CQRS.Events.Abstractions added domain events, fix IQueryalbeProvider abstraction, added support for sagas and RabbitMQ 2025-12-20 15:13:05 -05:00
Svrnty.CQRS.Events.RabbitMQ added domain events, fix IQueryalbeProvider abstraction, added support for sagas and RabbitMQ 2025-12-20 15:13:05 -05:00
Svrnty.CQRS.FluentValidation prepare for publishing 2025-11-07 12:02:33 -05:00
Svrnty.CQRS.Grpc chore: remove .DS_Store files, add to .gitignore, add commit authorship rule 2026-02-27 18:21:25 -05:00
Svrnty.CQRS.Grpc.Abstractions prepare for publishing 2025-11-07 12:02:33 -05:00
Svrnty.CQRS.Grpc.Generators Handle generic types in proto message name generation 2026-02-19 18:56:37 -05:00
Svrnty.CQRS.MinimalApi Revert AllowAnonymous endpoint propagation 2026-01-21 13:07:03 -05:00
Svrnty.CQRS.Notifications.Abstractions added domain events, fix IQueryalbeProvider abstraction, added support for sagas and RabbitMQ 2025-12-20 15:13:05 -05:00
Svrnty.CQRS.Notifications.Grpc added domain events, fix IQueryalbeProvider abstraction, added support for sagas and RabbitMQ 2025-12-20 15:13:05 -05:00
Svrnty.CQRS.Sagas added domain events, fix IQueryalbeProvider abstraction, added support for sagas and RabbitMQ 2025-12-20 15:13:05 -05:00
Svrnty.CQRS.Sagas.Abstractions added domain events, fix IQueryalbeProvider abstraction, added support for sagas and RabbitMQ 2025-12-20 15:13:05 -05:00
Svrnty.CQRS.Sagas.RabbitMQ added domain events, fix IQueryalbeProvider abstraction, added support for sagas and RabbitMQ 2025-12-20 15:13:05 -05:00
Svrnty.Sample add AND / OR support when filtering 2026-02-02 17:53:43 -05:00
tests/Svrnty.CQRS.Tests test: add FluentValidation tests for command and query validators 2026-02-28 17:36:34 -05:00
.editorconfig chore: add .editorconfig with standard C# conventions 2026-02-27 18:37:51 -05:00
.env.example ci: add CodeQL scanning, format check, and .env.example 2026-02-27 21:09:14 -05:00
.gitattributes Add .gitignore and .gitattributes. 2021-02-01 23:31:05 -05:00
.gitignore fix: resolve nullability warnings, add CI/CD and security workflows, harden .gitignore 2026-02-27 19:28:24 -05:00
CHANGELOG.md docs: standardize documentation structure 2026-03-05 05:53:27 -05:00
CLAUDE.md docs: standardize documentation structure 2026-03-05 05:53:27 -05:00
CONTRIBUTING.md docs: standardize documentation structure 2026-03-05 05:53:27 -05:00
icon.png prepare for publishing 2025-11-07 12:02:33 -05:00
LICENSE Create LICENSE 2021-02-01 23:55:58 -05:00
README.md docs: standardize documentation structure 2026-03-05 05:53:27 -05:00
Svrnty.CQRS.sln test: add xUnit test project for Svrnty.CQRS core library 2026-02-27 18:38:44 -05:00

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