# Frontend Migration Cutover Notes ## Route Ownership - React owns browser-facing admin routes under `/admin/*` and student routes under `/student/*`. - FastAPI owns JSON APIs under `/api/v1/*`. - The legacy Python admin remains available as fallback until React parity smoke tests are accepted. ## Local Development - React Vite dev server: `http://127.0.0.1:5173` - Backend API root: `http://localhost:8000/api/v1` - Frontend API config should keep `VITE_API_URL` pointed at the FastAPI v1 root. - System-admin tokens may be global with `website_id: null`; React sends `X-Website-ID` only when the website selector has an explicit website. ## Cutover Guardrails - Do not disable the legacy admin until React covers import, snapshot promotion, question detail, AI review, reports, normalization, settings, and student session smoke tests. - Avoid adding new frontend calls to legacy or nonexistent API paths. New React API calls should map to OpenAPI paths. - Website-scoped React Query keys must include the selected website ID and should be gated until a website is selected. - Any page rendering question HTML must use the shared `SafeHtml` component. ## Smoke Coverage Used During Migration Fix - Admin dashboard - Global questions list and question detail - Data overview hierarchy - AI review, variants, and run history - Excel import - Tryout questions, snapshot promotion, settings, normalization, and AI workspace - Student tryout list, session start, next item, answer submission, completion, and result summary