Ship your SaaS
this month. In C#.

Auth, merchant-of-record payments, transactional email, admin panel, one-command deploy — wired together and tested. You write the part that's actually your product.

Join the early-access list → Launch pricing for the list only
.NET 9 Blazor EF Core PostgreSQL Tailwind Docker
jordan@dev: ~/my-saas

$ git clone kestrelkit my-saas && cd my-saas

$ dotnet run

→ Applying migrations… done (SQLite, zero config)

→ Auth: email + Google + GitHub ready

→ Billing: Lemon Squeezy webhooks listening

→ Emails: 6 templates compiled

→ Admin: /admin mounted

Now listening on: http://localhost:5000

$ ./deploy.sh fly

https://my-saas.fly.dev is live. Go get customers.

Every .NET side project dies the same way

Weekend one: the fun part. Weekend two: wiring up Identity. Weekend three: fighting payment webhooks. Weekend four: transactional emails, admin pages, deployment… Weekend five never comes.

Next.js developers have had ship-fast kits for years. .NET developers got clean-architecture showcases — fourteen projects, a CQRS lecture, and still no billing integration. KestrelKit is the other thing: boring tech, wired together, ready to sell.

Show, don't tell

This is what "batteries included" looks like in the codebase.

Program.cs — the whole setup
var builder = WebApplication.CreateBuilder(args);

builder.AddKestrelKit(kit =>
{
    kit.UseAuth(o => o.WithGoogle().WithGitHub().WithMagicLinks());
    kit.UseBilling<LemonSqueezy>();   // or <Paddle>
    kit.UseEmail<Resend>();           // or any SMTP
    kit.UseAdmin("/admin");
});

var app = builder.Build();
app.MapKestrelKit();
app.Run();
Subscriptions — already idempotent, already retried
// React to billing events. Webhook plumbing,
// signature checks & dedupe are handled for you.
public class OnSubscription : IBillingHandler
{
    public Task Activated(Customer c, Plan plan)
        => users.Grant(c, plan.Features);

    public Task Cancelled(Customer c)
        => users.Downgrade(c, Grace.Days(14));
}

// VAT? Sales tax? Invoices? The merchant of
// record handles it. In every country. Not you.

Everything between "idea" and "first customer"

auth/

Identity, Google & GitHub OAuth, magic links, email confirmation. The flows everyone rebuilds, prebuilt and tested.

billing/

Lemon Squeezy / Paddle merchant-of-record. Subscriptions, one-time, webhooks, customer portal. Global VAT handled.

email/

Welcome, reset, receipts, magic links — Razor templates, provider-agnostic sender (Resend or any SMTP).

ui/

Landing sections, dashboard, settings, dark mode. Blazor + Tailwind via standalone CLI — no Node build chain.

admin/

User management, signup & revenue metrics, feature flags. Know what's happening without building a BI stack.

deploy/

Docker, GitHub Actions CI, one command to fly.io or Azure. Postgres in prod, SQLite locally — zero setup.

the_other_starters.sln
src/
├── Api/
├── Application/
├── Application.Contracts/
├── Domain/
├── Domain.Shared/
├── Infrastructure/
├── Infrastructure.EF/
├── EventBus/
├── SharedKernel/
└── …5 more projects
// still no billing integration
kestrelkit.sln
src/
├── App/             // Blazor UI + endpoints
├── App.Domain/      // your business logic
└── App.Infrastructure/
tests/
└── App.Tests/       // auth + billing covered

// Two projects. Everything wired.
// Delete what you don't need.

No microservices. No CQRS lecture. No Kubernetes. On purpose.

Proof, not promises

CronPulse — a working cron-job monitor — was built on KestrelKit in an afternoon. Eight files on top of the kit.

CronPulse monitors dashboard built with KestrelKit
git diff --stat — the entire product
 src/App.Domain/Monitors/Monitor.cs          |  32 +++
 src/App.Infrastructure/Data/AppDbContext.cs |  12 ++
 src/App/Components/Layout/MainLayout.razor  |   8 +-
 src/App/Components/Pages/Home.razor         |  45 +++--
 src/App/Components/Pages/Monitors.razor     | 152 ++++++++++
 src/App/Endpoints/PingEndpoints.cs          |  27 ++
 src/App/Program.cs                          |   9 +-
 src/App/Workers/MonitorWorker.cs            |  63 +++++
 8 files — auth, billing, emails and admin
 came with the kit.

Built in public, by a .NET dev with 7 years of scars

KestrelKit is the starter I wished existed every time a side project drowned in plumbing. Early-access members get the launch discount, a vote on what ships first, and direct access to me while it's built.

Get the launch discount

Join the list. Be first when KestrelKit ships — at a price that won't be repeated.

~3 emails total. Unsubscribe anytime.

FAQ

Why Blazor and not API + React?+

One language, no JS build chain, server-rendered pages that Google can read. For a solo founder, fewer moving parts beats résumé-driven architecture. If you outgrow it, your Domain and Infrastructure projects don't care what renders the UI.

Is this a library or a template?+

A template — you get the full source via private GitHub repo, you own your copy, change anything. The AddKestrelKit() ergonomics ship as source in the repo, not a NuGet black box.

What's the licence?+

Per-developer, unlimited products. Build and sell as many SaaS apps as you like; just don't resell or redistribute the kit itself.

When does it ship, and what does early access get me?+

Building in public now; first release in weeks, not quarters. The list gets the launch price (won't be repeated), a vote on module priorities, and direct access while it's built.