0% encontró este documento útil (0 votos)
24 vistas5 páginas

Explicación

El documento describe la estructura y configuración de una aplicación web que utiliza Node.js y MySQL, incluyendo la configuración de la base de datos, modelos de datos, controladores, rutas, y vistas. Se detalla la lógica de autenticación, la gestión de eventos y anuncios, así como la interactividad del frontend y el envío de correos electrónicos. También se mencionan estilos y componentes reutilizables para una experiencia de usuario coherente y responsiva.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
24 vistas5 páginas

Explicación

El documento describe la estructura y configuración de una aplicación web que utiliza Node.js y MySQL, incluyendo la configuración de la base de datos, modelos de datos, controladores, rutas, y vistas. Se detalla la lógica de autenticación, la gestión de eventos y anuncios, así como la interactividad del frontend y el envío de correos electrónicos. También se mencionan estilos y componentes reutilizables para una experiencia de usuario coherente y responsiva.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

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í)

También podría gustarte