You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
⏱️ Nota: La primera carga puede tomar unos momentos debido a que el backend y la base de datos están desplegados en Render (plan gratuito), lo cual causa un "cold start" inicial.
📋 Descripción
Sistema de gestión de eventos de carreras desarrollado con Spring Boot 3.4.4 y Java 17. Permite administrar eventos, vehículos, usuarios, categorías y resultados de etapas de carreras. Incluye autenticación dual (tradicional y OAuth2), gestión de archivos y un completo sistema de roles y permisos.
✨ Características Principales
🔐 Autenticación Dual: JWT tradicional y OAuth2 con Google
👥 Gestión de Usuarios: CRUD completo con roles de administrador
🚗 Gestión de Vehículos: Registro y administración de vehículos por usuario
🏆 Gestión de Eventos: Creación y administración de eventos de carrera
🏁 Gestión de Etapas: Control de etapas con neutralización
📊 Resultados y Clasificaciones: Cálculo automático de tiempos y clasificaciones
📁 Gestión de Archivos: Subida segura de imágenes y documentos
🔒 Seguridad Avanzada: JWT, validaciones y control de acceso por roles
📱 API RESTful: Endpoints completos para integración frontend
🧪 Testing Completo: Cobertura exhaustiva de tests unitarios e integración
🛠️ Stack Tecnológico
Backend Framework
Spring Boot 3.4.4
Java 17
Spring Security (JWT + OAuth2)
Spring Data JPA
Spring Validation
Base de Datos
PostgreSQL (Producción - Render)
MySQL 8.0 (Desarrollo local)
H2 (Testing)
Seguridad y Autenticación
JWT (JSON Web Tokens) - JJWT 0.11.5
OAuth2 Client - Google Authentication
Spring Security - Autorización y filtros
Testing
JUnit 5 (Jupiter)
Mockito 4.0.0 - Mocking framework
Spring Boot Test - Testing de integración
WebFlux - Testing reactivo
Herramientas de Desarrollo
Maven - Gestión de dependencias
Spring Boot Actuator - Monitoreo y métricas
Dotenv - Gestión de variables de entorno
🏗️ Arquitectura
src/main/java/com/udea/gpx/
├── controller/ # Capa de presentación (API REST)
├── service/ # Lógica de negocio
├── repository/ # Acceso a datos (JPA)
├── model/ # Entidades del dominio
├── config/ # Configuraciones
├── dto/ # Data Transfer Objects
├── util/ # Utilidades y helpers
├── SecurityConfig.java # Configuración de seguridad
├── JwtUtil.java # Utilidades JWT
└── GpxApplication.java # Clase principal
# Base de DatosDB_URL=jdbc:postgresql://localhost:5432/gpx_dbDB_USERNAME=tu_usuarioDB_PASSWORD=tu_password# JWT ConfigurationJWT_SECRET=tu-clave-secreta-super-larga-y-segura-para-jwt-tokens# Google OAuth2GOOGLE_CLIENT_ID=tu-google-client-idGOOGLE_CLIENT_SECRET=tu-google-client-secretGOOGLE_OAUTH2_REDIRECT_URI=http://localhost:8080/login/oauth2/code/google# FrontendFRONTEND_REDIRECT_URL=http://localhost:3000/# CORSCORS_ALLOWED_ORIGINS=http://localhost:3000# Puerto del servidorPORT=8080
🚀 Instalación y Ejecución
Clonar el repositorio
git clone <repository-url>cd gpx-backend
Configurar base de datos
CREATEDATABASEgpx_db;
Instalar dependencias
mvn clean install
Ejecutar la aplicación
mvn spring-boot:run
Acceder a la API
http://localhost:8080/api
🧪 Testing
Ejecutar todos los tests
mvn test
Ejecutar tests específicos
mvn test -Dtest=UserControllerTests
mvn test -Dtest=EventControllerTests
Cobertura de Tests
9 archivos de test completos
Tests unitarios para todos los controladores
Tests de integración para flujos completos
Mocking de dependencias con Mockito
Validación de endpoints y autenticación
📁 Gestión de Archivos
Tipos de archivo soportados
Imágenes: JPG, JPEG, PNG, GIF, WebP
Documentos: PDF (para seguros médicos)
Validaciones de seguridad
✅ Validación de tipo MIME
✅ Validación de extensión
✅ Límite de tamaño (10MB)
✅ Eliminación de archivos anteriores
✅ Estructura de directorios segura
Estructura de almacenamiento
uploads/
├── profiles/ # Fotos de perfil
├── events/ # Imágenes de eventos
└── insurance/ # Documentos de seguro
🔒 Seguridad
Autenticación
JWT Tokens con expiración configurable
OAuth2 integración con Google
Filtros de seguridad personalizados
Validación de tokens en cada request
Autorización
Roles: Usuario estándar y Administrador
Permisos granulares por endpoint
Validación de propietario para recursos privados
CORS configurado para frontend
Validaciones
Bean Validation (JSR-303) en DTOs
Validación personalizada de archivos
Sanitización de inputs
Manejo seguro de errores
🚀 Despliegue
Producción con Render
# Variables de entorno en Render
DATABASE_URL=postgresql://...
JWT_SECRET=...
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...
Docker (Opcional)
FROM openjdk:17-jdk-slim
COPY target/gpx-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
📊 Monitoreo
Spring Boot Actuator
/actuator/health - Estado de la aplicación
/actuator/info - Información del build
/actuator/metrics - Métricas de rendimiento
🤝 Contribución
Fork del proyecto
Crear branch para feature (git checkout -b feature/nueva-funcionalidad)
Commit de cambios (git commit -am 'Agregar nueva funcionalidad')
Push al branch (git push origin feature/nueva-funcionalidad)
Crear Pull Request
📝 Licencia
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
📞 Contacto
Para consultas sobre el proyecto o colaboraciones, contactar al equipo de desarrollo.
📈 Métricas del Proyecto
📊 Estadísticas de Código
9 Controladores REST con 45+ endpoints
8 Entidades JPA con relaciones complejas
10 Servicios con lógica de negocio
9 Suites de Testing con 300+ tests
Cobertura de Tests: >85% líneas de código
Arquitectura en 3 capas: Controller → Service → Repository
🎯 Casos de Uso Principales
👨💼 Administrador
Gestionar eventos de carreras
Administrar usuarios y roles
Subir imágenes y documentos
Calcular resultados y clasificaciones
Neutralizar etapas
👤 Usuario Final
Registrarse (local o Google)
Gestionar perfil completo
Registrar vehículos
Ver eventos y resultados
Actualizar información personal
🔄 Changelog
v0.0.1-SNAPSHOT (Actual)
✅ Core System: CRUD completo para todas las entidades
✅ Authentication: Sistema dual JWT + OAuth2 Google
✅ File Management: Sistema de archivos con validaciones de seguridad
✅ Testing Suite: 300+ tests unitarios e integración
✅ Multi-Database: Soporte PostgreSQL/MySQL/H2
✅ Security: Autorización granular + validaciones + CORS
✅ API Documentation: 45+ endpoints RESTful documentados
✅ Production Ready: Configuración para Render + variables de entorno