This is a demo project. For demonstration only.

SaaS starter for Cloudflare

Accounts, billing, and translation are already wired up.

A TanStack Start template for the parts every SaaS needs: sign-in, subscriptions, a typed database, locale routing, and a theme customizer. Deploy it to your own Cloudflare account.

  • One codebase, no per-feature setup
  • Runs on your own Cloudflare account
  • TypeScript strict from the schema to the UI

Built with

TanStack Start
React
TypeScript
Tailwind CSS
shadcn/ui
Cloudflare
Drizzle ORM
Better Auth
Stripe
Resend
Lucide Icons
Google
Vite
What is included

Built for every part of your SaaS

Accounts, billing, and translation routing ship as working features rather than as stubs you have to finish.

Accounts

Sign-in that covers every path

Google One Tap, email and password, verification, reset, and deletion all run on one session layer, on top of Better Auth.

  • Google One Tap and email sign-in
  • Email verification and password reset
  • Account deletion with eligibility checks
  • Users and sessions stored in D1
SKMWPN
1 tapGoogle sign-in
Accounts preview
Billing

One billing layer, three providers

Stripe, Creem, and PayPal sit behind a single adapter, and the webhook is the only thing that grants access.

  • Checkout, customer portal, and billing summary
  • Verified webhooks as the source of truth
  • Recovery flows for interrupted checkouts
  • Per-provider product mapping from environment variables
JOLS
3Payment providers
Billing preview
Trust

Turnstile, secrets, and signed webhooks

Public forms go through Turnstile, provider secrets never reach the browser, and a signature is checked before a payment row is written.

  • Turnstile on the contact form
  • Server-only database and environment imports
  • Signature-checked payment webhooks
  • Double opt-in for the newsletter
DRTEAT
0Secrets in the client bundle
Trust preview
Under the hood

Everything the template runs on, in one grid

Cloudflare Workers, D1 with Drizzle, R2 storage, AI tools with credits, and a theme customizer with 52 presets.

The parts every SaaS needs, already built

Accounts, billing, storage, translation, and theming arrive as working features, with tests and guards around them.

Three payment providers

Stripe, Creem, and PayPal behind one adapter, with webhooks as the source of truth.

Typed data on D1

A Drizzle schema, generated migrations, and queries that fail at build time instead of in production.

Locale routing

URL-based locales, typed keys, and per-namespace bundles that load only what a page renders.

AI tools with credits

Image and text tools on Cloudflare AI, metered per account.

Content in MDX

Blog, guides, and changelog ship as MDX with frontmatter, a table of contents, and generated Open Graph images.

By The Numbers

What ships in the box

Every number below is something you can find in the repository, not a target we are aiming at.

  • light & dark

    52

    Theme presets

  • one adapter

    3

    Payment providers

  • shadcn/ui

    63

    UI primitives

  • no escape hatches

    100%

    Strict TypeScript

Wall Of Love

Teams ship faster with this stack

Placeholder reviews, ready to be replaced with your own. The card layout holds any length.

“We shipped a polished marketing site in a single afternoon. The blocks dropped in cleanly and looked right in both light and dark themes, exactly what our team needed without a single tweak.”
MCMaya ChenFounder, Northwind
“Accessible, sharp, and zero config. Our engineers stopped reinventing layouts and started shipping features again within days. Onboarding went from weeks to a single morning.”
PNPriya NairEngineering Manager, Vela
“Adopting this cut our component backlog in half by the end of the first sprint.”
THTomás HerreraFrontend Lead, Cobalt
“I expected to fight the defaults. Instead everything just composed: spacing, typography, focus states. It feels like it was designed by someone who actually ships product.”
SLSofia LindqvistProduct Designer, Fernweh
“Our agency standardized on it across six client projects. Handoffs are clean and reviews are faster.”
MBMarcus BellCreative Director, Studio Atlas
“The dark mode story alone paid for itself. No more one-off overrides scattered through the codebase, and our QA pass on theming dropped to almost nothing.”
ARAisha RahmanStaff Engineer, Quanta
Plans

Pricing that scales with you

Demo plans for the checkout flow. Replace the names, features, and price points with your own before you sell anything.

Free
For trying the template out.

$0/month

  • The full source code
  • Local development and builds
  • Community resources
Pro
Most popular
For teams shipping a real product.

$19/month

  • Everything in Free
  • Payment providers wired up
  • AI tools with credits
  • Priority support
Lifetime
One payment for unlimited access.

$299one-time

  • Everything in Pro
  • Lifetime account access
  • Dedicated support
  • Maximum usage tier
FAQ

Questions and answers

The things people ask before they start. The guides cover the details.

Still have questions?We typically reply within a few hours.
Contact support

Clone the repository, copy the environment example to your local variables, apply the migrations, and start the dev server. The guides walk through each service you need to connect.

That is what the license page is for. Technically there is nothing in the way: it is one repository, and forking it per product is the intended path.

Stripe, Creem, and PayPal. They sit behind one adapter, so the checkout page does not care which one is active.

The default setup does: Workers, D1, R2, and Turnstile are what the server code talks to. The rest is React and TanStack Start with Drizzle, so another target is possible, but it is real work.

Add the locale, mirror the namespace files, and register the bundle. The guides list the seams, from the font fallbacks to the prerender paths.

In the theme customizer. Pick one of the 52 presets, or set your own colours, fonts, radius, and typography, then save it as the factory default.
Get Started

Start building on a finished base.

Clone it, point it at your services, and spend your time on the product instead of the plumbing.

One repository, no per-feature setup.