5.2 KiB
Panel de Administración Edu-Space (UniCABA)
Plataforma integral de gestión áulica, asignación de espacios, control de horarios y reservas académicas para la Universidad de la Ciudad de Buenos Aires (UniCABA).
El proyecto se basa en una arquitectura desacoplada (Frontend / Backend) en formato monorepo.
🏛️ Sede Institucional y Ubicaciones
- Sede Central UniCABA: Tte. Gral. Juan Domingo Perón 802, Ciudad Autónoma de Buenos Aires (CABA) — Aulas de grado, auditorio principal y laboratorios distribuidos desde Planta Baja (Piso 0) hasta el 4.° Piso.
- Campus Virtual: Espacio áulico digital integrado (Microsoft Teams / Moodle) configurado con capacidad ilimitada (
\infty).
🏗️ Arquitectura del Proyecto (Monorepo)
El repositorio está dividido en dos aplicaciones principales que interactúan mediante una API REST y un patrón Backend-For-Frontend (BFF).
/
├── backend/ # API REST Backend (Python / Flask)
│ ├── app/ # Lógica de negocio, base de datos y endpoints
│ ├── tests/ # Pruebas unitarias e integración
│ └── requirements.txt # Dependencias de Python
│
├── frontend/ # Backend-For-Frontend (Node.js / Express)
│ ├── src/ # Controladores, middleware, servicios (Axios)
│ ├── views/ # Plantillas Nunjucks (.html)
│ ├── public/ # Archivos estáticos (CSS, JS cliente)
│ └── package.json # Dependencias de Node.js
│
├── docs/ # Historial de cambios y documentación técnica
└── unicaba_prerequitos/ # Requisitos académicos y de negocio
🐍 Backend (Python + Flask)
- Funciona exclusivamente como una REST API que expone endpoints bajo
/api/v1/retornando JSON. - Encargado de la persistencia de datos (SQLAlchemy / PostgreSQL), lógica de negocio dura, JWT auth service, seguridad, y algoritmos de optimización (Módulo Predictivo).
- Prohibido retornar HTML o utilizar Jinja2/
render_templateen este entorno.
🟢 Frontend BFF (Node.js + Express)
- Aplicación de servicio que renderiza las vistas para el cliente mediante Nunjucks.
- Gestiona la sesión segura del usuario almacenando el token JWT recibido de Flask en una Cookie HttpOnly.
- Actúa como proxy de conexión con el Backend de Python empleando Axios (inyectando el Bearer token interceptado).
- Utiliza Chart.js y JS vanilla en el lado del cliente para visualizaciones interactivas.
🎯 Dashboards Personalizados por Rol
La plataforma cuenta con paneles adaptados a las necesidades operativas de cada perfil institucional:
- Administrador (
/dashboard?role=admin): Cockpit institucional con métricas globales, auditoría de seguridad RBAC, tendencias mensuales y catálogo de gestión. - Bedelía (
/dashboard?role=bedelia): Control operativo del campus en tiempo real, conteo de aulas físicas y virtuales, cartelera del día y bandeja de aprobación de reservas pendientes. - Docente / Profesor (
/dashboard?role=docente): Sesiones del día con accesos directos a videollamadas, gestión de comisiones y formulario para solicitar aulas. - Alumno / Estudiante (
/dashboard?role=alumno): Brújula de cursada "¿Dónde curso hoy?" con ubicación por piso y aula o enlace virtual, junto al cronograma de exámenes y entregas de TPs.
Modo Vista Previa: Los usuarios con perfil administrador o directivo pueden previsualizar cualquier perspectiva utilizando el selector de roles en la barra superior o pasando el parámetro
?role={admin|bedelia|docente|alumno}en la URL.
☁️ Importador de Google Sheets & Campus Virtual
El sistema incluye sincronización automatizada con las planillas oficiales de cursada de UniCABA:
- Concurrencia Virtual Ilimitada: Reconocimiento de espacios áulicos remotos (
Campus Virtual · VIRTUAL), permitiendo la coexistencia de múltiples comisiones en la misma franja horaria sin colisiones de agenda. - Enlaces de Videollamada Automáticos: Generación de enlaces seguros (Google Meet / Teams) para acceso instantáneo de docentes y estudiantes.
- Filtros en Cartelera: Opciones para filtrar por turno, piso u ocultar aulas virtuales mediante el switch dedicado en
/schedule/today_schedule.
🚀 Instalación y Despliegue Local
Requisitos previos
- Node.js (v18 o superior)
- Python 3.10+
- PostgreSQL / SQLite
1. Iniciar el Backend (Flask)
cd backend
python -m venv venv
# Activar venv (Windows: venv\Scripts\activate, Linux/Mac: source venv/bin/activate)
pip install -r requirements.txt
flask run --port=5000
(El backend quedará escuchando en http://localhost:5000)
2. Iniciar el Frontend (Node/Express)
cd frontend
npm install
npm run dev
# o en su defecto:
node src/app.js
(El frontend quedará escuchando en http://localhost:3000)