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.
56 lines
1.6 KiB
YAML
56 lines
1.6 KiB
YAML
# Stack local de recordaLexia: PostgreSQL + backend (Spring Boot) + frontend (Nginx).
|
|
# Pensado para ejecución doméstica/homelab. Las credenciales se leen de .env
|
|
# (ver .env.example); nunca van escritas aquí en texto plano.
|
|
services:
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
container_name: recordalexia-postgres
|
|
environment:
|
|
POSTGRES_DB: ${DB_NAME}
|
|
POSTGRES_USER: ${DB_USER}
|
|
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
|
TZ: Europe/Madrid
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
healthcheck:
|
|
# El backend espera a que la BD esté realmente lista, no solo arrancada.
|
|
test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
restart: unless-stopped
|
|
|
|
backend:
|
|
build:
|
|
context: ./backend
|
|
container_name: recordalexia-backend
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
environment:
|
|
# Conexión a la BD: host interno del servicio postgres del compose.
|
|
DB_HOST: postgres
|
|
DB_PORT: "5432"
|
|
DB_NAME: ${DB_NAME}
|
|
# Spring enlaza estas dos sobre spring.datasource.* por binding relajado.
|
|
SPRING_DATASOURCE_USERNAME: ${DB_USER}
|
|
SPRING_DATASOURCE_PASSWORD: ${DB_PASSWORD}
|
|
TZ: Europe/Madrid
|
|
expose:
|
|
- "8080"
|
|
restart: unless-stopped
|
|
|
|
frontend:
|
|
build:
|
|
context: ./frontend
|
|
container_name: recordalexia-frontend
|
|
depends_on:
|
|
- backend
|
|
ports:
|
|
# Acceso a la app desde la red local del homelab (tablet en modo kiosko).
|
|
- "${WEB_PORT:-8088}:80"
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
pgdata:
|