One curly quote doubled our Worker memory.
A single character above U+00FF makes V8 store the whole bundle as two-byte text — 94 MB of a 128 MB isolate. A guard now fails the deploy and prints where it came from.
Cookie choices
Necessary cookies support login, payments, and security.
Optional analytics help us improve the product.
Current analytics: not set · Cookie Policy
A production template extracted from AI SaaS products that take real payments: login, Stripe subscriptions and credit packs, an admin that shows where revenue comes from, and ops alerts in your team chat — plus a playbook of every pitfall that cost us money.
One-time payment · lifetime updates via git pull · unlimited projects
# from clone to production $ git clone git@github.com:QCRAO-SHIP/starter.git $ npm run db:push # schema → Postgres $ npm run db:sql # grants, triggers $ npm run worker:deploy $ npm run cf:deploy ✓ Latin-1 bundle guard passed ✓ asset history merged — open tabs keep working ✓ deployed
Keep the parts every paid product needs; spend your week on the part only you can build.
Google and GitHub sign-in, the device and country each account signed up from, and a free-credit guard that counts accounts per network that actually received credits.
Stripe subscriptions, yearly plans refilled monthly, and one-time packs on an append-only credit ledger where a unique transaction number makes every charge, grant and refund idempotent.
Users, orders, revenue, paying users, cohorts, funnels, landing pages and first-touch attribution — which source and page each paying customer came from.
Signups, payments (with where the buyer came from) and failed charges post to a WeCom group as they happen; a cron checks production logs every 10 minutes and alerts on any error.
Slow work runs in a Cloudflare Workflow, charged in the same transaction as its job row; a sweeper refunds anything that never reports back.
Locale routing, hreflang metadata and per-surface dictionaries. Legal pages, contact, changelog and unsubscribe are already written.
Each one happened in production. Each fix is in the code, with a note saying why — so it doesn't happen to you. The full playbook ships in the repository.
A single character above U+00FF makes V8 store the whole bundle as two-byte text — 94 MB of a 128 MB isolate. A guard now fails the deploy and prints where it came from.
Workflows rerun a whole step after a crash, and per-task APIs bill both submissions. Submissions are now remembered per workflow, step and attempt.
Any request can lose its isolate with ~30s notice. Work over ~20s is a job: row + charge in one transaction, a callback to finish, a sweeper to refund.
Old JavaScript chunks vanished and Turbopack reported it as React error #130. Deploys now keep previous chunks and fall back to an archive.
Cancel-in-progress plus path filters can skip every deploy job and still pass. Check job-level conclusions, not the run.
Counting signups per IP let rejected accounts lock the door. The limit counts accounts that actually received free credits.
git clone in a minute.We need your GitHub username to give you access. Signed in with Google? Connect GitHub on your account page.
Card, Apple Pay or Google Pay. No subscription to cancel.
GitHub emails you an invite to the private repository. Accept it, clone, and git pull whenever we ship a fix.
The template keeps changing as we run our own sites on it. Your purchase covers all of it, for as long as the repository exists.
Full refund until you accept the GitHub invite — see the refund policy.
Secure payment by Stripe · plus sales tax where it applies
Read access to the private GitHub repository that holds the template, including its docs and playbook. Updates arrive as commits; you pull them into your projects when you want them.
Yes. Build as many products as you like, for yourself or for clients. You may not resell or republish the template itself.
Yes, but connect your GitHub account first — the invite goes to a GitHub username.
Your account page shows the invite status and a Resend button. You can also open the invitation directly on GitHub.
Yes, in full, until you accept the GitHub invite. After that you have the code, so we can no longer take it back.