Organiza+: Aplicación web para la optimización de horarios

Bookmark (0)
Please login to bookmark Close

Resumen:
Esta aplicación web está desarrollada utilizando React en el frontend, Node.js en el backend, y MongoDB como base de datos. Su propósito principal es facilitar a los estudiantes la planificación de sus horarios académicos, especialmente cuando se inscriben en asignaturas de distintos años y pueden surgir solapamientos. La aplicación permite seleccionar las asignaturas deseadas y, visualizar varias combinaciones posibles de horarios. Un algoritmo (scheduleService.js) se encarga de detectar conflictos, ordenar las asignaturas según un campo priority y generar las mejores combinaciones posibles para turnos de mañana, tarde o mixto, ajustándose a la preferencia del estudiante.
En el frontend se ha optado por Vite combinados con ESLint para mantener la calidad del código. La UI se construye sobre Ant Design 1, mientras que la comunicación con el servidor se realiza mediante axios y la gestión de tokens JWT con jwt-decode. En el backend, Express provee la capa de servidor, bcryptjs encripta las contraseñas, jsonwebtoken gestiona la autenticación, express-validator valida las entradas. La persistencia corre a cargo de Mongoose sobre MongoDB. Para el desarrollo y las pruebas, nodemon facilita la recarga en caliente
Aunque los estudiantes son los usuarios principales, la herramienta también está diseñada para los profesores y administradores. Los profesores disponen de un panel en el que pueden ver el listado de las asignaturas que imparten y, al seleccionar una de ellas, acceder al detalle de todos los alumnos matriculados. Por otro lado, los administradores, cuentan con permisos para gestionar el CRUD completo de cursos y la asignación de profesores a cada turno. De este modo pueden añadir, editar o eliminar asignaturas y configurar sus horarios.
Abstract:
This web application is built with React on the frontend, Node.js on the backend, and MongoDB as the database. Its main purpose is to help students plan their academic schedules, especially when enrolling in courses from different years or semesters, which can lead to conflicts. The app lets students select the courses they want and instantly view multiple schedule combinations. A dedicated algorithm (in scheduleService.js) detects conflicts, sorts of courses by a priority field, and generates the best possible combinations for morning, afternoon, or mixed sessions based on the student’s preference.On the frontend, we chose Vite as the bundler and use the @vitejs/plugin-react-swc plugin to speed up compilation and hot-reload, along with ESLint (including React Hooks rules) to keep the code clean. The UI is built with Ant Design (antd, @ant-design/icons, and @ant-design/pro-components), communication with the server is done via Axios, and JWT tokens are handled with jwt-decode.
On the backend, Express serves as the web framework, bcryptjs encrypts passwords, jsonwebtoken handles authentication, express-validator checks incoming data, cors enables cross-origin requests, and dotenv loads environment variables. Data persistence is managed by Mongoose on top of MongoDB. For development and testing, Nodemon provides automatic server reloads, and Jest together with Supertest and mongodb-memory-server support unit and integration tests.
Although students are primary users, the tool is also designed for professors and administrators. Professors have a dashboard where they can see the list of courses they teach and, by selecting one, view detailed lists of enrolled students, giving them greater flexibility and control over their lesson planning. Administrators play a key role as well: they have full CRUD permissions for courses and can assign professors to each session. This lets them add, edit, or delete and configure schedules, ensuring efficient organization of academic resources.

​Resumen:
Esta aplicación web está desarrollada utilizando React en el frontend, Node.js en el backend, y MongoDB como base de datos. Su propósito principal es facilitar a los estudiantes la planificación de sus horarios académicos, especialmente cuando se inscriben en asignaturas de distintos años y pueden surgir solapamientos. La aplicación permite seleccionar las asignaturas deseadas y, visualizar varias combinaciones posibles de horarios. Un algoritmo (scheduleService.js) se encarga de detectar conflictos, ordenar las asignaturas según un campo priority y generar las mejores combinaciones posibles para turnos de mañana, tarde o mixto, ajustándose a la preferencia del estudiante.
En el frontend se ha optado por Vite combinados con ESLint para mantener la calidad del código. La UI se construye sobre Ant Design 1, mientras que la comunicación con el servidor se realiza mediante axios y la gestión de tokens JWT con jwt-decode. En el backend, Express provee la capa de servidor, bcryptjs encripta las contraseñas, jsonwebtoken gestiona la autenticación, express-validator valida las entradas. La persistencia corre a cargo de Mongoose sobre MongoDB. Para el desarrollo y las pruebas, nodemon facilita la recarga en caliente
Aunque los estudiantes son los usuarios principales, la herramienta también está diseñada para los profesores y administradores. Los profesores disponen de un panel en el que pueden ver el listado de las asignaturas que imparten y, al seleccionar una de ellas, acceder al detalle de todos los alumnos matriculados. Por otro lado, los administradores, cuentan con permisos para gestionar el CRUD completo de cursos y la asignación de profesores a cada turno. De este modo pueden añadir, editar o eliminar asignaturas y configurar sus horarios.
Abstract:
This web application is built with React on the frontend, Node.js on the backend, and MongoDB as the database. Its main purpose is to help students plan their academic schedules, especially when enrolling in courses from different years or semesters, which can lead to conflicts. The app lets students select the courses they want and instantly view multiple schedule combinations. A dedicated algorithm (in scheduleService.js) detects conflicts, sorts of courses by a priority field, and generates the best possible combinations for morning, afternoon, or mixed sessions based on the student’s preference.On the frontend, we chose Vite as the bundler and use the @vitejs/plugin-react-swc plugin to speed up compilation and hot-reload, along with ESLint (including React Hooks rules) to keep the code clean. The UI is built with Ant Design (antd, @ant-design/icons, and @ant-design/pro-components), communication with the server is done via Axios, and JWT tokens are handled with jwt-decode.
On the backend, Express serves as the web framework, bcryptjs encrypts passwords, jsonwebtoken handles authentication, express-validator checks incoming data, cors enables cross-origin requests, and dotenv loads environment variables. Data persistence is managed by Mongoose on top of MongoDB. For development and testing, Nodemon provides automatic server reloads, and Jest together with Supertest and mongodb-memory-server support unit and integration tests.
Although students are primary users, the tool is also designed for professors and administrators. Professors have a dashboard where they can see the list of courses they teach and, by selecting one, view detailed lists of enrolled students, giving them greater flexibility and control over their lesson planning. Administrators play a key role as well: they have full CRUD permissions for courses and can assign professors to each session. This lets them add, edit, or delete and configure schedules, ensuring efficient organization of academic resources. Read More