A moderated community and event-voting platform built with Next.js, TypeScript, Netlify, and Supabase.
apps/web: the only web application, built with the Next.js App Router.packages/core: shared types and upload validation constants.supabase/migrations: database schema, RLS policies, Storage policies, and RPCs.
- Create a Supabase project and add its URL and Publishable Key to
apps/web/.env.local. - In Supabase Dashboard, open SQL Editor, create a new query, and run the complete contents of
supabase/SQL_EDITOR_CATCH_UP.sqlto apply the later database upgrades to an existing installation. - In Supabase Auth, enable email OTP/Magic Link and add both local and production callback URLs.
- Promote the first operator after their first login:
update public.profiles set role = 'super_admin' where id = 'USER_UUID';- Run
pnpm dev:web.
Create one Netlify site from this repository. The root netlify.toml builds the Next.js application. Configure the public Supabase environment variables in the site's Netlify settings.
Do not expose a Supabase service-role key in the browser application.