Lumarin.Notify.EntityFrameworkCore.PostgreSQL
0.8.0-preview.199
dotnet add package Lumarin.Notify.EntityFrameworkCore.PostgreSQL --version 0.8.0-preview.199
NuGet\Install-Package Lumarin.Notify.EntityFrameworkCore.PostgreSQL -Version 0.8.0-preview.199
<PackageReference Include="Lumarin.Notify.EntityFrameworkCore.PostgreSQL" Version="0.8.0-preview.199" />
<PackageVersion Include="Lumarin.Notify.EntityFrameworkCore.PostgreSQL" Version="0.8.0-preview.199" />
<PackageReference Include="Lumarin.Notify.EntityFrameworkCore.PostgreSQL" />
paket add Lumarin.Notify.EntityFrameworkCore.PostgreSQL --version 0.8.0-preview.199
#r "nuget: Lumarin.Notify.EntityFrameworkCore.PostgreSQL, 0.8.0-preview.199"
#:package Lumarin.Notify.EntityFrameworkCore.PostgreSQL@0.8.0-preview.199
#addin nuget:?package=Lumarin.Notify.EntityFrameworkCore.PostgreSQL&version=0.8.0-preview.199&prerelease
#tool nuget:?package=Lumarin.Notify.EntityFrameworkCore.PostgreSQL&version=0.8.0-preview.199&prerelease
Lumarin.Notify
Lumarin.Notify is a .NET notification library for applications that need a consistent send API, durable delivery options, current-actor receiver APIs, and optional operator-facing capabilities.
Use it when you want to keep notification delivery inside your application boundary while still supporting features such as templates, delivery tracking, preferences, devices, SignalR refresh hints, outbox delivery, and admin APIs.
When to use it
- You want one notification model across in-app feed, email, push, SMS, or webhook delivery.
- You need an adoption path that can start simple and grow into durable or outbox-backed delivery.
- You want hosted receiver APIs under
/api/notify/*or a host-owned facade over the same services. - You need clear boundaries between library-owned behavior and host-owned auth, tenant semantics, and deployment choices.
Key capabilities
- Unified
INotificationHubsend API. - Simple, durable, and explicit outbox composition modes.
- Current-actor receiver APIs for feed, preferences, devices, templates, and tracking.
- Optional generated client for the stable hosted contract.
- Optional SignalR realtime fan-out as a refresh hint beside persisted feed state.
- Optional admin APIs, policy routing, scheduling preview, and telemetry helpers.
- Optional embeddable Admin UI and Receiver UI package surfaces.
Quick start
Start with the smallest supported profile and add capability layers as needed.
builder.Services.AddLumarinNotify(options =>
{
options.Delivery.EnableBackgroundWorkers = false;
options.EnableTemplates();
});
Add durable storage when you need persisted notifications and background delivery:
builder.Services.AddLumarinNotify(options =>
{
options.UsePostgreSql(builder.Configuration.GetConnectionString("LumarinNotify")!);
options.EnableHostedApiDefaults(hosted => hosted.ScopeType = "user");
});
Send a notification:
var result = await hub.SendAsync(new NotificationRequest(
ScopeType: "user",
ScopeId: "user-123",
Category: "order.shipped",
Content: new NotificationContent("Order shipped", "Your order #456 is on the way."),
Recipients: new NotificationRecipients(
Identities: ["user-123"],
Channels: [NotificationChannel.InApp, NotificationChannel.Email])));
Supported integration shapes
| Shape | Start with | Use when |
|---|---|---|
| Simple in-process notifications | Lumarin.Notify |
You want the send API without EF Core or hosted workers |
| Durable notifications and receiver APIs | Lumarin.Notify + Lumarin.Notify.EntityFrameworkCore + Lumarin.Notify.AspNetCore |
You want persisted feed state, deliveries, and hosted current-actor routes |
| Explicit outbox delivery | add Lumarin.Notify.Outbox and Lumarin.Notify.Outbox.EntityFrameworkCore |
You want enqueue-on-commit delivery with explicit runtime ownership |
| Operator-facing admin APIs | add Lumarin.Notify.Admin and admin EF packages as needed |
You want optional control-plane APIs and admin-specific persistence |
| Embeddable admin UI | add Lumarin.Notify.Admin plus lumarin-notify-admin-ui |
You want an operator UI over the optional admin control-plane surface |
| Embeddable receiver UI | add Lumarin.Notify.AspNetCore plus lumarin-notify-receiver-ui |
You want a current-user notification center over feed, preferences, devices, and optional SignalR refresh hints |
| Generated hosted client | add Lumarin.Notify.AspNetCore.OpenApiClient |
You call the stable /api/notify/* contract from another application |
| Realtime refresh hints | add Lumarin.Notify.Channels.SignalR |
You want websocket fan-out beside persisted feed state |
Package map and docs
- Start here: docs-site/docs/getting-started.md
- Choose a starting path: docs-site/docs/get-started/choose-your-path.md
- Package selection: docs-site/docs/package-map.md
- Support posture: docs-site/docs/support-matrix.md
- Stability vocabulary: docs-site/docs/stability-tiers.md
- RC public API posture: docs/reference/public-api-stability.md
- RC package surface audit: docs/reference/package-surface-audit.md
- Shipping and upgrade review: docs-site/docs/adoption-checklist.md
- Hosted routes and identity model: docs-site/docs/aspnetcore-hosting.md
- Receiver integration choices: docs-site/docs/receiver-integration.md
- Receiver UI package guide: docs-site/docs/receiver-ui.md
- Admin control-plane guide: docs-site/docs/admin-control-plane.md
- Integration patterns: docs-site/docs/integration-patterns.md
- Scale and performance: docs-site/docs/scale-and-performance.md
- Extensibility seams: docs-site/docs/extensibility.md
- Hosts and samples: docs/reference/hosts-and-samples.md
- Upgrade notes: docs/release/upgrade-guidance.md
- Contributor workflows: docs/contributing/workflow.md
Stability and release status
The current package set is published as 0.8.0-preview.1.
The packageable UI libraries remain supported-optional release-candidate surfaces with their own npm metadata and package checks. Keep their published posture aligned with the same control-plane versus user-plane boundaries as the .NET packages.
Lumarin.Notify uses these repo-wide tiers:
- Stable: core runtime, durable EF packages, production channel families, the library-owned
/api/notify/*contract, and the generated hosted client - Supported optional: outbox, admin, policy routing, telemetry helpers, claims helpers, and bridge packages when adopted intentionally
- Preview: scheduling, webhook delivery, and preview provider adapters such as Postmark, Mailgun, Resend, APNs, Azure Communication Services SMS, Amazon SNS push or SMS, Telnyx, and Vonage
- Sample-only: reference host, runnable samples, and showcase tooling
- Internal: repo-local generators and helper settings
Use docs/release/checklist.md and docs-site/docs/release-candidate-readiness.md when you need the release-quality validation posture.
Boundaries and non-goals
Lumarin.Notify does not provide:
- IdP-specific authentication integration
- a tenant-management API
- a dashboard product or mandatory telemetry backend
- a general-purpose workflow or scheduler platform
- product-owned
/api/me/*routes when your host needs a custom receiver contract
The host remains responsible for authentication, authorization, tenant resolution, deployment topology, migrations ownership, and provider credential management.
Validation commands
Run the narrowest command that matches your change. Common validation lanes are:
dotnet build Lumarin.Notify.slnx
dotnet test Lumarin.Notify.slnx -m:1
./scripts/verify.ps1 -Fast
./scripts/verify.ps1
./scripts/verify.ps1 -Full
./scripts/verify-docs-alignment.ps1
./scripts/verify-generated-openapi-clients.ps1
npm run build --prefix docs-site
For the packageable UI surfaces, also run the matching package checks:
Push-Location admin-ui
npm run typecheck
npm run typecheck:lib
npm run test:run
npm run build
npm run build:lib
npm run check:publint
npm run check:types-wrong
Pop-Location
Push-Location receiver-ui
npm run typecheck
npm run typecheck:lib
npm run test:run
npm run build
npm run build:lib
npm run check:publint
npm run check:types-wrong
Pop-Location
Use ./scripts/verify.ps1 -Full for the local lane that most closely mirrors the union of the main CI verification jobs. For release work, also use docs/release/checklist.md.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
-
net10.0
- Lumarin.Notify.EntityFrameworkCore (>= 0.8.0-preview.199)
- Npgsql.EntityFrameworkCore.PostgreSQL (>= 10.0.1)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on Lumarin.Notify.EntityFrameworkCore.PostgreSQL:
| Package | Downloads |
|---|---|
|
Lumarin.Notify.Outbox.EntityFrameworkCore.PostgreSQL
Optional PostgreSQL provider package for Lumarin.Notify outbox EF Core persistence. |
|
|
Lumarin.Notify.Scheduling.EntityFrameworkCore.PostgreSQL
Preview PostgreSQL provider package for Lumarin.Notify scheduling EF Core persistence. |
|
|
Lumarin.Notify.Admin.EntityFrameworkCore.PostgreSQL
Optional PostgreSQL provider package for Lumarin.Notify admin EF Core persistence. |
|
|
Lumarin.Notify.Hosting.Embedded.PostgreSQL
Optional embedded-hosting convenience profile for Lumarin.Notify on PostgreSQL |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.8.0-preview.199 | 64 | 5/14/2026 |
| 0.8.0-preview.162 | 66 | 4/26/2026 |
| 0.8.0-preview.161 | 74 | 4/26/2026 |
| 0.8.0-preview.160 | 65 | 4/26/2026 |
| 0.8.0-preview.159 | 55 | 4/26/2026 |
| 0.8.0-preview.158 | 57 | 4/26/2026 |
| 0.8.0-preview.157 | 58 | 4/25/2026 |
| 0.8.0-preview.156 | 59 | 4/25/2026 |
| 0.8.0-preview.155 | 59 | 4/25/2026 |
| 0.8.0-preview.154 | 49 | 4/25/2026 |
| 0.8.0-preview.153 | 54 | 4/25/2026 |
| 0.8.0-preview.150 | 63 | 4/25/2026 |
| 0.8.0-preview.133 | 71 | 4/23/2026 |
| 0.8.0-preview.132 | 58 | 4/23/2026 |
| 0.8.0-preview.130 | 55 | 4/23/2026 |
| 0.8.0-preview.128 | 64 | 4/23/2026 |
| 0.8.0-preview.120 | 139 | 4/21/2026 |
| 0.8.0-preview.115 | 59 | 4/18/2026 |
| 0.8.0-preview.114 | 65 | 4/18/2026 |
| 0.8.0-preview.113 | 65 | 4/17/2026 |