Backend API para LectoKids - Plataforma educativa que mejora la comprensión lectora infantil
Descripción • Tecnologías • Instalación • Configuración • Uso • Documentación • Contribuir • Licencia
LectoKids es una plataforma educativa innovadora diseñada para mejorar la comprensión lectora de los niños a través de lecturas adaptadas a su nivel e intereses específicos. Este backend, desarrollado con NestJS, proporciona una API robusta y escalable que gestiona:
- 👥 Gestión de usuarios con roles diferenciados (Estudiantes, Profesores, Administradores)
- 📘 Cursos y niveles educativos personalizables
- 📝 Lecturas adaptativas generadas con IA
- 🎯 Actividades interactivas (quizzes, crucigramas, sopas de letras)
- 📊 Análisis de rendimiento y seguimiento del progreso
- 🤖 Integración con múltiples proveedores de IA para generación de contenido
- 📧 Sistema de notificaciones por email
- 🗄️ Gestión multimedia con soporte para múltiples proveedores de almacenamiento
- NestJS - Framework de Node.js progresivo
- TypeScript - Lenguaje tipado sobre JavaScript
- PostgreSQL - Base de datos relacional
- Prisma ORM - ORM moderno para TypeScript
- JWT - JSON Web Tokens para autenticación
- Passport - Middleware de autenticación
- Refresh Tokens - Gestión segura de sesiones
- OpenAI API - Generación de texto e imágenes
- Google Generative AI - Modelos de IA de Google
- Google Vertex AI - Plataforma de ML de Google Cloud
- Firebase Admin - Servicio de almacenamiento
- MinIO - Almacenamiento de objetos S3-compatible
- Puppeteer - Generación de PDFs
- Nodemailer - Envío de emails
- Resend - Servicio de email moderno
- SWC - Compilador rápido para desarrollo
- Jest - Framework de testing
- ESLint - Linter para código limpio
- Prettier - Formateador de código
- Winston - Sistema de logging
- Swagger - Documentación automática de API
- Node.js (versión 18 o superior)
- PostgreSQL (versión 13 o superior)
- Redis (versión 6 o superior)
- Yarn (recomendado) o npm
-
Clonar el repositorio
git clone https://github.com/IvanM9/lectokids-backend.git cd lectokids-backend -
Instalar dependencias
yarn install
-
Configurar variables de entorno
cp .env.example .env # Editar .env con tus configuraciones -
Configurar base de datos
npx prisma migrate dev npx prisma generate
-
Instalar Puppeteer (requerido para generación de PDFs)
Para el correcto funcionamiento de la aplicación es necesario instalar un navegador compatible con Puppeteer. Para más información, visita la documentación oficial.
Copia el archivo .env.example a .env y configura las siguientes variables según tu entorno:
cp .env.example .envLas variables incluyen configuraciones para:
- 🗄️ Base de datos PostgreSQL
- 🔥 Firebase (almacenamiento y configuración)
- 🤖 APIs de IA (OpenAI, Google Generative AI, Vertex AI)
- 📧 Servicios de email (Nodemailer, Resend)
- 🚀 Redis para cache y colas
- 📁 Proveedores de almacenamiento (Firebase, MinIO)
Si prefieres usar Docker:
# Construir la imagen
docker build -t lectokids .
# Ejecutar el contenedor
docker run -p 4000:4000 lectokids# Servidor de desarrollo (recomendado - con SWC)
yarn dev
# Servidor de desarrollo (estándar)
yarn start:dev
# Modo producción
yarn start:prod
# Producción con migraciones
yarn start:migrate:prod# Tests unitarios
yarn test
# Tests en modo watch
yarn test:watch
# Tests con cobertura
yarn test:cov
# Tests end-to-end
yarn test:e2e
# Tests en modo debug
yarn test:debug# Linting con auto-fix
yarn lint
# Formateo de código
yarn format# Ejecutar migraciones en desarrollo
npx prisma migrate dev
# Aplicar migraciones en producción
npx prisma migrate deploy
# Generar cliente de Prisma
npx prisma generate
# Abrir Prisma Studio
npx prisma studio- Swagger UI:
http://localhost:4000/api-docs(en desarrollo) - Documentación interactiva con todos los endpoints disponibles
El proyecto sigue una arquitectura modular basada en NestJS:
src/
├── security/ # Autenticación y autorización
├── users/ # Gestión de usuarios
├── courses/ # Cursos y niveles
├── readings/ # Contenido de lecturas
├── activities/ # Actividades interactivas
├── ai/ # Integración con IA
├── multimedia/ # Gestión de archivos
├── notifications/ # Sistema de notificaciones
├── admin/ # Funciones administrativas
└── shared/ # Utilidades compartidas
Consulta nuestra Wiki del proyecto para obtener información detallada sobre:
- 🏗️ Arquitectura del sistema
- 🔄 Flujos de trabajo
- 📋 Especificaciones de API
- 🧪 Guías de testing
- 🚀 Guías de despliegue
¡Las contribuciones son bienvenidas! Por favor lee nuestras guías de contribución para conocer:
- 🐞 Cómo reportar bugs
- ✨ Cómo proponer nuevas características
- 🔄 Proceso de Pull Requests
- 📝 Estándares de código y documentación
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está licenciado bajo la Licencia GPL v3. Consulta el archivo LICENSE para más detalles.
Copyright (C) 2025 Iván Manzaba G.
Este programa es software libre: puedes redistribuirlo y/o modificarlo
bajo los términos de la Licencia Pública General GNU según se publica por
la Free Software Foundation, ya sea la versión 3 de la Licencia, o
(a tu elección) cualquier versión posterior.
- Autor: Iván Manzaba
- Website: https://imanzabag.com/
- Repositorio: https://github.com/IvanM9/lectokids-backend
Hecho con ❤️ para mejorar la educación infantil