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.
$ 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.
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.
This is what "batteries included" looks like in the codebase.
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();
// 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.
Identity, Google & GitHub OAuth, magic links, email confirmation. The flows everyone rebuilds, prebuilt and tested.
Lemon Squeezy / Paddle merchant-of-record. Subscriptions, one-time, webhooks, customer portal. Global VAT handled.
Welcome, reset, receipts, magic links — Razor templates, provider-agnostic sender (Resend or any SMTP).
Landing sections, dashboard, settings, dark mode. Blazor + Tailwind via standalone CLI — no Node build chain.
User management, signup & revenue metrics, feature flags. Know what's happening without building a BI stack.
Docker, GitHub Actions CI, one command to fly.io or Azure. Postgres in prod, SQLite locally — zero setup.
src/
├── Api/
├── Application/
├── Application.Contracts/
├── Domain/
├── Domain.Shared/
├── Infrastructure/
├── Infrastructure.EF/
├── EventBus/
├── SharedKernel/
└── …5 more projects
// still no billing integration
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.
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.
Join the list. Be first when KestrelKit ships — at a price that won't be repeated.
~3 emails total. Unsubscribe anytime.
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.
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.
Per-developer, unlimited products. Build and sell as many SaaS apps as you like; just don't resell or redistribute the kit itself.
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.