# Proyecto Lectura Integral

Aplicación educativa para navegadores + dashboard web para seguir el progreso de lectura (método Doman + Montessori + Reggio Emilia) con generación de contenido mediante un motor local (Diffusers + SD Turbo) integrado al backend NestJS.

## Estructura inicial
- `app/`: webapp React + Vite (TypeScript) para el niño, pensada como PWA usable en cualquier tablet/navegador.
- `backend/`: API NestJS + TypeScript con métricas, sincronización y servicio Gemini compartido.
- `web/`: dashboard React (Vite + TS) con paneles de progreso y disparadores de contenido para adultos.
- `content/`: plantillas de palabras, fonemas, historias y assets reutilizables.
- `progreso/`: registros en Markdown con bitácora y TODOs.

## Variables de entorno
- `.env`: define `IMAGE_SERVICE_URL` (ver `.env.example`) para apuntar al servicio FastAPI de generación local (por defecto `http://localhost:8001`).
- `app/.env`: configura `VITE_API_BASE_URL` (por defecto `http://localhost:3000`) para que la webapp consuma las imágenes/servicios del backend.

## Próximos pasos sugeridos
1. Afinar contenido inicial (palabras, fonemas, guiones de historias) y generar assets base.
2. Conectar apps al backend (auth simple, endpoints de progreso) y compartir tipado vía paquete común.
3. Integrar cliente Gemini (texto + imagen) con caché local y panel de revisión.
4. Diseñar almacenamiento offline/sincronización en mobile + visualizaciones detalladas en web.

## Generación automática local
- El backend Nest expone `/global-words` y `/global-words/:slug/image`. El primer request a cada imagen llama al servicio local (`image-service`, FastAPI + Diffusers con `stabilityai/sd-turbo`) y cachea el resultado en `content/generated/global-words/`.
- Al iniciar `backend` se lanza un prefetch en background para cubrir todas las palabras pre-cargadas sin intervención manual.
- La webapp PWA apunta a esas rutas via `VITE_API_BASE_URL` y muestra un reto de asociación palabra-imagen una vez que la ilustración está lista.
