Mobile-first court rental + membership web app for pickleball (Figma UI/UX → production).
Live: https://bapdagreat.github.io/rally-point-web/
Vite · React · TypeScript · Tailwind v4 · HashRouter · Supabase (demo fallback)
| Area | What’s in |
|---|---|
| Auth | Login (member / staff / admin) |
| Member | Book court · Open play · QR pass · Pay · Messages · Profile |
| Staff | Check-in (QR) · Schedule board · Open play · Courts |
| Admin | Home KPIs · Floor ops · Board · Open play · Bookings · Members · Users |
| Public | TV board /#/board/tv |
| Brand | Exact Figma rpg_logo (RALLY POINT GENSAN) |
cd Rally-Point-web
npm install
npm run dev| Role | Password | |
|---|---|---|
| Admin | admin@rallypoint.local | admin123 |
| Staff | staff@rallypoint.local | staff123 |
| Member | member@rallypoint.local | member123 |
(Demo only when .env has no Supabase keys.)
- Run SQL (in order):
supabase/migrations/001_rally_point.sqlsupabase/migrations/002_bookings.sqlsupabase/migrations/003_open_play_qr.sqlsupabase/migrations/004_member_signup.sql
- Members join themselves on the login page (“Join as member”).
- Staff / admin — create manually in Supabase Auth, then:
Do not use the public join form for staff/admin.
update public.profiles set role = 'admin' where email = 'you@club.com'; -- or role = 'staff'
- Auth → optional: turn off “Confirm email” for instant join, or leave on and members confirm first.
.env:
VITE_SUPABASE_URL=https://YOUR.supabase.co
VITE_SUPABASE_ANON_KEY=your_publishable_keyNever put service_role in the frontend.
| Role | Access |
|---|---|
| Member | Own home, book court, open play, QR pass, pay, messages, profile. No desk ops, all-members list, revenue, user admin. |
| Staff | Check-in, schedule board, open-play manage, courts, bookings desk. |
| Admin | Everything staff has + members CRUD, floor ops, transactions, user list, KPIs. |
npm run build
npx gh-pages -d dist
# or: npm run deploySite: https://bapdagreat.github.io/rally-point-web/
- Plain English, large type, ≥52px taps (mixed-age players)
- Phone + desktop layouts
- Exact Figma logo assets in
public/logo.png+logo-mark.png
npm run dev— localnpm run build— productionnpm run deploy— build + gh-pagesnpm run preview— preview dist