Este repositorio contiene la infraestructura completa del ecosistema Learning Dashboard, incluyendo todos los servicios dockerizados, bases de datos, webhooks y herramientas de administración.
- Arquitectura del Sistema
- Requisitos Previos
- Instalación Rápida
- Configuración
- Servicios Incluidos
- Uso
- Desarrollo
- Troubleshooting
El ecosistema consta de 7 servicios interconectados que trabajan juntos para proporcionar un sistema completo de análisis y gestión del Learning Dashboard:
┌────────────────────────────────────────────────────────────────────┐
│ LEARNING DASHBOARD ECOSYSTEM │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Admin Tool │──────────┐ │ LD Frontend │ │
│ │ Frontend │ │ │ (Tomcat UI) │ │
│ │ (React+Vite) │ │ └────────┬────────┘ │
│ └────────┬────────┘ │ │ │
│ │ │ │ │
│ ├──────────────┐ │ │ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Admin Tool │ │ LD Eval │ │ Tomcat │ │
│ │ Backend │ │ (Metrics & │ │ (LD Core) │ │
│ │ (Spring Boot) │ │ Evaluation) │ └────────┬────────┘ │
│ └────────┬────────┘ └────────┬────────┘ │ │
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
│ ▼ │ ▼ │
│ ┌─────────────────┐ │ ┌─────────────────┐ │
│ │ Tomcat │ │ │ PostgreSQL │ │
│ │ (LD Backend) │◄──────────┘ │ (SQL Data) │ │
│ └────────┬────────┘ └─────────────────┘ │
│ │ │
│ ▼ ┌─────────────────┐ │
│ ┌─────────────────┐ │ MongoDB │ │
│ │ PostgreSQL │ ┌────────►│ (Metrics & │ │
│ │ (Projects, │ │ │ Events) │ │
│ │ Students) │ │ └─────────▲───────┘ │
│ └─────────────────┘ │ │ │
│ │ │ │
│ ┌────────┴────────┐ │ │
│ │ LD Eval │──────────┘ │
│ │ (Process & │ │
│ │ Store) │ │
│ └────────▲────────┘ │
│ │ │
│ ┌────────┴────────┐ │
│ │ LD Connect │ │
│ │ (Webhooks) │ │
│ └────────▲────────┘ │
│ │ │
│ ┌───────────────────────────────┴──────────────────────────┐ │
│ │ EXTERNAL SOURCES │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ GitHub │ │ Taiga │ │ │
│ │ │ (Webhooks) │ │ (Webhooks) │ │ │
│ │ └──────────────┘ └──────────────┘ │ │
│ └────────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────────┘
1. Captura de Eventos (LD Connect):
- Recibe webhooks de GitHub (push, pull requests)
- Recibe webhooks de Taiga (tasks, milestones)
- Notifica a LD Eval para procesamiento
2. Procesamiento de Métricas (LD Eval):
- Evalúa los cambios recibidos
- Calcula métricas y factores de calidad
- Almacena resultados en MongoDB
3. Visualización Principal (Frontend LD):
- Muestra métricas y factores desde MongoDB
- Muestra datos de proyectos desde PostgreSQL
- Interfaz accesible vía Tomcat
4. Administración (Admin Tool):
- Frontend: Interfaz React para gestionar equipos
- Backend: API Spring Boot para operaciones administrativas
- Conecta con Tomcat (LD Backend) para acceder a datos
- Conecta directamente con LD Eval para ciertas consultas
- Todo respaldado por PostgreSQL
- Docker Desktop (Windows/Mac) o Docker Engine (Linux)
- Docker Compose v2.0 o superior
- Git para clonar los submódulos
- Puertos disponibles: 5000, 5001, 5432, 5433, 8080, 8888, 27017, 3000
git clone <URL_DE_TU_REPO>
cd learning-dashboard-infrastructureLos repositorios de cada servicio deben estar en sus carpetas correspondientes:
# Si aún no los tienes clonados:
git clone <URL_LD_LEARNING_DASHBOARD> LD-learning-dashboard
git clone <URL_LD_ADMINTOOL> ld_admintool
git clone <URL_LD_ADMINTOOL_FRONTEND> ld_admintool_frontend
git clone <URL_LD_CONNECT_EVENT> LD_Connect_Event
git clone <URL_LD_EVAL_EVENT> LD_Eval_EventCopia el archivo de ejemplo y edítalo con tus valores:
cp .env.template .envEdita el archivo .env con tus configuraciones (ver Configuración).
docker-compose up -ddocker-compose psDeberías ver todos los servicios en estado "Up".
El archivo .env en la raíz contiene toda la configuración centralizada:
# URLs de túneles ngrok (cambiar según sea necesario)
NGROK_LD_URL=https://xxxx.ngrok-free.app
NGROK_LDCONNECT_URL=https://yyyy.ngrok-free.app
# Taiga Configuration
TAIGA_API_URL=https://zzzz.ngrok-free.dev/api/v1
TAIGA_AUTH_URL=https://api.taiga.io/api/v1
TAIGA_USERNAME=tu_usuario
TAIGA_PASSWORD=tu_password
# GitHub Configuration
GITHUB_TOKEN=ghp_xxxxxxxxxxxxx
# MongoDB Configuration
MONGO_USER=admin
MONGO_PASSWORD=3LnS985q7tR9
# PostgreSQL Configuration
DB_USER=postgres
DB_PASSWORD=exampleImportante:
TAIGA_API_URLapunta al ngrok del Taiga FIB (para consultas)TAIGA_AUTH_URLapunta siempre a Taiga público (para autenticación)- Nunca subas el archivo
.enva Git (está en.gitignore)
| Servicio | Puerto | Descripción | Tecnología |
|---|---|---|---|
| Admin Tool Frontend | 3000 | Interfaz de administración | React + Vite + Nginx |
| Admin Tool Backend | 8080 | API de administración | Spring Boot 3.5.6 (Java 17) |
| LD Connect | 5000 | Gestión de webhooks GitHub/Taiga | Python 3.9 + Flask |
| LD Eval | 5001 | Evaluación y métricas | Python 3.9 + Flask |
| Tomcat (LD Core) | 8888 | Learning Dashboard principal | Java + Tomcat 9 |
| PostgreSQL | 5433 | Base de datos principal | PostgreSQL 9.6 |
| MongoDB | 27017 | Base de datos de eventos | MongoDB 6.0 |
- Admin Tool: http://localhost:3000
- Learning Dashboard: http://localhost:8888
- MongoDB Compass: localhost:27017 (usuario:
admin, contraseña:3LnS985q7tR9)
- Accede al Admin Tool en http://localhost:3000
- Ve a la sección "Importar Equipos"
- Sube un archivo Excel con el formato especificado
- El sistema validará los proyectos en Taiga y GitHub
- Los equipos se crearán automáticamente en el LD
Los webhooks de GitHub y Taiga envían eventos automáticamente a LD Connect cuando hay cambios:
- GitHub webhook URL:
{NGROK_LDCONNECT_URL}/webhook/github?prj=nombre-proyecto - Taiga webhook URL:
{NGROK_LDCONNECT_URL}/webhook/taiga?prj=nombre-proyecto
# Backend del Admin Tool
docker-compose build admintool_backend
docker-compose up -d admintool_backend
# Frontend del Admin Tool
docker-compose build admintool_frontend
docker-compose up -d admintool_frontend
# LD Connect
docker-compose build ld_connect
docker-compose up -d ld_connectdocker logs -f LDConnect
docker logs -f ld_admintool_backend
docker logs -f admintool_frontenddocker-compose down
docker-compose up -ddocker exec -it LDConnect bash
docker exec -it ld_admintool_backend sh- Verifica que Docker Desktop esté corriendo
- Comprueba que los puertos no estén ocupados:
netstat -ano | findstr :8080 netstat -ano | findstr :3000
- Revisa los logs:
docker-compose logs
Si ves errores Unauthorized en los logs:
- Verifica que el
.envtiene las credenciales correctas - Reinicia los servicios:
docker-compose restart ld_connect ld_eval
Si ves 401 Unauthorized al consultar milestones:
- Causa: El ngrok del Taiga FIB requiere autenticación
- Solución: Verifica que
TAIGA_API_URLapunta al ngrok correcto y que el servidor ngrok tiene autenticación desactivada
- Verifica que ngrok esté corriendo y la URL sea accesible
- Comprueba que el webhook en GitHub/Taiga tenga la URL correcta
- Revisa los logs de LD Connect:
docker logs LDConnect --tail 50
- Verifica que el backend esté corriendo:
docker ps | grep admintool - Comprueba la configuración de Nginx en el frontend
- Revisa los logs del backend:
docker logs ld_admintool_backend
- LD_Connect_Event/README.md - Documentación de LD Connect
- LD_Eval_Event/README.md - Documentación de LD Eval
- Nunca subas el archivo
.enva Git - Usa
.env.templatecomo referencia para crear tu.envlocal - Los tokens y contraseñas deben regenerarse en producción
- MongoDB y PostgreSQL solo son accesibles desde
127.0.0.1(localhost)
-
Ngrok URLs: Los túneles ngrok cambian cada vez que se reinicia ngrok. Actualiza
NGROK_LD_URLyNGROK_LDCONNECT_URLen el.envcuando sea necesario. -
Taiga FIB: Si se cambia su ngrok, actualiza
TAIGA_API_URLen el.env. -
Submódulos Git: Los repositorios dentro de learning-dashboard-infrastructure (LD-learning-dashboard, ld_admintool, etc.) son repositorios independientes. Puedes hacer commits y push en cada uno por separado.
-
Reconstruir contenedores: Si cambias código Python o Java, necesitas reconstruir el contenedor correspondiente con
docker-compose build <servicio>. -
Base de datos: Los datos de PostgreSQL y MongoDB se guardan en volúmenes Docker. Persisten aunque reinicies los contenedores.
- Gerard Ferrer - Treball Final de Grau (TFG)
- Títol: Integració d'una Nova Infraestructura de Dades al Learning Dashboard
- Universidad: Universitat Politècnica de Catalunya - Facultat d'Informàtica de Barcelona
- Año: 2025-2026
[Especificar licencia si aplica]