Una aplicación completa para la creación, gestión y seguimiento de torneos deportivos en formato de playoffs, con soporte para sorteos de equipos y grupos, así como generación automática de llaves eliminatorias (ida o ida y vuelta).
- Creación y edición de torneos en formato playoffs.
- Sorteo automático de equipos en grupos.
- Generación de llaves eliminatorias (simple o doble partido).
- Gestión de equipos y jugadores con validaciones de edad, DNI y roles.
- Registro de resultados y avance automático en la llave.
- Autenticación y autorización con JWT:
- ADMIN → Acceso completo.
- USUARIO → Gestión de sus torneos y equipos.
- Público → Visualización de torneos y resultados.
- Paginación y filtros en listados (equipos, torneos, jugadores) para mejor rendimiento y experiencia.
- Carga perezosa (Lazy Loading) para mejorar el rendimiento en la carga de datos.
- Interfaz intuitiva optimizada para organizadores y espectadores.
- Spring Boot 3 → API REST y lógica de negocio.
- Spring Security + JWT → Autenticación y autorización.
- JPA/Hibernate → Persistencia de datos.
- MySQL → Base de datos relacional.
- Lombok → Reducción de código boilerplate.
- Swagger → Documentación de Api.
- ModelMapper → Mapeo de DTOs.
- Angular 19 → SPA moderna y reactiva.
- Bootstrap + Sass → Estilos y responsive design.
- NgToast → Manejo global de notificaciones.
- Docker → Contenerización y despliegue.
- Docker Compose → Orquestación de frontend, backend y base de datos.
src/main/java/com/gestordetorneos
├── 📡 controller/ # Controladores REST (API endpoints)
├── ⚙️ service/ # Lógica de negocio y reglas del dominio
├── 🗃 repository/ # Repositorios JPA para acceso a datos
├── 🏷 model/ # Entidades JPA y enums del dominio
├── 📦 dto/ # Objetos de transferencia (Request/Response)
├── 🔧 configuration/ # Configuraciones (ModelMapper, Swagger, CORS, etc.)
└── 🔐 security/ # Seguridad JWT, filtros, autenticación y autorización
src/
├── 🌐 app/
│ ├── 🔐 core/
│ │ ├── 🛡️ guards/ # Protección de rutas
│ │ ├── ⚙️ interceptors/ # Interceptores HTTP
│ │ ├── 📦 models/ # Interfaces y tipos
│ │ └── 🔄 services/ # Servicios compartidos (auth, torneos, otros)
│ │
│ ├── 🧩 features/
│ │ ├── 🏠 home/ # Página de inicio
│ │ ├── 🏆 torneos/ # Gestión de torneos
│ │ ├── 🔑 login/ # Autenticación
│ │ └── 🔄 playoffs/ # Gestión de eliminatorias
│ │
│ ├── 🎨 layouts/
│ │ ├── 🚪 authLayout/ # Layout para login y registro
│ │ └── 🧱 mainLayout/ # Layout principal con menú y barra superior
│ │
│ ├── 🔗 shared/ # Componentes, módulos y utilidades reutilizables
│ └── 📏 pipes/ # Pipes personalizados (formato de fechas, otros)
- DTO Pattern → Separación entre entidades y datos expuestos por la API.
- Service Layer Pattern → Lógica centralizada en servicios.
- Repository Pattern → Acceso a datos desacoplado.
- Modularización en Angular → Componentes standalone y carga perezosa.
- Uso de interfaces y clases para separar modelos de API y modelos internos de la app.
- Validaciones personalizadas en backend (edad mínima/máxima, fechas de torneos, otros).
Usuario administrador inicial configurado en application.properties (backend).
📄 Licencia
Este proyecto está bajo la licencia MIT - consulta el archivo LICENSE para más detalles.
¿Tienes preguntas, sugerencias o quieres unirte al equipo como desarrollador? ¡Contáctame!
- 📧 Email: agustincv1997@gmail.com
- 💼 LinkedIn: Agustin
- 🐙 GitHub: @resilio-dev
- 📱 WhatsApp: +54 9 294 471 6770
💬 Estoy abierto a colaboraciones, feedback y nuevas ideas. ¡Hablemos!