Sistema web para la gestión, búsqueda y descarga de tesis universitarias. Desarrollado con React y Material-UI, ofrece una interfaz moderna e intuitiva para administrar el repositorio de trabajos de grado.
- CRUD completo de tesis con formularios validados
- Gestión de usuarios (estudiantes, profesores, encargados)
- Asignación de roles: autores, tutores, jurados y encargados
- Estados de tesis: Aprobada, Pendiente, Rechazada
- Gestión de sedes universitarias
- Búsqueda por texto en títulos y contenido
- Filtros múltiples:
- Por autor (multi-select con autocomplete)
- Por tutor (autocomplete con búsqueda por nombre/cédula)
- Por encargado (autocomplete)
- Por jurado (multi-select con autocomplete)
- Por sede
- Por rango de fechas
- Por estado
- Ordenamiento dinámico por nombre, fecha, estado, etc.
- Paginación configurable
- Descarga individual de PDFs de tesis
- Descarga masiva con progreso en tiempo real (SSE)
- Exportación a Excel de listados de tesis con formato profesional
- Tema claro/oscuro con persistencia en localStorage
- Preferencias guardadas: tema y configuración de ordenamiento
- Interfaz responsive adaptada a diferentes dispositivos
- Mensajes descriptivos de error y estados vacíos
- Perfiles de usuario con información detallada y edición
- React 19 - Biblioteca principal
- React Router DOM 7 - Navegación
- Material-UI (MUI) 7 - Componentes UI
- Tailwind CSS 4 - Estilos utilitarios
- Vite 6 - Build tool y dev server
- Axios - Cliente HTTP
- Day.js - Manejo de fechas
- XLSX - Exportación a Excel
- Framer Motion - Animaciones
- React Icons - Iconografía
- ESLint - Linting
- PostCSS - Procesamiento CSS
- Autoprefixer - Compatibilidad CSS
- Node.js (versión 18 o superior)
- npm o yarn
- Backend API - El servidor backend se encuentra en: https://github.com/jgarcia691/Server_Tesis
- Seguir las instrucciones del repositorio del backend para configurarlo
- Configurar
VITE_API_URLpara apuntar a la instancia del backend
- Clonar el repositorio
git clone <url-del-repositorio>
cd tesisup- Instalar dependencias
npm install- Configurar variables de entorno
Crear un archivo .env en la raíz del proyecto:
VITE_API_URL=http://localhost:8080/api- Ejecutar en modo desarrollo
npm run devLa aplicación estará disponible en http://localhost:5173
npm run dev- Inicia el servidor de desarrollonpm run build- Genera build de producciónnpm run preview- Previsualiza el build de producciónnpm run lint- Ejecuta el linter
tesisup/
├── src/
│ ├── components/
│ │ ├── main/
│ │ │ ├── Card/ # Componentes de tarjetas de tesis
│ │ │ ├── Form/ # Formularios de gestión
│ │ │ ├── Layout/ # Componentes de layout (Header, Filters, etc.)
│ │ │ ├── Profile/ # Perfiles de usuario
│ │ │ ├── Search/ # Barra de búsqueda
│ │ │ └── Ui/ # Componentes UI reutilizables
│ │ └── Ui/ # Componentes UI globales
│ ├── context/
│ │ ├── AuthContext.jsx # Contexto de autenticación
│ │ └── ThemeContext.jsx # Contexto de tema (dark/light)
│ ├── hooks/ # Custom hooks
│ ├── pages/ # Páginas principales
│ ├── utils/ # Utilidades
│ ├── App.jsx # Componente raíz
│ └── main.jsx # Punto de entrada
├── public/ # Archivos estáticos
├── .env # Variables de entorno
├── package.json
├── vite.config.js
└── README.md
El sistema utiliza autenticación basada en tokens JWT:
- Los tokens se almacenan en
localStorage - Las peticiones incluyen el token en el header
Authorization: Bearer <token> - Soporte para diferentes roles: estudiante, profesor, encargado
El sistema soporta tema claro y oscuro:
- Cambio mediante botón en el header
- Preferencia guardada en
localStorage - Persistencia entre sesiones
- Etiquetas ARIA apropiadas
- Navegación por teclado
- Contraste de colores adecuado
- Mensajes descriptivos para lectores de pantalla
- Verificar que Node.js esté instalado:
node --version - Eliminar
node_modulesy reinstalar:rm -rf node_modules && npm install
- Verificar que
VITE_API_URLesté correctamente configurado - Asegurar que el backend permita peticiones desde el origen del frontend
- Verificar que el backend esté corriendo
- Revisar la consola del navegador para errores de red
- Verificar permisos de descarga en el navegador