# Estructura inicial (basada en Contingencia + Shield)

**Fecha:** 2026-07-23  
**Referencia:** `/Users/osanchez/Developer/contingencia`

## Mapeo de estructura

| Contingencia | soporteHolanda | Ruta | Acceso |
|--------------|----------------|------|--------|
| Formulario público (`form.php`) | `app/Views/form.php` | `GET /` | Público |
| Login (`login.php` + Shield) | `app/Views/login.php` | `GET/POST /login` | Público |
| Dashboard (`dashboard.php` + `layout.php`) | `app/Views/dashboard.php` + `layout.php` | `GET /dashboard` | Sesión (`filter: session`) |

## Auth

- Paquete: `codeigniter4/shield` ^1.3 (instalado **v1.4.0**)
- Dependencia: `codeigniter4/settings`
- Config: `Auth.php`, `AuthGroups.php`, `AuthToken.php`
- Helpers autoload: `auth`, `setting`
- CSRF: protección por **session** + filtro global `csrf`
- Registro de usuarios: **deshabilitado** (`allowRegistration = false`)
- Tras login: redirección a `/dashboard`
- Vista de login personalizada: `app/Views/login.php`

## Comandos

```bash
# Migraciones (dentro del contenedor si usas Damp)
docker exec soporteholanda php spark migrate --all

# Usuario admin de ejemplo (si aún no existe)
docker exec -it soporteholanda php spark shield:user create -n admin -e admin@soporteholanda.local -g superadmin

# CSS
npm run dev   # o npm run build
```

## Diferencias respecto a Contingencia

1. UI con **Tailwind CSS** (no template Vuexy/Bootstrap + assets locales).
2. Formulario genérico de **solicitud de soporte** (no pedidos de helados / items).
3. Dashboard con placeholders hasta conectar el dominio de negocio.
4. Marca Holanda (`logo_holanda_nobg.png`, `app.title`).
