Skip to content

Bun · SvelteKit · Hono · Postgres

The part of your SaaS that is the same every time, already built.

Authentication, organizations, billing, an admin surface, internationalisation, a PWA, desktop and mobile shells, and a self-hosting story that fits on one small server. One codebase, one typed API, one command to make it yours.

One payment. Not a subscription, not per-seat, not per-project. The free edition is permanent and not a trial — build and sell with it too.

From clone to running, in four commands

The rename is one command and covers the package scope, the Compose project name, the Tauri bundle identifier and every string a user sees. Do it first — it is far cheaper before the database volume exists.

git clone https://github.com/starterdough/starterdough.git my-product
cd my-product && bun install
bun run rename --name Acme --slug acme --identifier com.acme.desktop --scope @acme --write
bun run db:up && bun run db:migrate && bun run dev:app

What’s inside

Both editions come out of one source tree, so the free edition is not an older or a weaker build — it is the same code with the multi-tenancy layer and everything that depends on it removed. The line is drawn where the schema draws it: at organization.

Capabilities in the free edition and the full edition
Capability Free Full · $99
Authentication Email and password with verification, password reset, change email confirmed from the old address, delete account. GitHub and Google switch on when their credentials are set. Included Included
Two-factor and passkeys TOTP with backup codes, WebAuthn passkeys, and a session list the user can revoke from. Included Included
Admin surface Users, feature flags and a system page, behind a role the API enforces. Included Included
One typed API Hono and oRPC over Postgres and Drizzle. The contract is the source of truth; the client is generated from it. Included Included
Internationalisation English and German, compiled per-message, with the locale in the URL. Included Included
PWA and offline Installable, with a service worker and an offline fallback. Included Included
Desktop and mobile shells Tauri 2 projects wrapping the same static build. Bearer tokens, not cookies. Included Included
Marketing site and docs An Astro landing site and a Starlight documentation site, both static. Included Included
Self-hosting Docker Compose for the whole stack, Caddy for TLS and subdomains, and verified backup and restore scripts. Included Included
Organizations, teams, workspaces The organization is the tenant. Teams group its members, workspaces are the product container, and every query is scoped by a foreign key rather than by a filter someone might forget. Not included Included
Roles and invitations Owner, admin and member defined in one file and enforced in the API. Invitations are emailed as links that expire. Not included Included
Audit log Who did what, per organization, readable by owners and admins. Not included Included
Billing Stripe subscriptions per organization, per-seat, with plan limits enforced server-side and a customer portal. Not included Included
Documents and storage Presigned S3 uploads, per-organization storage quotas, and a document model scoped to a workspace. Not included Included
Background jobs A Postgres-backed queue and a worker process. Scoped to the organization, which is why it is not in the free edition. Not included Included
AI service A FastAPI service managed with uv: pgvector semantic search, OCR, and a usage ledger the API meters against. Not included Included

9 capabilities in the free edition, 16 in the full one. The 7 it adds are the ones that take weeks to build and are painful to retrofit.

Free edition

$0

Auth starter.

  • Everything a single-tenant product needs, with no organizations and no payments.
  • A public repository. No key to enter, no trial, nothing that expires.
  • The same source as the full edition, with the tenancy layer removed.
  • Its own licence: build and sell products with it, closed-source, no attribution.
Clone it

Full edition

$99 one-time

  • Everything in the free edition, plus multi-tenancy, billing, documents and jobs.
  • Access to the private repository, for you and any number of your developers.
  • Every future version, for as long as the repository exists.
  • Unlimited products, commercial, closed-source, no attribution.
Email me to buy it

All sales are final. Refunds are at our discretion, and where the law requires them. Sold through Polar, the merchant of record — fulfilment is an invitation to the private repository. Read the licence before you buy.

Questions

What exactly am I buying?
Access to the private repository holding the full edition, and a licence to use it. You clone it, rename it to your product with one command, and it is yours — there is no runtime, no hosted service and nothing to call home to.
Can I sell what I build with it?
Yes. Unlimited products, commercial or not, for yourself or for clients, deployed publicly and charged for, closed-source, with no attribution required and no revenue share. What the licence forbids is passing on the kit rather than a product: republishing it, reselling it as a starter or template, or handing the source to a client who has not bought their own licence.
How many developers does it cover?
Any number, as long as they work for you — the licence is per legal entity, not per seat, and it is not shared between separate companies (including a parent or a subsidiary). Access ends for a person when they stop working for you.
Is the free edition crippled?
No. It is a smaller product, not a demo: real authentication, real admin, real self-hosting, no time limit, no key to enter, and nothing in it stops working. It is generated from the same source by deleting the multi-tenancy layer and everything that depends on it.
Do I get updates?
Every future version, with no renewal and no window. They arrive as commits in the repository you already have access to; UPGRADING.md explains how to merge them without losing your own changes. You also keep what you have forever, at the version you received, whatever happens to us.
Is this a subscription?
No. One payment of $99. There is no renewal, no seat count and no second invoice.
What does it run on?
One Postgres database and one container host. It is designed to self-host on a single small VPS, and it also builds to static assets for a CDN with the API anywhere else.
What is not included?
Anything specific to your product, and any third-party account it talks to — Stripe, an S3 bucket, an email provider, OAuth apps. The integration code is written; the accounts are yours to open.

Something not answered here? hello@starterdough.dev .