# Package Index > Complete reference for all 18 NuGet packages in the Svrnty.CQRS framework. ## Overview | # | Package | Path | NuGet Package | |---|---------|------|:---:| | 1 | [Svrnty.CQRS.Abstractions](#1-svrntycqrsabstractions) | `Svrnty.CQRS.Abstractions/` | Yes | | 2 | [Svrnty.CQRS](#2-svrntycqrs) | `Svrnty.CQRS/` | Yes | | 3 | [Svrnty.CQRS.MinimalApi](#3-svrntycqrsminimalapi) | `Svrnty.CQRS.MinimalApi/` | Yes | | 4 | [Svrnty.CQRS.Grpc](#4-svrntycqrsgrpc) | `Svrnty.CQRS.Grpc/` | Yes | | 5 | [Svrnty.CQRS.Grpc.Abstractions](#5-svrntycqrsgrpcabstractions) | `Svrnty.CQRS.Grpc.Abstractions/` | Yes | | 6 | [Svrnty.CQRS.Grpc.Generators](#6-svrntycqrsgrpcgenerators) | `Svrnty.CQRS.Grpc.Generators/` | Yes | | 7 | [Svrnty.CQRS.FluentValidation](#7-svrntycqrsfluentvalidation) | `Svrnty.CQRS.FluentValidation/` | Yes | | 8 | [Svrnty.CQRS.DynamicQuery.Abstractions](#8-svrntycqrsdynamicqueryabstractions) | `Svrnty.CQRS.DynamicQuery.Abstractions/` | Yes | | 9 | [Svrnty.CQRS.DynamicQuery](#9-svrntycqrsdynamicquery) | `Svrnty.CQRS.DynamicQuery/` | Yes | | 10 | [Svrnty.CQRS.DynamicQuery.MinimalApi](#10-svrntycqrsdynamicqueryminimalapi) | `Svrnty.CQRS.DynamicQuery.MinimalApi/` | Yes | | 11 | [Svrnty.CQRS.DynamicQuery.EntityFramework](#11-svrntycqrsdynamicqueryentityframework) | `Svrnty.CQRS.DynamicQuery.EntityFramework/` | Yes | | 12 | [Svrnty.CQRS.Events.Abstractions](#12-svrntycqrseventsabstractions) | `Svrnty.CQRS.Events.Abstractions/` | Yes | | 13 | [Svrnty.CQRS.Events.RabbitMQ](#13-svrntycqrseventsrabbitmq) | `Svrnty.CQRS.Events.RabbitMQ/` | Yes | | 14 | [Svrnty.CQRS.Sagas.Abstractions](#14-svrntycqrssagasabstractions) | `Svrnty.CQRS.Sagas.Abstractions/` | Yes | | 15 | [Svrnty.CQRS.Sagas](#15-svrntycqrssagas) | `Svrnty.CQRS.Sagas/` | Yes | | 16 | [Svrnty.CQRS.Sagas.RabbitMQ](#16-svrntycqrssagasrabbitmq) | `Svrnty.CQRS.Sagas.RabbitMQ/` | Yes | | 17 | [Svrnty.CQRS.Notifications.Abstractions](#17-svrntycqrsnotificationsabstractions) | `Svrnty.CQRS.Notifications.Abstractions/` | Yes | | 18 | [Svrnty.CQRS.Notifications.Grpc](#18-svrntycqrsnotificationsgrpc) | `Svrnty.CQRS.Notifications.Grpc/` | Yes | --- ## Package Details ### 1. Svrnty.CQRS.Abstractions **Purpose**: Core interfaces that define the CQRS contract. This is the only package your domain/application layer needs to reference. **Target**: `net10.0` | **AOT**: Yes **Key Types**: - `ICommandHandler` -- Handler for commands with no return value - `ICommandHandler` -- Handler for commands returning a result - `IQueryHandler` -- Handler for queries - `ICommandMeta` / `IQueryMeta` -- Discovery metadata - `ICommandDiscovery` / `IQueryDiscovery` -- Service discovery interfaces - `ICommandAuthorizationService` -- Per-command authorization - `IQueryAuthorizationService` -- Per-query authorization - `CommandNameAttribute` / `QueryNameAttribute` -- Custom naming - `IgnoreCommandAttribute` / `IgnoreQueryAttribute` -- Exclude from auto-discovery **Internal Dependencies**: None --- ### 2. Svrnty.CQRS **Purpose**: Core registration and discovery engine. Provides the `AddSvrntyCqrs()` fluent API and auto-discovers registered handlers. **Target**: `net10.0` | **AOT**: Yes **Key Types**: - `CqrsBuilder` -- Fluent builder for configuring transports and features - `CqrsConfiguration` -- Configuration state - `ServiceCollectionExtensions.AddSvrntyCqrs()` -- Entry point - `ServiceCollectionExtensions.AddCommand()` -- Register a command handler - `ServiceCollectionExtensions.AddQuery()` -- Register a query handler - `CommandDiscovery` / `QueryDiscovery` -- Default discovery implementations **Internal Dependencies**: `Svrnty.CQRS.Abstractions` --- ### 3. Svrnty.CQRS.MinimalApi **Purpose**: Maps registered commands and queries to ASP.NET Core Minimal API HTTP endpoints. Includes RFC 7807 Problem Details for validation errors. **Target**: `net10.0` | **AOT**: No **Key Types**: - `CqrsBuilderExtensions.AddMinimalApi()` -- Enable HTTP endpoints - `MinimalApiCqrsOptions` -- Configuration (route prefixes, etc.) - `ValidationFilter` -- Endpoint filter for FluentValidation - `WebApplicationExtensions.UseSvrntyCqrs()` -- Map endpoints at startup - `EndpointRouteBuilderExtensions` -- Route mapping helpers **Internal Dependencies**: `Svrnty.CQRS.Abstractions`, `Svrnty.CQRS` **External Dependencies**: `FluentValidation 11.x`, `Microsoft.AspNetCore.App` --- ### 4. Svrnty.CQRS.Grpc **Purpose**: Maps registered commands and queries to gRPC services. Uses Google Rich Error Model for structured validation errors. **Target**: `net10.0` | **AOT**: No **Key Types**: - `CqrsBuilderExtensions.AddGrpc()` -- Enable gRPC endpoints - `GrpcCqrsOptions` -- Configuration (reflection, etc.) **Internal Dependencies**: `Svrnty.CQRS` **External Dependencies**: `Grpc.AspNetCore 2.71.0` --- ### 5. Svrnty.CQRS.Grpc.Abstractions **Purpose**: Attributes for controlling gRPC code generation behavior. **Target**: `net10.0` | **AOT**: Yes **Key Types**: - `GrpcIgnoreAttribute` -- Marks a command/query to be excluded from gRPC service generation **Internal Dependencies**: None --- ### 6. Svrnty.CQRS.Grpc.Generators **Purpose**: Roslyn source generator that auto-generates `.proto` files and gRPC service implementations from registered command/query types. **Target**: `netstandard2.0` (Roslyn component) | **AOT**: N/A **Key Types**: - Source generator (analyzer DLL) - MSBuild `WriteProtoFileTask` -- Writes generated `.proto` files to disk - Build targets and props for NuGet consumers **Internal Dependencies**: None (ships as analyzer) **External Dependencies**: `Microsoft.CodeAnalysis.CSharp 5.0.0`, `Microsoft.Build.Utilities.Core 17.0.0` --- ### 7. Svrnty.CQRS.FluentValidation **Purpose**: Integrates FluentValidation with command/query registration. Validators are automatically invoked before handler execution. **Target**: `net10.0` | **AOT**: Yes **Key Types**: - `ServiceCollectionExtensions.AddCommand()` -- Register command with validator - Automatic `AbstractValidator` binding **Internal Dependencies**: `Svrnty.CQRS`, `Svrnty.CQRS.Abstractions` **External Dependencies**: `FluentValidation 11.11.0` --- ### 8. Svrnty.CQRS.DynamicQuery.Abstractions **Purpose**: Interfaces for the dynamic query subsystem. Defines how data sources are provided and queries are intercepted. **Target**: `netstandard2.1`, `net10.0` (multi-target) | **AOT**: Conditional **Key Types**: - `IQueryableProvider` -- Provides an `IQueryable` data source - `IQueryableProviderOverride` -- Override default provider - `IAlterQueryableService` -- Intercept/modify queryables - `IDynamicQuery` / `IDynamicQueryParams` -- Query parameter contracts - `IDynamicQueryInterceptorProvider` -- Interceptor registration **Internal Dependencies**: None **External Dependencies**: `PoweredSoft.DynamicQuery.Core 3.0.1` --- ### 9. Svrnty.CQRS.DynamicQuery **Purpose**: Implementation of dynamic query execution with filtering, sorting, grouping, pagination, and aggregation. **Target**: `net10.0` | **AOT**: Yes **Key Types**: - `ServiceCollectionExtensions.AddDynamicQueryWithProvider()` -- Register a queryable provider - Dynamic query handler pipeline **Internal Dependencies**: `Svrnty.CQRS.DynamicQuery.Abstractions`, `Svrnty.CQRS` **External Dependencies**: `PoweredSoft.DynamicQuery 3.0.1`, `Pluralize.NET 1.0.2` --- ### 10. Svrnty.CQRS.DynamicQuery.MinimalApi **Purpose**: HTTP Minimal API endpoints for dynamic queries. Exposes each registered entity as a POST endpoint with filter/sort/page parameters. **Target**: `net10.0` | **AOT**: No **Key Types**: - Endpoint mapping for dynamic query routes (`/api/dynamic-query/{entity}`) **Internal Dependencies**: `Svrnty.CQRS.Abstractions`, `Svrnty.CQRS.DynamicQuery.Abstractions`, `Svrnty.CQRS.DynamicQuery` **External Dependencies**: `Microsoft.AspNetCore.App` --- ### 11. Svrnty.CQRS.DynamicQuery.EntityFramework **Purpose**: Entity Framework Core integration for dynamic queries. Provides an EF-backed `IAsyncQueryableService`. **Target**: `net10.0` | **AOT**: No **Key Types**: - EF Core queryable service adapter **Internal Dependencies**: `Svrnty.CQRS.DynamicQuery` **External Dependencies**: `PoweredSoft.Data.EntityFrameworkCore 3.0.0` --- ### 12. Svrnty.CQRS.Events.Abstractions **Purpose**: Interfaces for domain event publishing. **Target**: `net10.0` | **AOT**: Yes **Key Types**: - `IDomainEvent` -- Marker interface (EventId, OccurredAt) - `IDomainEventPublisher` -- Publish events to external systems **Internal Dependencies**: None --- ### 13. Svrnty.CQRS.Events.RabbitMQ **Purpose**: RabbitMQ-backed implementation of domain event publishing. **Target**: `net10.0` | **AOT**: No **Key Types**: - RabbitMQ event publisher implementation **Internal Dependencies**: `Svrnty.CQRS.Events.Abstractions` **External Dependencies**: `RabbitMQ.Client 7.0.0`, `Microsoft.Extensions.DependencyInjection.Abstractions`, `Microsoft.Extensions.Logging.Abstractions`, `Microsoft.Extensions.Options` --- ### 14. Svrnty.CQRS.Sagas.Abstractions **Purpose**: Interfaces and types for the saga orchestration pattern with compensation (rollback) support. **Target**: `net10.0` | **AOT**: Yes **Key Types**: - `ISaga` -- Define a saga with steps - `ISagaBuilder` -- Fluent builder for local and remote steps - `ISagaStepBuilder` -- Configure Execute/Compensate actions - `ISagaRemoteStepBuilder` -- Remote command steps with timeout/retry - `ISagaOrchestrator` -- Start sagas, query state - `ISagaData` -- Marker interface (CorrelationId) - `SagaState` -- Persistent saga state (status, completed steps, errors) - `SagaStatus` -- Enum: NotStarted, InProgress, Completed, Failed, Compensating, Compensated - `ISagaStateStore` -- Persistence abstraction - `ISagaMessageBus` -- Messaging abstraction - `SagaMessage` / `SagaStepResponse` -- Message types - `ISagaContext` -- Step execution context **Internal Dependencies**: None --- ### 15. Svrnty.CQRS.Sagas **Purpose**: Default saga orchestrator implementation with step execution, compensation, and state management. **Target**: `net10.0` | **AOT**: Yes **Key Types**: - Saga orchestrator engine - In-memory state store (default) **Internal Dependencies**: `Svrnty.CQRS`, `Svrnty.CQRS.Sagas.Abstractions` **External Dependencies**: `Microsoft.Extensions.Logging.Abstractions`, `Microsoft.Extensions.Options` --- ### 16. Svrnty.CQRS.Sagas.RabbitMQ **Purpose**: RabbitMQ-backed message bus for distributed saga step execution across microservices. **Target**: `net10.0` | **AOT**: No **Key Types**: - RabbitMQ saga message bus implementation **Internal Dependencies**: `Svrnty.CQRS.Sagas` **External Dependencies**: `RabbitMQ.Client 7.0.0`, `Microsoft.Extensions.Hosting.Abstractions`, `Microsoft.Extensions.Options` --- ### 17. Svrnty.CQRS.Notifications.Abstractions **Purpose**: Interfaces for real-time notification streaming to clients. **Target**: `net10.0` | **AOT**: Yes **Key Types**: - `INotificationPublisher` -- Publish notifications to subscribed clients - `StreamingNotificationAttribute` -- Marks a type as a streamable notification with a subscription key **Internal Dependencies**: None --- ### 18. Svrnty.CQRS.Notifications.Grpc **Purpose**: gRPC server-streaming implementation for real-time notifications. **Target**: `net10.0` | **AOT**: No **Key Types**: - gRPC notification streaming service **Internal Dependencies**: `Svrnty.CQRS.Notifications.Abstractions` **External Dependencies**: `Grpc.AspNetCore 2.71.0`, `Microsoft.Extensions.DependencyInjection.Abstractions`, `Microsoft.Extensions.Logging.Abstractions` --- ## Additional Projects (not NuGet packages) | Project | Path | Purpose | |---------|------|---------| | `Svrnty.Sample` | `Svrnty.Sample/` | Sample web application demonstrating commands, queries, gRPC, MinimalApi, DynamicQuery, and validation | | `Svrnty.CQRS.Tests` | `tests/Svrnty.CQRS.Tests/` | Unit and integration test suite |