2.6 KiB
2.6 KiB
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 /logincon{"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 ^14para navegación (ShellRoute con sidebar)http ^1.2para llamadas a la APIshared_preferences ^2.3para 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
- Leer
TAREAS.mdpara ver qué está hecho y qué sigue - Para cada módulo nuevo: revisar el PHP original en
/home/conejo/private_html/sportscenter/sc-admin/ - Preguntar al usuario el endpoint de la API antes de codificar
- 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