Scratchpad Waitlist
Waitlist Kit β Scratchpad
A lightweight wait-list template (Next 14 Γ Tailwind Γ shadcn/ui Γ Supabase).
Background & Motivation
Makers often need nothing more than a "coming-soon + join the wait-list" page. SaaS offerings charge monthly, and DIY setups are repetitive. The goal of Waitlist Kit is to ship a one-click-deploy repo that anyone can fork or buy, press Deploy to Vercel, add Supabase keys, tweak content.json
, and be live in minutes.
Design pillars
β’ Zero-config deploy (Vercel Γ Supabase integration runs SQL migrations automatically).
β’ Password-less auth by default (email magic-link). Google OAuth can be enabled later by dropping creds into Supabase.
β’ Public list view (names optionally anonymised) β never expose email.
β’ Styling: Tailwind utility classes + shadcn/ui β no custom CSS.
β’ Low-code audience: minimal edits, clear instructions, MIT-licensed template.
For the full spec & packaging details see project-plan.mdx
in the same folder.
Master Task Board (single source of truth)
Section keys
- β Done: completed tasks verified in main branch.
- π‘ In-progress: actively worked on right now.
- β³ Todo: next agreed tasks, scheduled but not started.
- ποΈ Backlog: parked ideas / blocked items for future review.
- π Next Steps: To release public version
β Done
- Task 01 Repo skeleton
- Task 02 Tailwind + shadcn/ui baseline
- Task 03 Supabase helpers (client / server / middleware)
- Task 04 Initial SQL migration + RLS (insert / select)
- Task 05 Landing page (hero, modal trigger, copy from
content.json
) - Task 06 Magic-link auth series complete (A-F inc. middleware) β
- Task 07A-F Wait-list modal form (fields, action, round-trip smoke-test) β
- Task 08 Public wait-list list component verified & polished β
- Task 08a Landing-page static demo section β
- Task 09b Deploy button β minimal URL shows env-var wizard β
- Hot-fix Anon-key fallback for public list (2025-05-27)
- Task 09a Sync Supabase dashboard migrations back into
supabase/migrations/
β - Task 10b ENV vars + README snippet β
- Task 10c Supabase SMTP wiring β
- Task 10d Welcome e-mail component & server action β
- Task 10e DX / packaging docs + smoke-test β
- Task 10f Final QA tweaks (welcome email flag, doc patch) β
- Task 09c Final packaging: README polish, repo badges, MIT licence text, helper scripts β
- Copy Update Landing-page product name, hero subtitle (Resend), footer credits, removed "Next steps" section β
- Copy Update Waitlist headers & spacing tweaks: centred header, reduced waitlist top margin (mt-8 β mt-4) and hero bottom padding (py-16 β pt-16 pb-8) β
π‘ In-progress
(empty currently)
β³ Todo
- Go through the app step by step for small UX and copy changes to get it ready for No Bad Parts Landing (ignore polish for public version as taking too much time, everything else moves to the backlog).
ποΈ Backlog
-
Profile photos & join reason follow-ups
- Ranking mechanic requires further QA β current implementation sets negative ranks but list reordering not yet reliable.
- Investigate promote endpoint ordering bug (see discussion 2025-06-02).
- Tests & docs outstanding.
- Status:
- Task 11 Profile photos & join reason
- T11A DB + storage foundations (
avatar_url
,join_reason
; avatars bucket) β reuse storage policy from Sunni waitlist-app. T11B Fallback avatar logic (initial letter circle, anon-animal via CDN) β port helper logic from Sunni code.βT11C Waitlist table UI update (Avatar component).βT11D Profile completion flow (photo upload card β reason card).β- T11E UX polish & ranking bonus
E1 DB migration: addβrank
INTEGER DEFAULT NULL, index on(rank, created_at)
.E2 List query: order byβcoalesce(rank, 2147483647)
, thencreated_at
.E3 Bonus helper (rank bump endpoint)π‘ implemented β needs QA.- E4 Photo & reason flows call the helper β
- E5 UI tweaks (layout, dynamic copy, highlight) β
- E6 Tests & docs.
-
Review the original template repo for helper-file ideas to possibly port later (low priority).
-
Walk through the README as a first-time user, note friction points and patch.
π Next Steps (release checklist)
- Run
pnpm lint && pnpm build
locally β both should pass without error. - Tag v1.0.0 and push to GitHub.
- Publish the template or send to marketplace.
- Celebrate π₯³
Ensure Vercel deploy wizard now pulls our template, user to smoke-test.
Decisions & Reference
- Styling: Tailwind utilities + shadcn/ui components only; no bespoke CSS without warning.
- Auth: email magic-link only (Supabase
auth.signInWithOtp
). - Privacy: never expose user email publicly;
waitlist_public
view omits it; anon role only sees that view. - DB idempotency: Supabase Cloud (PG 15) lacks
CREATE POLICY IF NOT EXISTS
; wrap inDO $$ β¦
when needed.
Changelog (chronological history)
2025-05-29
- Middleware QA passed; Task 06E complete, closing Task-06 series.
- Modal smoke-test succeeded; Task 07F complete.
- Public list verified; Task 08 complete.
- Landing-page static demo added; Task 08a complete.
2025-05-28
- Planning session: reviewed outstanding items, confirmed Task 08 (public wait-list verification) is next, and outlined step-by-step plan.
2025-05-27
- End-of-day checkpoint β list API fixed (anon-key fallback); list component implemented; scratchpad reorganised.
- Hot-fix: fallback to anon key (
utils/supabase/admin.ts
). - Repo sync to GitHub, port 3010 dev server running.
2025-05-26
- Snapshot commit "Clean Start" β repo + .cursor scaffold.
- Cloned reference repo
signup/
for inspection. - Landing page hero built, modal integration planned.
- Task-06/07 clarifications received (OTP-only auth, modal fields, tracking).
- Sub-task progress: 06A-B done, 07A-E implemented.
2025-05-31
- Task 09a initiated β running
supabase db diff
to capture latest schema into new migration file. - Task 09a completed β migration file
004_schema_sync_20250531.sql
generated from remote DB.
2025-06-01
- Hot-fix: Added
suppressHydrationWarning
to<body>
inapp/layout.tsx
to silence hydration mismatch caused by next-themes body style attribute.
2025-06-02
- Removed obsolete
email-plan.md
after Task-10 completion.
2025-06-05
- Added "Freeze & Duplicate Quick Checklist" doc (
pages/02-developer-docs/waitlist-freeze-duplicate.md
) to help park the template and fork a personal copy.
Open Questions / Help Needed
(none right now)