# recordaLexia App web familiar para niños con TDAH: muestra cada mañana, en una tablet en modo kiosko, qué material llevar al cole y qué rutinas hacer por la tarde, con gamificación por monedas y tienda de recompensas. Multi-niño y bilingüe ES/CA. ## Stack - Frontend: Angular 19 (standalone components + signals), TypeScript estricto, i18n ES/CA. - Backend: Java 21, Spring Boot 3.x, Gradle 8, Spring Web + Data JPA + Security. - Datos: PostgreSQL con Liquibase. - Empaquetado: Docker (multi-stage) + docker-compose (postgres + backend + Nginx). - Contexto doméstico/homelab. Ejecución LOCAL. Sin nube ni infraestructura corporativa. ## Estructura Monorepo: - `frontend/` — Angular 19. - `backend/` — Spring Boot 3 + Gradle. - `docs/` — specs de referencia (prompts de Design, backend y director). Son contrato. - `artifacts/` — diseño de referencia exportado de Claude Design (HTML). - `app-de-rutinas-visuales-para-tdah/` — handoff original de Claude Design (solo lectura). - `docker-compose.yml` en la raíz. ## Comandos principales - Backend: `./gradlew bootRun` (local), `./gradlew test`, `./gradlew build`. - Frontend: `npm start` (ng serve), `npm test`, `npm run build`. - Stack completo: `docker-compose up --build`. ## Convenciones - Idioma de trabajo y de los comentarios de código: español de España. Comenta siempre la lógica de negocio. - Toda la UI es bilingüe ES/CA. Los textos visibles (materiales, actividades, rutinas, premios, eventos) se almacenan con `labelEs` y `labelCa`. - Iconografía = emojis (decisión del diseño). El campo `icon` es un string emoji. No introducir librerías de iconos en la v1. - Design tokens fijos (del handoff): tipografías Fredoka (títulos/labels) y Nunito (texto); paleta de acento `#F2A65A`, `#5B8DEF`, `#A78BD0`, `#7FBF6B`, `#5BC0BE`, `#F4C95D`, `#EC8FA4`; texto `#2A3142`; monedas pill `#FFF6E0`/`#C7912B`. Centralizar en un único fichero de tokens y no esparcir colores por el código. - Backend por capas (controller / service / repository / domain), dominio aislado de JPA donde sea razonable. Exponer DTOs, nunca entidades. - Frontend: componentes pequeños y reutilizables; estado con signals; HTTP tipado contra DTOs alineados con el backend (en especial `GET /api/children/{id}/today`). - Zona horaria fija Europe/Madrid para decidir qué es "hoy". - Tests: lógica de generación del día, marcado/monedas (incl. bonos) y canje. ## Restricciones - NO usar Keycloak, Gravitee, Camunda, Kubernetes ni Jenkins en esta fase. La auth es ligera (kiosko sin fricción para el niño + PIN configurable para padres). - NO portar el "dock" inferior de demo del prototipo (botones A/B, idioma, reiniciar, vacío) a producción: esas funciones son preferencias reales del niño. - NO borrar histórico de tareas ni de canjes al pasar el día (se conserva). - NO hardcodear el PIN ni los parámetros de gamificación: son configurables. - NO incrustar el HTML del handoff; reconstruir los componentes en Angular. - Conservar el modo Foco (una tarea a la vez): es clave para TDAH. ## Referencias El detalle completo de UX, dominio y plan por fases está en `docs/`: - `docs/prompt-claude-code-recordalexia-director.md` (director, conduce el trabajo). - `docs/prompt-claude-code-backend-rutinas-tdah.md` (dominio y API). - `docs/prompt-claude-design-rutinas-tdah.md` (UX y pantallas).