App web familiar de rutinas visuales para niños con TDAH: muestra cada día el material del cole y las rutinas de tarde, con gamificación por monedas y tienda de recompensas. Multi-niño y bilingüe ES/CA. Uso doméstico/homelab. Backend (Spring Boot 3.5 / Java 21 / Gradle): - Dominio por capas, PostgreSQL + Liquibase, datos semilla. - API REST con DTOs: /today, toggle con monedas y bonos de bloque/día, monedero, tienda/canje, ajustes y CRUD del panel de padres. - Seguridad ligera por PIN (BCrypt + sesion en memoria), sin Keycloak. - Tests JUnit: generacion del dia, monedas/bonos con reversion, canje, seguridad. Frontend (Angular 19, standalone + signals): - Perfiles, Home (Tablero y Foco), Tienda y panel de padres (5 pestañas). - Tipografia OpenDyslexic conmutable (accesibilidad), i18n ES/CA, TTS y sonido. - Tokens de diseño fieles al handoff (paleta, animaciones, monedas voladoras). Empaquetado: - Docker multi-stage + docker-compose (PostgreSQL + backend + Nginx). - Decisiones de arquitectura documentadas en docs/adr.
67 lines
3.3 KiB
Markdown
67 lines
3.3 KiB
Markdown
# 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).
|