NFL Playoff Bracket Pool for friends. Fill out your bracket, pay your entry, compete for glory.
- Framework: Nuxt 4.2
- UI: NuxtUI v4 + Tailwind CSS v4
- Database: Supabase (Postgres + Auth)
- Payments: PayPal JS SDK (PayPal + Venmo)
- Deployment: Vercel
- Node.js 18+
- npm
- Supabase account
- PayPal Developer account (for payments)
- Clone and install dependencies
cd homefield
npm install- Set up Supabase
- Create a new Supabase project
- Run the migrations in
supabase/migrations/in order - Copy your project URL and anon key
- Configure environment variables
cp .env.example .envEdit .env with your credentials:
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-anon-key
PAYPAL_CLIENT_ID=your-paypal-client-id
PAYPAL_CLIENT_SECRET=your-paypal-client-secret
- Run the development server
npm run devVisit http://localhost:3000
homefield/
├── app/
│ ├── pages/ # Route pages
│ ├── components/ # Vue components
│ ├── layouts/ # Page layouts
│ ├── composables/ # Shared composables
│ └── middleware/ # Route middleware
├── server/
│ ├── api/ # API routes
│ └── utils/ # Server utilities
├── supabase/
│ └── migrations/ # SQL migrations
├── public/ # Static assets
└── assets/
└── css/ # Global styles
| Round | Points |
|---|---|
| Wild Card | 1 pt |
| Divisional | 2 pts |
| Conference | 4 pts |
| Super Bowl | 8 pts |
Maximum possible score: 30 points
- Closest to actual Super Bowl total points
- Closest to actual Super Bowl total yards
- Magic link authentication
- Profile setup
- Bracket list view
- Visual bracket editor
- Cascading pick logic
- Tiebreaker inputs
- PayPal/Venmo checkout
- Leaderboard with scoring
- Admin panel
- ESPN API integration
MIT