Getting started

Cinderblock is a forkable template. The fork-to-green flow takes under 5 minutes on a warm Docker cache; first run is 10–15 minutes while supabase start pulls images.

Prerequisites

  • Node 22 + npm
  • Docker (for the local Supabase stack)
  • A Supabase Cloud project on the Pro plan (the demo deployment uses one; forkers create their own)

1 — Fork the template

Click Use this template on github.com/philiprehberger/cinderblock and clone your fork.

2 — Run the post-clone setup

cd cinderblock
npm install
npx supabase start          # ~10-15min cold cache, ~45s warm
./scripts/setup-roles.sh    # generates cb_audit_writer + cb_impersonator passwords
npx supabase test db        # 74 tests should pass
npm run dev                 # http://localhost:3000

3 — Wire Stripe (optional)

The billing UI works in "not configured" mode without keys. To exercise Checkout / Customer Portal end-to-end:

STRIPE_SECRET_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
STRIPE_PRICE_TEAM=price_...
STRIPE_PRICE_BUSINESS=price_...

See Stripe wiring for the full setup, including the webhook endpoint.

4 — Deploy to your own Supabase project

supabase link to your Cloud project, then supabase db push applies the migrations. The Cinderblock deployment uses EC2 + Apache + PM2; see Swap to Vercel if you prefer the Vercel path — the stack is portable.