depor_os/CLAUDE.md

65 lines
2.6 KiB
Markdown
Raw Normal View History

2026-03-18 11:47:06 +00:00
# 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`