Compendium.Adapters.PostgreSQL
1.0.0-preview.2
See the version list below for details.
dotnet add package Compendium.Adapters.PostgreSQL --version 1.0.0-preview.2
NuGet\Install-Package Compendium.Adapters.PostgreSQL -Version 1.0.0-preview.2
<PackageReference Include="Compendium.Adapters.PostgreSQL" Version="1.0.0-preview.2" />
<PackageVersion Include="Compendium.Adapters.PostgreSQL" Version="1.0.0-preview.2" />
<PackageReference Include="Compendium.Adapters.PostgreSQL" />
paket add Compendium.Adapters.PostgreSQL --version 1.0.0-preview.2
#r "nuget: Compendium.Adapters.PostgreSQL, 1.0.0-preview.2"
#:package Compendium.Adapters.PostgreSQL@1.0.0-preview.2
#addin nuget:?package=Compendium.Adapters.PostgreSQL&version=1.0.0-preview.2&prerelease
#tool nuget:?package=Compendium.Adapters.PostgreSQL&version=1.0.0-preview.2&prerelease
Compendium
A pragmatic .NET framework for building event-sourced, multi-tenant SaaS applications.
Compendium is the framework that powers Nexus, Sassy Solutions' multi-tenant platform engineering product. It distills years of building event-sourced SaaS into a small set of focused packages: DDD primitives, CQRS handlers, an event store, multi-tenancy, and ready-to-use adapters for PostgreSQL, Redis, Zitadel, and more.
Why Compendium?
- Zero-dependency Core — Pure DDD primitives (
AggregateRoot<TId>,ValueObject,Result<T>,Error) with no external dependencies beyond the .NET BCL. - CQRS + Event Sourcing built-in — Command/query dispatchers, event store interfaces, and a PostgreSQL adapter wired out of the box.
- Multi-tenancy native — Tenant context, resolution, and scoping baked into the primitives — not bolted on.
- Result pattern everywhere — No control-flow exceptions. Every fallible operation returns
Result<T>with structuredErrorvalues. - Modular adapters — Pick only what you need: PostgreSQL, Redis, Zitadel, Listmonk, LemonSqueezy, OpenRouter, ASP.NET Core.
- Battle-tested in production — Powers Nexus, a multi-tenant platform engineering product.
Quick start
Install the packages you need:
dotnet add package Compendium.Core
dotnet add package Compendium.Application
dotnet add package Compendium.Adapters.PostgreSQL
Define an event-sourced aggregate:
using Compendium.Core.Domain.Primitives;
using Compendium.Core.Results;
public sealed class OrderAggregate : AggregateRoot<OrderId>
{
private OrderStatus _status;
private decimal _amount;
private OrderAggregate(OrderId id) : base(id) { }
public static Result<OrderAggregate> Create(CustomerId customerId, decimal amount)
{
if (amount <= 0)
return Result.Failure<OrderAggregate>(
Error.Validation("Order.Amount.Invalid", "Amount must be positive"));
var order = new OrderAggregate(OrderId.New());
order.AddDomainEvent(new OrderCreated(order.Id, customerId, amount));
return Result.Success(order);
}
public void Apply(OrderCreated @event)
{
_status = OrderStatus.Pending;
_amount = @event.Amount;
}
}
Wire it up in Program.cs:
using Compendium.Application.CQRS;
using Microsoft.Extensions.DependencyInjection;
var builder = WebApplication.CreateBuilder(args);
// Register Compendium CQRS dispatchers (command/query handlers are resolved via IServiceProvider).
builder.Services.AddScoped<ICommandDispatcher, CommandDispatcher>();
builder.Services.AddScoped<IQueryDispatcher, QueryDispatcher>();
// Register your command/query handlers, then wire the PostgreSQL event store adapter
// using the options published by Compendium.Adapters.PostgreSQL.
var app = builder.Build();
Architecture
Core (zero deps) → Abstractions → Application → Infrastructure → Adapters
↓
Multitenancy (cross-cutting)
- Core — Domain primitives with no external dependencies.
- Abstractions — Ports (interfaces) for infrastructure concerns: identity, billing, email, AI.
- Application — CQRS orchestration: command/query handlers, dispatchers.
- Infrastructure — Generic infrastructure concerns: projections, outbox, caching.
- Adapters — Concrete integrations with external systems.
- Multitenancy — Tenant resolution and scoping, usable across all layers.
Packages
Documentation
Docs and samples will be populated when the package is extracted to its own repo. In the meantime, browse the source under src/Framework/ or the Nexus consumer code for end-to-end examples.
Who's using Compendium?
- Nexus — Multi-tenant platform engineering by Sassy Solutions.
Using Compendium in your project? Open a PR to add yourself to this list.
Contributing
Contributions, issues, and feedback are welcome. See CONTRIBUTING.md for guidelines on code style, commit conventions, and the development loop.
License
MIT © 2026 Sassy Solutions. See LICENSE for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- Compendium.Abstractions (>= 1.0.0-preview.2)
- Compendium.Core (>= 1.0.0-preview.2)
- Compendium.Infrastructure (>= 1.0.0-preview.2)
- Compendium.Multitenancy (>= 1.0.0-preview.2)
- Dapper (>= 2.1.35)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Options (>= 9.0.0)
- Npgsql (>= 9.0.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 97 | 5/14/2026 |
| 1.0.0-preview.9 | 513 | 5/14/2026 |
| 1.0.0-preview.8 | 984 | 5/2/2026 |
| 1.0.0-preview.7 | 44 | 5/2/2026 |
| 1.0.0-preview.6 | 83 | 5/2/2026 |
| 1.0.0-preview.5 | 79 | 4/30/2026 |
| 1.0.0-preview.4 | 169 | 4/26/2026 |
| 1.0.0-preview.3 | 55 | 4/26/2026 |
| 1.0.0-preview.2 | 59 | 4/25/2026 |
| 1.0.0-preview.1 | 157 | 4/24/2026 |