# Classes Subroute Plan ## Goal - Plan the first non-admin authenticated Ballbox surface for the student-facing `class discovery + request` wedge. ## Route Recommendation - New top-level surface: `/classes` - Keep it outside `/admin` - `/classes/me` now exists as a lightweight read-only follow-up surface for submitted requests - Reserve future operator area under `/coaches` ## Auth Recommendation - Add a new simple session for `/classes/*` - Cookie: `ballbox_student_session` - Env: `BALLBOX_STUDENT_PASSWORD` - Keep this separate from: - `/admin` -> `ballbox_admin_session` - `/coaches` -> coach/club demo sessions ## Wedge - Student-facing discovery of coach-led classes or coach availability - Main CTA: `solicitar` - Product job: reduce 1:N coach coordination by letting students self-serve the first step ## What Ballbox Can Build Now ### 1. Authenticated student entry - `/classes` - list offers or available class options - backed by Ballbox-local coaches plus ATC public-read availability context ### 2. Offer detail - `/classes/[offerId]` - show: - coach - venue / club - date/time - slot / duration / price context when available - request CTA ### 3. Request flow - authenticated student can submit `solicitar` - Ballbox stores the request locally - no ATC write needed for v0 ### 4. Personal follow-up area - `/classes/me` - user can review submitted requests and their current local status ## What ATC Gives Us Right Now - public-read availability by sportclub and query - public-read club/court/slot/price context - enough to avoid inventing supply for the UI ## What Ballbox Must Own Locally - coaches/professors identity and profile - class offers / coach availability offers - student requests - request state machine ## v0 Scope ### Pages - `/classes` - `/classes/[offerId]` - `/classes/me` (read-only follow-up) ### APIs - student session login/logout - offers list - offer detail - request create ### Data - mock/demo coaches in Ballbox DB - public ATC availability context only; no ATC teacher dependency ## Suggested UX Positioning - not "booking engine" - not "sports admin" - yes "elegi un horario y solicita tu clase" ## Next Step After This Plan - implement RFC `docs/classes-mvp-rfc.md`