kit·starter·updated 2026-07-13

Waitlist Kit

A real waitlist page. In an hour. With referrals.

Next.jsResendSupabase

Email capture, double opt-in, referral tracking, and an admin dashboard that actually shows you what's happening. Built to ship in one sitting.

Stack

  • Next.js 16 — Static landing + API routes in one project.
  • Supabase — Postgres + row-level security. Free tier is generous.
  • Resend — Confirmation + referral emails.

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

npx create-bitroot@latest my-waitlist --kit waitlist-kit
cd my-waitlist
cp .env.example .env.local
npm run dev

Environment

.env.example
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-me

Walkthrough

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:seed

2. Wire up Resend

Verify your sending domain (5 min), drop the API key into .env.local, and ship.

Gotchas

  • 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.

Why not just build it yourself?

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.

Links

GitHub · Live demo

License: MIT

Got stuck, or want this shipped end-to-end for you? bitroot.club builds custom products for founders. →