A rigorous, opinionated ranking platform for chicken Caesar wraps. Every wrap is scored on five axes — chicken, sauce, integrity, balance, and value — and assigned a composite score and tier badge.
- Next.js (App Router, TypeScript)
- Supabase (Postgres, Auth, Storage)
- Tailwind CSS
- Vercel (deployment)
- Go to supabase.com and create a free account.
- Click New project, fill in name and password, choose a region close to you.
- Wait ~2 minutes for the project to provision.
- Go to Project Settings → API and copy:
- Project URL →
NEXT_PUBLIC_SUPABASE_URL - anon public key →
NEXT_PUBLIC_SUPABASE_ANON_KEY
- Project URL →
- In your Supabase project, go to SQL Editor.
- Open
supabase/migration.sqlfrom this repo. - Paste the entire file contents and click Run.
This creates all tables, RLS policies, the wrap_scores view, and the Storage buckets.
- In Supabase, go to Authentication → URL Configuration.
- Add your local dev URL to Site URL:
http://localhost:3000 - Add
http://localhost:3000/auth/callbackto Redirect URLs. - (For production, also add your Vercel URL to both.)
- Go to console.cloud.google.com.
- Create a project, enable the Places API and Maps JavaScript API.
- Create an API key and copy it →
NEXT_PUBLIC_GOOGLE_MAPS_API_KEY. - Restrict the key to your domain(s) when you deploy.
cp .env.local.example .env.localEdit .env.local and fill in the three values:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
NEXT_PUBLIC_GOOGLE_MAPS_API_KEY=your-google-maps-key
npm install
npm run devOpen http://localhost:3000.
- Push this repo to GitHub.
- Go to vercel.com, click Add New Project, and import your repo.
- In the Environment Variables section, add the same three variables from
.env.local. - Click Deploy.
- After deploy, go back to Supabase → Authentication → URL Configuration and add your Vercel URL (
https://your-app.vercel.app) to Site URL and Redirect URLs.
src/
app/ # Next.js App Router pages
page.tsx # Home (top-ranked wraps)
rankings/ # Full ranked list
submit/ # Submit a new wrap
wraps/[id]/ # Wrap detail page
review/ # Add a review
review/edit/ # Edit your review + manage photos
signin/ # Magic link sign in
auth/callback/ # Supabase auth callback
components/ # Shared UI components
lib/
actions/ # Server actions (auth, wraps, reviews, comments)
supabase/ # Supabase client (browser + server)
types.ts # TypeScript types
supabase/
migration.sql # Full database migration
- Map view of wrap locations
- City leaderboards
- Filtering by tier, city, chain
- User profiles and follow system
- Admin moderation tools
- Chain location grouping