Files
recordalexia/docs/prompt-claude-code-recordalexia-director.md
Jaume Garriga Maestre 52e559a159 feat: app completa recordaLexia (fases 1-5)
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.
2026-06-21 10:48:57 +02:00

130 lines
8.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# recordaLexia — Construcción con Claude Code (prompt director, afinado al handoff)
## Qué eres y qué vas a construir
Actúa como arquitecto/desarrollador full-stack. Construye **recordaLexia**, una app
web familiar para que niños con TDAH vean cada día, en una tablet en modo kiosko
(horizontal), qué material llevar al cole y qué rutinas hacer por la tarde, con
gamificación por monedas y tienda de recompensas. Es multi-niño y bilingüe ES/CA.
Trabajas en LOCAL (Claude Code Desktop). Nada de nube ni infraestructura corporativa.
## Punto de partida: handoff de Claude Design (FUENTE DE VERDAD VISUAL)
El diseño está en `app-de-rutinas-visuales-para-tdah/project/Rutinas TDAH.dc.html`
(+ `support.js`). Es un prototipo en HTML con su propio runtime (DCLogic). NO lo
incrustes: reconstruye sus pantallas y componentes en Angular 19 respetando con
fidelidad los tokens, tamaños, estados y microinteracciones que se describen abajo.
## Sistema de diseño (extraído del handoff — úsalo como design tokens)
- Tipografía: **Fredoka** (títulos, etiquetas, números; pesos 400700) y
**Nunito** (texto; 400900). Etiquetas de tareas en MAYÚSCULAS.
- **Iconografía = emojis** (decisión deliberada del diseño). Mantenerla: cada
material/actividad/premio lleva su emoji. No introduzcas una librería de iconos.
- Colores de acento por categoría: `#F2A65A` (naranja), `#5B8DEF` (azul),
`#A78BD0` (morado), `#7FBF6B` (verde), `#5BC0BE` (teal), `#F4C95D` (amarillo),
`#EC8FA4` (rosa).
- Texto: principal `#2A3142`; secundarios `#5A6B82`, `#7A879B`, `#8C99AB`, `#9FB0BD`.
- Superficies: blanco `#fff`, gris suave `#F4F7F9`/`#EEF2F6`; bordes `#E6ECF0`,
`#D3DCE3`, `#DCE3EA`. Fondo de pantalla: `#EFF4F6` con gradientes radiales suaves
(`#FBF4E9`, `#E2F0EC`) y dos "blobs" orgánicos difuminados.
- Monedas: pill con fondo `#FFF6E0`, texto `#C7912B`, emoji 🪙.
- Tarjeta de tarea: borde 3px, radio 26px, min-height 92px. En estado COMPLETADO
el fondo pasa a un tinte del color (color + alpha `24`), el borde toma el color,
anima `pop` y aparece un check circular de 60px (`checkPop`).
- Tiles de icono: 66px, radio 20px, fondo en tinte del color. Hero (modo Foco): 200px.
- Áreas táctiles grandes: check 60px, botones de navegación 64px, teclas PIN 84px.
- Animaciones definidas: `pop`, `checkPop`, `floatY/floatYb`, `walletBump`,
`confFall` (confeti), `shake` (error), `celebPop`, `ringGlow` (timer), `slideUp`.
## Stack objetivo (doméstico/homelab — NADA corporativo)
- Frontend: **Angular 19** standalone components + signals, TypeScript estricto.
i18n ES/CA (p. ej. @angular/localize o ngx-translate, a tu criterio).
- Backend: **Spring Boot 3.x / Java 21 / Gradle 8 + PostgreSQL** (Liquibase).
- Empaquetado: **Docker** multi-stage + **docker-compose** (postgres + backend +
Nginx sirviendo el frontend).
- Auth ligera: kiosko sin fricción para el niño + PIN para el panel de padres.
- PROHIBIDO en esta fase: Keycloak, Gravitee, Camunda, Kubernetes, Jenkins.
- Comenta el código en español, sobre todo la lógica de negocio.
## Pantallas a implementar (fieles al prototipo)
1. **Perfiles** (`profiles`): título "¿QUIÉN ENTRA HOY?", tarjetas grandes por niño
con mascota (emoji), nombre, monedas y selector de edad ( / +). Botón discreto
"⚙️ Padres" que lleva al PIN.
2. **Home** (`home`), con DOS modos conmutables:
- **A · Tablero**: cabecera (saludo "Hola, {nombre} 👋" + día/fecha grande +
timer "SALIMOS EN {min} min" con anillo glow + monedero 🪙 + botón tienda 🎁);
barra de progreso global "{hechas}/{total} listo ✨"; banner de eventos
(examen 📋 / deberes 📎) con TTS; dos columnas: COLE 🎒 y TARDE 🌙, cada tarea
como tarjeta (icono, etiqueta, botón 🔊 TTS, check). Estado vacío: 🏖️ "HOY NO
HAY COLE".
- **B · Foco**: una sola tarea a pantalla (hero tile 200px), botones , puntos
de progreso, botón grande "¡HECHO!" + 🔊, y pie "Quedan X · Después: Y".
- Al completar TODAS las tareas: overlay de **celebración** con confeti, 🦊🎉,
"¡TODO LISTO!", "+{monedasDia}" y botón "¡GENIAL! 👍".
3. **Tienda** (`store`): cabecera con monedero, grid de 3 columnas de premios
(icono, nombre, coste 🪙, botón CANJEAR o "Te faltan N"); toast de confirmación.
4. **PIN** (`pin`): teclado numérico 3×4, 4 dígitos, feedback de error (shake).
5. **Padres** (`parents`): barra superior con pestañas y botón "🔓 Salir". Pestañas:
- **📅 Horario**: rejilla de 5 días (LV); por día, las actividades del cole.
- **🎒 Materiales**: actividades (Gimnasia, Música, Matemáticas, Lengua…) y su
material como chips; alta de actividad/material.
- **📋 Eventos**: lista de exámenes/deberes con fecha; alta.
- **🌙 Rutinas**: selector de día + lista de rutinas de tarde reordenables.
- **🪙 Recompensas**: steppers de monedas (por tarea / por bloque / por día) y
toggles (sonido, TTS); gestión del catálogo de la tienda.
## Decisiones a respetar
- Conserva el **modo Foco (B)**: es clave para TDAH. Hazlo seleccionable como
preferencia del niño (no como control de demo).
- **Elimina el "dock" inferior de prototipo** (los botones de demo A/B, idioma,
reiniciar, empty). Sustituye sus funciones por ajustes reales: el modo A/B y el
idioma son preferencias; "reiniciar" no existe en producción (el día se regenera).
- Mantén **TTS** (Web Speech API, voz es-ES / ca-ES) y el **sonido** de recompensa
(puedes mantener el tono sintetizado con WebAudio o un sample corto).
- Mantén las **monedas voladoras** de la tarjeta al monedero y el `walletBump`.
- **Bilingüe ES/CA** en toda la UI; el idioma es una preferencia conmutable.
## Mapa de componentes Angular sugerido
`ProfileSelectComponent`, `HomeComponent` (con `BoardViewComponent` y
`FocusViewComponent`), `TaskCardComponent`, `MorningTimerComponent`,
`WalletComponent`, `ProgressBarComponent`, `EventBannerComponent`,
`CelebrationOverlayComponent`, `StoreComponent` + `RewardCardComponent`,
`PinPadComponent`, `ParentsComponent` con sus 5 paneles de pestaña.
Servicios: `ApiService` (HTTP tipado), `TtsService`, `SoundService`,
`I18nService`, `KioskService` (fullscreen/landscape).
## Implicaciones para el dominio/backend
Sigue `docs/prompt-claude-code-backend-rutinas-tdah.md`, que ya incorpora estos
requisitos derivados del diseño: i18n (label_es/label_ca) en materiales,
actividades y premios; `icon` (emoji) y `color` por entidad; hora de salida por
niño; ajustes por niño (modo tablero/foco, sonido, TTS, edad, mascota); y `order`
en las rutinas de tarde. Mantén alineados los DTOs del backend con los modelos del
frontend, en especial `GET /api/children/{id}/today`.
## Datos semilla (reproducir los del prototipo)
- Niños: Nora 🦊 (`#F2A65A`, 7 años, 42 monedas), Leo 🐢 (`#5BC0BE`, 9, 28),
Mía 🦉 (`#A78BD0`, 6, 55).
- Cole: estuche ✏️, libro de mates 📘, flauta 🎵, ropa de gimnasia 👕,
zapatillas 👟, almuerzo 🍎.
- Tarde: deshacer la mochila 🎒, merendar 🥪, hacer los deberes 📝,
practicar piano 🎹, recoger la mesa 🍽️.
- Actividades: Gimnasia 🤸 (equipación/zapatillas/toalla/agua), Música 🎵
(flauta/libreta), Matemáticas 📘 (libro/regla/estuche), Lengua 📖 (lectura/cuaderno).
- Premios: 30 min tablet 🎮 (20), peli en familia 🍿 (50), tarde en el parque 🛝
(40), elijo la cena 🍕 (30), 30 min más despierto 🌙 (60), sorpresa dino 🦖 (80).
- Gamificación por defecto: 5 monedas/tarea, 10/bloque, 20/día completo.
- PIN demo de padres: 1234 (hazlo configurable).
## Orden de trabajo (por fases, valida cada una)
1. Esqueleto del monorepo + docker-compose + README.
2. Backend: dominio + Liquibase + datos semilla + endpoints `/today`, toggle,
wallet, tienda, CRUD de padres. Tests.
3. Frontend: tokens/estilos globales (Fredoka/Nunito, paleta, animaciones).
4. Frontend: Perfiles + Home (Tablero y Foco) cableados contra la API.
5. Frontend: Tienda + Panel de padres (5 pestañas) + i18n ES/CA.
6. Dockerfiles + arranque end-to-end (`docker-compose up`) y prueba del flujo:
configurar día → ver HOY → marcar → ganar monedas → celebración → canjear.
## Entregables
Monorepo compilable y levantable con `docker-compose up`, con README de arranque
local y notas para desplegarlo después en el homelab.