All pages

Fast Forward Dev

The site you are reading is the product. There is one repository, nothing is generated out of it, and the storefront, the docs, the checkout and the dashboard are all running code you now own.

That has one consequence worth knowing before you start: every decision here is yours to overturn. docs/adr/ records why each one was made, including the options that were rejected, so you can tell a considered choice from an accident. Supersede them; do not obey them.

What is wired together

Identity is Clerk. Billing is hand-rolled on Stripe, because Clerk Billing does neither one-time payments nor multiple concurrent paid plans and this has to demonstrate both. Entitlement is derived from the price actually paid, read through a SQL view, and returned only by the api. Transactional mail is claimed atomically per subject, so a redelivered webhook never sends a second copy, without a separate queue or scheduler.

Stripe, Postgres and email integrations live in apps/api. Web holds a Clerk secret only for the web SDK's server-side identity handling. Optional PostHog product analytics is a public web integration.

Where to start

If you want it running, start at Install and run, work through the provider pages you need, then deploy.

If you want to know what you bought before you change it, start at Architecture and read the section in order.

If you already know and want a name or a number, everything exact is under Reference.

What is not here

Tests cover the money path. pnpm test runs the api's Vitest suite: webhook signature checks and the Entitlements a payment grants. pnpm check, pnpm typecheck and pnpm test are the gate, and the GitHub Actions workflow runs all three on every pull request.

No admin UI for defining offers, no plan column, and no field anywhere that says what somebody bought. Those absences are load-bearing, and Entitlements explains what they buy.

No multi-currency, no organizations, no seats. Each of those is a deliberate edit rather than a missing feature, and the pages that touch them say where the edit starts.

  1. 01SetupConfigure the services the boilerplate uses, then get it running locally and deployed.
  2. 02How it worksThe parts of the boilerplate to understand before changing them: architecture, identity, billing, entitlement, and webhooks.
  3. 03ReferenceExact names and values: environment variables, api routes, database tables, the pricing catalog, and the component gallery.
  4. 04ExtendingRecipes for adding your own routes, tables, plans, emails, and languages, and for replacing what is specific to FFD.

Updated