1. config/database.
js (Configuración de la base de datos)
Este archivo configura la conexión a la base de datos MySQL usando Sequelize (un ORM
para [Link]).
Usa variables de entorno (.env) para seguridad (credenciales no expuestas)
Configura opciones como:
o pool: manejo de conexiones simultáneas (máx 5, mín 0)
o logging: muestra consultas SQL solo en desarrollo
En desarrollo, sincroniza automáticamente los modelos con la base de datos (sync({
alter: true }))
2. models/[Link] (Modelo de anuncios)
Define la estructura de la tabla de anuncios en la base de datos:
Campos: id (autoincremental), título (obligatorio), contenido (obligatorio),
is_pinned (booleano)
Opciones: timestamps (crea campos
created_at/updated_at), underscored (nombres con _)
3. controllers/[Link] (Lógica del dashboard)
Maneja la página principal después del login:
Obtiene:
o Últimos 5 anuncios (ordenados por fecha descendente)
o Próximos 3 eventos (solo futuros, ordenados por fecha)
Usa [Link] para hacer ambas consultas simultáneamente
Pasa los datos a la vista dashboard junto con el usuario logueado
4. public/js/[Link] (Interactividad general)
Maneja comportamientos del frontend:
Menú móvil: alterna visibilidad al hacer clic
Notificaciones: muestra/oculta panel y cierra al hacer clic fuera
5. routes/[Link] (Rutas del calendario)
Protege la ruta con isAuthenticated (solo usuarios logueados)
Obtiene eventos del usuario actual desde la base de datos
Renderiza la vista calendar con los eventos
6. views/partials/[Link] (Cabecera común)
Estructura HTML reusable que incluye:
Metadatos básicos y estilos
Barra de navegación con:
o Logo y nombre de la app
o Botón de notificaciones con badge
o Avatar e información del usuario
7. views/auth/[Link] (Página de inicio)
Página de presentación para usuarios no logueados:
Mostrada cuando no hay sesión activa
Incluye:
o Título y eslogan
o Botones de login/registro
o Tarjetas de características destacadas
8. utils/[Link] (Envío de emails)
Configura nodemailer para enviar correos:
Usa credenciales de variables de entorno
Función sendWelcomeEmail envía email de bienvenida al registrarse
9. middleware/[Link] (Control de acceso)
Middlewares para manejar autenticación:
isAuthenticated: protege rutas para usuarios logueados
isNotAuthenticated: redirige usuarios logueados (ej. evitar doble login)
checkRole: control de acceso por roles (ej. solo profesores)
10. models/[Link] (Modelo de eventos)
Estructura para eventos del calendario:
Campos: título, descripción, fechas inicio/fin, color
Relación con usuarios mediante user_id (no visible aquí)
11-12. public/css/[Link] (Estilos)
Estilos completos usando CSS moderno:
Variables CSS para colores y estilos coherentes
Diseño responsive con grid y flexbox
Componentes reusables (cards, forms, buttons)
Diseño del dashboard con sidebar fijo
13. views/[Link] (Vista de calendario)
Interfaz del calendario académico:
Usa FullCalendar (biblioteca JavaScript)
Incluye modal para añadir nuevos eventos
Diseño integrado con el sistema
14. routes/[Link] (Rutas de autenticación)
Maneja todo el flujo de autenticación:
Lobby, login, registro y logout
Protege rutas con isNotAuthenticated
15. routes/[Link] (Rutas del dashboard)
Ruta principal protegida que muestra el dashboard
16. views/partials/[Link] (Pie de página común)
Incluye:
Información legal y enlaces
Copyright
Scripts comunes
17. views/partials/[Link] (Barra de navegación)
Similar al header pero con:
Barra de búsqueda
Icono de notificaciones
Menú desplegable de usuario
18. views/auth/[Link] (Formulario de registro)
Formulario con validación básica:
Campos: nombre, email, contraseña, rol
Muestra errores si existen
Enlace a login para usuarios existentes
19. controllers/[Link] (Lógica del calendario)
showCalendar: obtiene eventos del usuario y los formatea para FullCalendar
createEvent: guarda nuevos eventos en la base de datos
20. public/js/[Link] (Interactividad del calendario)
Configura FullCalendar:
Vistas (mes, semana, día)
Manejo de clics en fechas
Modal para crear eventos
Envío de formulario via fetch API
21. utils/[Link] (Funciones útiles)
Funciones de ayuda:
formatDate: formatea fechas en español
capitalize: capitaliza strings
getUserInitials: crea iniciales desde nombre
22. models/[Link] (Modelo de asistencia)
Estructura para registro de asistencias:
Campos: estado (presente/ausente/tarde), fecha, notas
Relacionado con usuarios y cursos (relaciones no visibles aquí)