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.
This commit is contained in:
27
frontend/Dockerfile
Normal file
27
frontend/Dockerfile
Normal file
@@ -0,0 +1,27 @@
|
||||
# --- Etapa 1: build del bundle Angular ---
|
||||
# Node 20 LTS: soportado oficialmente por Angular 19 (el host de desarrollo usa
|
||||
# Node 24, no soportado; en la imagen fijamos una versión soportada a propósito).
|
||||
FROM node:20-alpine AS build
|
||||
WORKDIR /app
|
||||
|
||||
# Instalar dependencias con caché de capas (primero los manifiestos).
|
||||
# Se usa `npm install` en vez de `npm ci`: Angular arrastra dependencias opcionales
|
||||
# por plataforma (@esbuild/*, @rollup/*) y el lockfile, generado en macOS, no fija
|
||||
# las variantes de Linux que necesita la imagen. `npm ci` (estricto) fallaría; este
|
||||
# `npm install` respeta el lock y resuelve además los binarios de la plataforma.
|
||||
COPY package.json package-lock.json ./
|
||||
RUN npm install --no-audit --no-fund
|
||||
|
||||
# Código y build de producción.
|
||||
COPY . .
|
||||
RUN npm run build
|
||||
|
||||
# --- Etapa 2: servir estáticos con Nginx ---
|
||||
FROM nginx:1.27-alpine AS runtime
|
||||
ENV TZ=Europe/Madrid
|
||||
|
||||
# Config propia: SPA fallback + proxy /api hacia el backend.
|
||||
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||
COPY --from=build /app/dist/frontend/browser /usr/share/nginx/html
|
||||
|
||||
EXPOSE 80
|
||||
Reference in New Issue
Block a user