Plataforma Estudiantil Universitaria
Centraliza eventos, talleres, descuentos y asociaciones estudiantiles en una experiencia moderna y premium.
🌐 Funcionalidades · 🏗️ Arquitectura · 🚀 Inicio Rápido · 📸 Vistas de la Plataforma
El sitio oficial actual de la universidad para la visualización de eventos, talleres y descuentos estudiantiles es poco visible, difícil de navegar y estéticamente anticuado. Esto genera que muchas actividades y oportunidades extracurriculares pasen desapercibidas para la comunidad estudiantil.
RespiraTEC nace para resolver este problema, ofreciendo una interfaz moderna, limpia y de alto nivel que transforma la experiencia universitaria digital.
|
|
| Característica | Descripción |
|---|---|
| Registro seguro | Contraseñas encriptadas con BcryptJS |
| Sesiones JWT | Tokens seguros con expiración configurable |
| Roles dinámicos | Estudiante · Representante · Administrador |
| Rutas protegidas | Acceso restringido según nivel de permisos |
| Cooldown inteligente | 24h de espera tras rechazo de membresía |
El sistema incluye una pasarela de pago simulada con dos métodos:
💠 Tarjeta de Crédito/Débito — Formulario con validación de 16 dígitos, fecha y CVV con animación de procesamiento.
📱 SINPE Móvil — Código QR simulado con confirmación instantánea tras verificación.
RespiraTEC/
│
├── 📁 frontend/ # Aplicación React + Vite
│ ├── 📁 src/
│ │ ├── 📁 assets/ # Imágenes y recursos estáticos
│ │ ├── 📁 components/ # Componentes reutilizables
│ │ │ ├── Navbar.jsx # Barra de navegación principal
│ │ │ ├── ModalPago.jsx # Modal de pasarela de pago
│ │ │ ├── FeedbackSection.jsx
│ │ │ ├── FiltroBusqueda.jsx
│ │ │ └── ProtectedRoute.jsx
│ │ ├── 📁 context/ # Estado global (AuthContext)
│ │ ├── 📁 pages/
│ │ │ ├── 📁 admin/ # Paneles de administración
│ │ │ │ ├── 📁 eventos/
│ │ │ │ ├── 📁 talleres/
│ │ │ │ ├── 📁 descuentos/
│ │ │ │ ├── 📁 asociaciones/
│ │ │ │ └── 📁 usuarios/
│ │ │ ├── 📁 auth/ # Login y Registro
│ │ │ ├── 📁 public/ # Páginas públicas
│ │ │ │ ├── 📁 eventos/
│ │ │ │ ├── 📁 talleres/
│ │ │ │ ├── 📁 asociaciones/
│ │ │ │ ├── Descuentos.jsx
│ │ │ │ ├── Inicio.jsx
│ │ │ │ └── Contacto.jsx
│ │ │ └── 📁 user/ # Páginas de usuario
│ │ │ ├── MiPerfil.jsx
│ │ │ ├── MisAsociaciones.jsx
│ │ │ └── MisTalleres.jsx
│ │ └── App.jsx # Enrutamiento principal
│ └── package.json
│
├── 📁 backend/ # API REST con Express
│ ├── 📁 config/ # Configuración de BD y Cloudinary
│ ├── 📁 controllers/ # Lógica de negocio
│ ├── 📁 middleware/ # Auth, validación y seguridad
│ ├── 📁 models/ # Esquemas de Mongoose
│ │ ├── Usuario.js
│ │ ├── Evento.js
│ │ ├── Taller.js
│ │ ├── Descuento.js
│ │ ├── Asociacion.js
│ │ ├── Inscripcion.js
│ │ ├── AsistenciaEvento.js
│ │ ├── Afiliacion.js
│ │ └── Feedback.js
│ ├── 📁 routes/ # Definición de endpoints
│ └── server.js # Punto de entrada
│
├── 📁 docs/screenshots/ # Capturas de pantalla
├── docker-compose.yml # Orquestación con Docker
└── README.md
|
Frontend
|
Backend
|
Servicios
|
| Software | Versión mínima |
|---|---|
| Node.js | v18+ |
| MongoDB | v6+ (local o Atlas) |
| Docker (opcional) | v20+ |
1️⃣ Clonar el repositorio
git clone https://github.com/DanielAR27/RespiraTEC.git
cd RespiraTEC2️⃣ Configurar variables de entorno
backend/.env
PORT=5000
MONGO_URI=mongodb://localhost:27017/respiratec
JWT_SECRET=secreto_super_seguro
JWT_EXPIRE=24h
# Cloudinary (opcional, para subida de imágenes)
CLOUDINARY_CLOUD_NAME=cloud_name
CLOUDINARY_API_KEY=api_key
CLOUDINARY_API_SECRET=api_secretfrontend/.env
VITE_API_URL=http://localhost:5000/api3️⃣ Levantar el Backend
cd backend
npm install
npm run dev🟢 El servidor se ejecutará en
http://localhost:5000
4️⃣ Levantar el Frontend
cd frontend
npm install
npm run dev🟢 La aplicación estará disponible en
http://localhost:5173
docker-compose up --build| Servicio | Puerto |
|---|---|
| Frontend | http://localhost:80 |
| Backend | http://localhost:3000 |
A continuación se presentan las principales secciones de RespiraTEC. Las capturas se encuentran en la carpeta docs/screenshots/.
La página principal muestra un resumen dinámico de toda la actividad universitaria: eventos próximos, talleres destacados, descuentos activos y asociaciones disponibles. Diseñada para que el estudiante tenga toda la información relevante de un solo vistazo.
Explora todos los eventos universitarios con tarjetas visuales que muestran fecha, ubicación, categoría y un contador de asistentes en tiempo real. Cada evento tiene su vista de detalle con inscripción de asistencia y confirmación mediante modal.
Catálogo completo de talleres con información de nivel (Principiante, Intermedio, Avanzado), instructor, fechas, cupos disponibles y precio. Los estudiantes pueden inscribirse con un flujo de pago simulado y, al finalizar el taller, descargar su certificado PDF.
Sección de descuentos exclusivos para estudiantes con tarjetas que muestran el porcentaje de ahorro, código promocional copiable y fecha de vencimiento. Incluye filtros para encontrar las mejores ofertas rápidamente.
Directorio de asociaciones estudiantiles con logo, descripción y listado de miembros. Los estudiantes pueden solicitar membresía a través de un flujo intuitivo con modal de confirmación, y los representantes gestionan las solicitudes desde su panel.
Los estudiantes que completaron un taller con certificación pueden descargar un diploma de participación generado automáticamente en PDF. El certificado incluye nombre del participante, título del taller, instructor, período y fecha de emisión con un diseño profesional.
Panel completo para administradores con gestión CRUD de eventos, talleres, descuentos, asociaciones y usuarios. Interfaz limpia con tablas, filtros y acciones rápidas para mantener la plataforma actualizada.
- 🔐 Autenticación completa con JWT y roles
- 📅 CRUD de eventos con asistencia en tiempo real
- 🎨 CRUD de talleres con inscripción y cupos
- 🏷️ Sistema de descuentos con códigos promocionales
- 🏛️ Asociaciones con flujo de solicitud de membresía
- 📜 Generación de certificados PDF con PDFKit
- 💳 Pasarela de pago simulada (Tarjeta + SINPE)
- ⭐ Sistema de feedback y calificaciones
- 🔍 Filtros de búsqueda por categoría, fecha y ubicación
- 🛡️ Panel de administración completo
- 🐳 Contenerización con Docker Compose
Hecho por estudiantes del Tecnológico de Costa Rica
| 👤 Integrante |
|---|
| Daniel Alemán |
| José Jiménez |
| Luis Meza |
| José Fabián Zumbado |