Waitlist Kit
A real waitlist page. In an hour. With referrals.
Email capture, double opt-in, referral tracking, and an admin dashboard that actually shows you what's happening. Built to ship in one sitting.
Already wired, so you can skip to features.
Email capture with double opt-in
Collect, confirm, and track. Nobody on your list should be there by accident.
Referral tracking
Each subscriber gets a unique link. We count, you rank, you reward.
Admin dashboard
See signups, referrals, sources, and export to CSV. Password-protected.
Install
~60 secondsnpx create-bitroot@latest my-waitlist --kit waitlist-kit
cd my-waitlist
cp .env.example .env.local
npm run devEvery dependency has a reason.
- Next.js 16Static landing + API routes in one project.
- SupabasePostgres + row-level security. Free tier is generous.
- ResendConfirmation + referral emails.
Here's every env var, labeled.
Copy to .env.local. The included first-run script refuses to boot if any of them are missing — you'll know immediately.
NEXT_PUBLIC_APP_URL=http://localhost:3000
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_KEY=eyJhbG...
RESEND_API_KEY=re_...
ADMIN_PASSWORD=change-meZero to first deploy.
This is the exact sequence we'd run from a blank directory. Steps are reproducible — if one fails, we want to know.
1. Create a Supabase project
Go to supabase.com, new project, copy the URL and service key. Run our seed script to create the subscribers table.
npm run db:seed2. Wire up Resend
Verify your sending domain (5 min), drop the API key into .env.local, and ship.
The stuff that ate our afternoons.
Things we'd have wanted a heads-up on. Logged as we hit them.
- !Supabase RLS is ON by default — if the admin dashboard shows zero rows, check you're using the service key, not the anon key.
- !Referral codes need to be URL-safe. We use nanoid, not uuid.
If you need scheduling, A/B testing, or a full landing page builder, this is too lean. This kit is one job: collect emails well.
Got stuck, or want this shipped end-to-end for you? bitroot.club builds custom products for founders. →