# DeporOS — Guía para Claude ## Qué es este proyecto Port del panel de administración PHP (`sc-admin`) de un club deportivo a Flutter. **Solo el panel de administración** (uso interno), NO la parte pública. ## Rutas clave | Recurso | Ruta | |---|---| | PHP original (referencia) | `/home/conejo/private_html/sportscenter/sc-admin/` | | PHP sidebar (menú) | `/home/conejo/private_html/sportscenter/sc-admin/themes/modern/sidebar.php` | | Flutter (este proyecto) | `/home/conejo/public_html/depor_os/` | | Estado de tareas | `/home/conejo/public_html/depor_os/TAREAS.md` | ## API backend - Base URL: `https://reservas.madriguera.me/2.0` - Auth: `POST /login` con `{"email": "...", "password": "..."}` → `{"access_token": "..."}` - Token Bearer, guardado en SharedPreferences. Sin expiración, sin endpoint de logout. ## Stack técnico - Flutter con Material 3, seed color `#1565C0` (azul) - `go_router ^14` para navegación (ShellRoute con sidebar) - `http ^1.2` para llamadas a la API - `shared_preferences ^2.3` para persistir el token - Soporte light/dark mode ## Estructura Flutter (`lib/`) ``` core/ constants.dart ← kApiBase router.dart ← GoRouter + ShellRoute, todas las rutas models/ nav_item.dart ← modelo NavItem (label, icon, route, children) navigation/ app_navigation.dart ← árbol completo del sidebar (kAdminNavItems) services/ auth_service.dart ← login(), logout(), getToken(), isLoggedIn() widgets/ app_shell.dart ← layout responsive: sidebar fijo ≥800px / drawer <800px sidebar/ sidebar_widget.dart ← header + scroll nav + footer logout nav_item_tile.dart ← tiles simples y grupos expandibles (ExpansionTile) screens/ login/login_screen.dart dashboard/dashboard_screen.dart ← 4 accesos rápidos en grid placeholder_screen.dart ← pantalla temporal para módulos pendientes ``` ## Cómo retomar trabajo 1. Leer `TAREAS.md` para ver qué está hecho y qué sigue 2. Para cada módulo nuevo: revisar el PHP original en `/home/conejo/private_html/sportscenter/sc-admin/` 3. Preguntar al usuario el endpoint de la API antes de codificar 4. Al terminar una tarea: actualizar `TAREAS.md` ## Plataformas y responsive - **Objetivo principal:** web + tablet Android landscape - **Breakpoint sidebar:** 800px (permanente) / <800px (drawer) - **Grid dashboard:** ≥900px = 4 col / resto = 2 col - Preparado para móvil aunque no es prioritario ## Convenciones - UI en español - No usar Scaffold en pantallas hijas del ShellRoute (ya lo provee AppShell) - Pantallas aún no implementadas usan `PlaceholderScreen`