65 lines
2.6 KiB
Markdown
65 lines
2.6 KiB
Markdown
|
|
# 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`
|