Private swimming lessons website with an integrated booking system.
npm install
npm run devOpen http://localhost:3000.
- Create a free project at supabase.com
- Go to SQL Editor and run the contents of
supabase-schema.sql - Go to Settings → API and copy your URL and anon key
- Update
.env.local:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
- To create admin accounts, go to Authentication → Users and create users for Lukaah and Estee
- Create a free account at resend.com
- Get your API key from the dashboard
- Update
.env.local:
RESEND_API_KEY=re_your_api_key
- Push to GitHub
- Import in vercel.com
- Add the environment variables from
.env.local - Deploy
The site is pre-wired for Stripe. To enable:
npm install stripe @stripe/stripe-js- Set
FEATURES.stripeEnabled = trueinsrc/lib/constants.ts - Add Stripe keys to
.env.local - Uncomment the Stripe logic in
src/app/api/create-checkout/route.ts
- / — Home page
- /about — About, philosophy, instructor bios
- /book — Booking wizard
- /faq — Frequently asked questions
- /contact — Contact form
- /admin — Dashboard (protected, requires login)
- Next.js 15 (App Router)
- Tailwind CSS v4
- Supabase (Postgres + Auth)
- Resend (email)
- Framer Motion (animations)
- ics (calendar file generation)