Hand it to your agent. Live in an hour.

A SaaS starter with auth, payments, credits and an admin console already wired — plus the rules, skills and tests that keep Claude Code, Codex and Cursor on the rails.

Built on

  • TanStack Start
  • React
  • TypeScript
  • Tailwind CSS
  • shadcn/ui
  • Vite
  • Bun
  • Cloudflare
  • Node.js
  • Drizzle
  • better-auth
  • Stripe
  • Creem
  • Resend

With your agent

Say what you want. It does the rest.

  • Claude Code
  • Codex
  • Cursor
  • GitHub Copilot
  • Windsurf
  • opencode
  • Zed
  • Amp
  1. Step 1

    Running in one command

    /setup
    bun install
    bun run db:migrate:local
    bun run dev
    http://localhost:3000/
  2. Step 2

    Payments wired by the agent

    /stripe
    stripe prices create …
    Wrote ids to plans.ts
    stripe listen
    checkout → 200
  3. Step 3

    Rules it cannot quietly break

    Add invoices
    /add-feature invoices
    ✗ no permission check
    Added requirePermission
    ✓ all tests pass

This is the whole app.

  • The app

    A guarded shell: home, account settings, plan and credits.

  • Billing

    Checkout, prorated upgrades, downgrades at period end, receipts.

  • Admin console

    Users, subscriptions, orders, the ledger, audit and email logs.

  • Marketing site

    Prerendered landing, pricing, docs, blog and legal — in two languages.

The signed-in dashboard: sidebar, credit balance, current plan and recent ledger activity.
The plan and billing page: the four tiers with one active, and the payment history below.
The admin console user list: account, plan and credit columns over a row of overview figures.
The public marketing site: header, headline, calls to action and the technology stack.

In the box

The parts you would have written anyway.

  1. 01

    Payments, provider-neutral

    src/features/billing
    • Stripe
    • Creem
    • One internal event type
    • Upgrade now, downgrade at period end
    • A refund undoes an upgrade
    • Switch with one env var
  2. 02

    Passwordless auth

    src/features/auth
    • Google
    • GitHub
    • Emailed sign-in code
    • No passwords, no reset flow
    • Sessions in D1
  3. 03

    Metered credits

    src/features/credits
    • Monthly grant per plan
    • Packs that never expire
    • Spend without a transaction
    • Full ledger
  4. 04

    An admin console

    src/routes/_app/admin
    • KPIs and trends
    • Users, subscriptions, orders
    • Roles and permissions
    • Audit and email logs
    • Admin JSON API
  5. 05

    Content and i18n

    src/features/content
    • MDX content
    • Blog and docs
    • Compiled at build time
    • EN / 中文
    • Locale in the URL
  6. 06

    The boring half

    .github/workflows/ci.yml
    • Typecheck and lint
    • Unit tests
    • Playwright e2e
    • Deploy refuses pending migrations
    • Deletion recipes verified in CI
  7. 07

    And the rest

    src/features
    • R2 file storage
    • Transactional email
    • In-app notifications
    • In-app feedback
    • Waitlist gate
    • Affiliate programme
    • Analytics
    • API keys

Pricing

One price. Every update after it.

ShipKit license

$99$199one-time

Launch price

  • The full source, in a private GitHub repository
  • Every future update — pull it like any other remote
  • Unlimited projects of your own
  • Rules, skills and tests for Claude Code, Codex and Cursor
  • Setup, payments and deploy guides

Sign in with GitHub and the repository invite goes out the moment you pay.

Digital goods, delivered instantly — all sales are final. Refunds

Questions

Things people ask before they clone it.

How do I get the code?

You are invited to a private GitHub repository. Sign in with GitHub and the invite goes out as soon as the payment clears; signed in another way, you connect your GitHub account from the dashboard with one click. Future releases land in the same repository — add it as a remote and pull.

Stripe or Creem?

Either, and both at once. The webhook routes only verify, deduplicate and translate a payload into one internal event; features never import a provider client. PAYMENT_PROVIDER picks who takes new checkouts, and existing subscriptions keep renewing wherever they started.

Why Cloudflare Workers and not a Node host?

Because D1 and R2 are bindings, not services with credentials: no connection string, no pool, no S3 keys, and local dev runs the same runtime as production. The trade is that workerd forbids some Node patterns — the template already works around the ones that matter, like runtime-eval MDX.

What does "every feature is deletable" actually mean?

Each optional feature is a directory plus a handful of one-line registrations — a schema barrel line, a handler import, a nav row. The /delete-feature skill knows the recipe for each, and a CI job runs every recipe on every pull request and fails if one has rotted.

What does it cost to run?

On a small app, close to nothing: Workers, D1 and R2 all have free tiers that cover early traffic, and the only always-on cost is your domain. Email and payments bill per use.

Your first deploy is an afternoon away.