Files
renato97 07929b6c60 feat: fase 4 — overhaul, docker, seguridad, métodos europeos
- Eliminada ruta duplicada /sebastian/sumas (código muerto)
- Removido topic 'sumas' del engine (reemplazado por 'matematicas')
- Creado docker-compose.yml (PostgreSQL + app, 1 comando install)
- Dockerfile: copiado prisma CLI al runner stage para db push
- APIs debug protegidas: 403 en producción (reset, state, seed)
- Audit métodos europeos: 24 archivos corregidos al 100%
  - Montessori: matemática Francesca + Sebastián
  - Decroly: lectura, ortografía, historia, geografía, banderas
  - Borel-Maisonny: lectura inicial Isabella (ya existía)
  - Freinet: expresión escrita Sebastián (ya existía)
- Validación prerequisitos: 0 rotos en contenido nuevo (157 ejercicios)
- INSTALL.md: guía completa de instalación
- fase4.md: documentación del overhaul
- E2E: 2 tests corregidos, 61/61 pasan
- TypeScript: exit 0, Build: exit 0
2026-07-25 22:34:05 -03:00

3.8 KiB

EduEasy — Instalación y Uso

Instalación rápida con Docker

# 1. Clonar el repositorio
git clone https://gitea.cbcren.online/renato97/edueasy.git
cd edueasy

# 2. Levantar todo (app + base de datos)
docker compose up -d

# 3. Verificar que está corriendo
curl http://localhost:3000

La app queda disponible en http://localhost:3000. La base de datos PostgreSQL en http://localhost:5432.

Variables de entorno

Variable Default Descripción
DATABASE_URL postgresql://edueasy:edueasy_pass@db:5432/edueasy URL de PostgreSQL
NEXTAUTH_SECRET change-me-in-production Secreto para sesiones (CAMBIAR en producción)
NODE_ENV production Entorno de ejecución

Detener

docker compose down

Detener y borrar datos

docker compose down -v

Instalación manual (sin Docker)

Requisitos

  • Node.js 22+
  • PostgreSQL 16+
  • espeak-ng (para TTS)
# 1. Instalar dependencias
npm install

# 2. Configurar base de datos
createdb edueasy
echo 'DATABASE_URL="postgresql://edueasy:edueasy_pass@localhost:5432/edueasy?schema=public"' > .env.local

# 3. Aplicar schema
npx prisma db push
npx prisma generate

# 4. Desarrollo
npm run dev

# 5. Producción
npm run build
npm start

Perfiles de aprendizaje

Perfil Edad Materias Métodos europeos
Isabella 4 años Lectura (9 etapas), Números (8 etapas) Borel-Maisonny (gesto-fonema), Montessori sensorial
Francesca 6 años Matemáticas (10 etapas), Lecturas (9 etapas), Ortografía (2 etapas) Montessori operacional, Decroly (centros de interés)
Sebastián 8 años Matemáticas (11 etapas), Lectura (6 etapas), Historia (5 etapas), Geografía (3 etapas), Banderas (2 etapas) Montessori avanzado, Decroly, Freinet (expresión)

Cómo navegar

  1. Página principal (/) → muestra los 3 perfiles
  2. Seleccionar un perfil → va a /francesca, /sebastian, o /child (Isabella)
  3. Cada perfil muestra sus actividades
  4. Al tocar una actividad, empieza la sesión de ejercicios con TTS

APIs de debug (solo desarrollo)

Estas APIs solo funcionan en NODE_ENV=development. En producción devuelven 403.

Resetear progreso de un child

curl -X POST http://localhost:3000/api/debug/reset \
  -H "Content-Type: application/json" \
  -d '{"childId":"..."}'

Ver estado completo de un child

curl http://localhost:3000/api/debug/state?childId=...

Sembrar ejercicios de prueba

curl -X POST http://localhost:3000/api/debug/seed \
  -H "Content-Type: application/json" \
  -d '{"childId":"...","profile":"FRANCESCA","topic":"matematicas","stages":[1,2],"markAllCorrect":true}'

Testing

# TypeScript
npx tsc --noEmit

# Build
npm run build

# E2E tests (Playwright)
npx playwright test

Estructura del proyecto

curriculum/           # Datos de ejercicios (generados programáticamente)
  lectura/            # Isabella - lectura (9 etapas)
  numeros/            # Isabella - matemática (8 etapas)
  francesca/          # Francesca - matemática (10 etapas)
  francesca-lectura/  # Francesca - comprensión lectora (9 etapas)
  francesca-ortografia/ # Francesca - ortografía (2 etapas)
  sebastian/          # Sebastián - matemática (11 etapas)
  sebastian-lectura/  # Sebastián - lectura y expresión (6 etapas)
  sebastian-historia/ # Sebastián - historia argentina (5 etapas)
  sebastian-geografia/ # Sebastián - geografía (3 etapas)
  sebastian-banderas/ # Sebastián - banderas provinciales (2 etapas)

lib/curriculum/engine.ts  # Motor: carga etapas, calcula próximo ejercicio
app/api/                   # APIs REST
components/                # Componentes React reutilizables
e2e/                       # Tests E2E (Playwright)