Next.js 15 + Supabase implementation of the Props email console. The legacy Meteor codebase has been removed so this repository now mirrors the Vercel deploy target one-to-one.
- Next.js App Router + Tailwind for the dashboard UI
- Supabase Postgres/Auth/Storage for drafts, lists, and attachments
- Amazon SES (SMTP) for outbound mail; future SNS webhooks will feed stats back into Supabase
- Copy
.env.exampleto.env.localand fill in Supabase + SES values. - Run the dev server:
npm install npm run dev
- Open http://localhost:3000 – root redirects to
/email/composer.
NEXT_PUBLIC_SUPABASE_URL,NEXT_PUBLIC_SUPABASE_ANON_KEY– Supabase project settings › APISUPABASE_SERVICE_ROLE_KEY,SUPABASE_JWT_SECRET– used by Supabase migrations / server actionsAWS_SES_SMTP_USERNAME,AWS_SES_SMTP_PASSWORD,AWS_SES_SMTP_ENDPOINT,AWS_SES_SMTP_PORT– SMTP credentials for SESAPP_BASE_URL– e.g.https://props-v2.vercel.appfor app-generated links and internal callbacks
SQL schema lives in supabase/schema.sql. Apply it to your Supabase instance, enable Row Level Security, and create policies restricting tables to the single admin role.
- Create a new Vercel project pointing at the repo root (auto-detected as Next.js).
- Add the env vars above in the Vercel dashboard.
- Deploy without any Vercel Cron jobs. Queued emails are reviewed and sent manually from the Queue page.
- (Optional) Wire SES → SNS → Supabase to capture engagement metrics.
src/app/(auth)– passwordless login screen for email sign-in codessrc/app/(dashboard)– Composer, Schedule, Analytics, Lists, Users tabssrc/lib– env helper, Supabase factories, SES SMTP clientsupabase/schema.sql– Postgres schemadocs/– roadmap, data model, and the legacy README for reference
- Wire Supabase auth session into layouts/middleware for route protection
- Expand queue review tooling and delivery safeguards
- Expand SES deliverability reporting and large-send operator runbooks
- Style tweaks to perfectly match legacy Props UI