Context
Authentication/verification currently uses an email OTP flow sent via Resend from Next.js serverless routes:
apps/web/app/api/waitlist/submit/route.ts
apps/web/app/api/waitlist/request-otp/route.ts
apps/web/app/api/waitlist/verify/route.ts
- OTP fields on
waitlist_submissions (otp, otp_expires_at)
We are replacing this with Google Sign-In via Supabase Auth (Google provider). This is frontend + Supabase configuration — not part of the NestJS backend rollout (#135–#139).
Scope
- Enable the Google provider in Supabase Auth (OAuth client, redirect URLs, env config).
- Add a Sign in with Google flow in
apps/web (sign-in UI + session handling via Supabase Auth).
- Migrate the waitlist / early-access verification to use the Google identity instead of email OTP.
- Remove the OTP flow: delete the
request-otp / verify routes (and OTP usage in submit), remove the Resend OTP calls, and drop the otp / otp_expires_at columns (migration).
- Keep the access code flow (
access_codes) as-is unless it overlaps.
Acceptance criteria
Relationship to other work
Context
Authentication/verification currently uses an email OTP flow sent via Resend from Next.js serverless routes:
apps/web/app/api/waitlist/submit/route.tsapps/web/app/api/waitlist/request-otp/route.tsapps/web/app/api/waitlist/verify/route.tswaitlist_submissions(otp,otp_expires_at)We are replacing this with Google Sign-In via Supabase Auth (Google provider). This is frontend + Supabase configuration — not part of the NestJS backend rollout (#135–#139).
Scope
apps/web(sign-in UI + session handling via Supabase Auth).request-otp/verifyroutes (and OTP usage insubmit), remove the Resend OTP calls, and drop theotp/otp_expires_atcolumns (migration).access_codes) as-is unless it overlaps.Acceptance criteria
npm run type-check/biome:check/buildpass with no dangling references to the removed OTP code.Relationship to other work