Changelog & blog

Product updates, deep dives, and engineering notes.

Everything we ship, write, and learn — in chronological order.

What Duende IdentityServer costs a multi-tenant SaaS in 2026, and the alternatives

Duende's 2026 price list, what the Multi-Tenancy add-on and the Community Edition rules mean for a B2B SaaS, and how OpenIddict, Keycloak, Entra External ID and Auth0 compare. Every price is quoted with its source and the date we read it.

Read the launch note →

Send email from ASP.NET Core without blocking the request, and still know when it failed

Inline sends make users wait on your email provider; fire-and-forget loses failures. A database outbox, a BackgroundService that claims rows with SKIP LOCKED, backoff with jitter, and an honest look at duplicates.

Read →

Notavia is live: one API for every channel your users live in

Notavia v1 is in production — email, in-app inbox, SMS, and chat behind a single, predictable call.

Read →

Wire notifications from your AI editor with Notavia's MCP server

Connect Notavia's MCP server to Cursor, Claude, or VS Code and let your agent author templates, send notifications, and promote Test to Live — in natural language, using your API key.

Read →

A Knock alternative for .NET and Blazor teams

If you're a .NET team evaluating Knock for notifications, here's an honest comparison — where Knock is the stronger choice, and where a .NET-native, white-label, EU-hosted option like Notavia fits better.

Read →

Add an in-app notification inbox to a Blazor app

A drop-in, real-time notification inbox for Blazor Server or WebAssembly: install one component, mint a scoped token on your backend, and you get unread counts, read state, and SignalR push without building any of it.

Read →

Why we built Notavia — and why we built it first

Every SaaS founder rebuilds the same plumbing before the actual idea ships. SaaS Infrastructure exists to end that loop. Notavia is the first building block.

Read →

One template, every channel: how Notavia's rendering pipeline works

Liquid templates, per-channel rendering, idempotency keys, and a delivery log you can actually debug — the engineering behind Notavia's core loop.

Read →

Predictable pricing: why we hard-cap instead of letting the bill surprise you

Notavia pauses sends at your plan limit with an HTTP 402 rather than letting usage run unchecked. Here is why, and how overage blocks work if you need them.

Read →

Self-hosting Notavia: Docker Compose, Helm, and what the signed licence means

Run Notavia on your own infrastructure with Docker Compose or Helm, connect your own providers, and own your data. Here is how the self-hosted deployment works.

Read →