Una plataforma web moderna para la venta de entradas de eventos como conciertos, festivales, deportes y teatro.
ReTicket es una aplicación web completa que permite a los usuarios descubrir, buscar y comprar entradas para diferentes tipos de eventos. La plataforma ofrece una experiencia de usuario intuitiva con funcionalidades como carrito de compras, filtros avanzados y un sistema de checkout simplificado.
- Sistema de autenticación: Login, registro y gestión de sesiones con Spring Security
- Catálogo de eventos: Navegación por eventos organizados por categorías
- Búsqueda avanzada: Búsqueda por nombre, descripción, sede o ubicación
- Filtros inteligentes: Filtrado por tipo de evento, fecha y ubicación
- Carrito de compras: Gestión híbrida con localStorage y persistencia en base de datos
- Checkout: Proceso de compra completo con integración de usuarios
- Gestión de eventos: Los usuarios pueden crear y administrar sus propios eventos
- Panel de administración: Herramientas para administradores para gestionar usuarios
- Sistema de notificaciones: Feedback visual con SweetAlert2
- Interfaz responsiva: Adaptada para dispositivos móviles y desktop
- 🎵 Conciertos: Eventos musicales y shows en vivo
- 🎪 Festivales: Festivales de música y entretenimiento
- ⚽ Deportes: Eventos deportivos de diferentes disciplinas
- 🎭 Teatro: Obras teatrales y espectáculos escénicos
- Java 17
- Spring Boot
- Spring Data JPA
- Spring Security (autenticación y autorización)
- Maven
- MySQL (configurado para base de datos)
- HTML5
- CSS3 (con Flexbox y Grid)
- JavaScript ES6+
- Mustache (motor de plantillas)
- SweetAlert2 (notificaciones y feedback)
- MVC (Model-View-Controller)
- REST API (implementación básica)
- Responsive Design
reticket/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/example/reticket/
│ │ │ ├── controller/ # Controladores REST y MVC
│ │ │ ├── model/ # Entidades y modelos de datos
│ │ │ ├── service/ # Lógica de negocio
│ │ │ ├── repository/ # Acceso a datos
│ │ │ └── db/ # Entidades de base de datos
│ │ └── resources/
│ │ ├── static/
│ │ │ ├── css/ # Hojas de estilo
│ │ │ ├── js/ # JavaScript del cliente
│ │ │ └── img/ # Imágenes y recursos
│ │ └── templates/ # Plantillas Mustache
│ └── test/ # Tests unitarios e integración
├── target/ # Archivos compilados
├── pom.xml # Configuración Maven
└── README.md # Este archivo
- Java 17 o superior
- Maven 3.6+
- MySQL (opcional, configurado pero no implementado completamente)
-
Clonar el repositorio
git clone https://github.com/Jjoaquin04/reticket.git cd reticket -
Compilar el proyecto
mvn clean compile
-
Ejecutar la aplicación
mvn spring-boot:run
-
Acceder a la aplicación
http://localhost:8080
- Crear cuenta: Accede a
/loginy selecciona "Registrarse" - Iniciar sesión: Introduce tus credenciales en la página de login
- Roles: Los usuarios pueden ser USER (estándar) o ADMIN (administrador)
- Página de inicio: Muestra eventos recomendados y slider de imágenes
- Catálogo de eventos: Acceso a
/eventscon filtros y búsqueda - Búsqueda: Utiliza la barra de búsqueda en el header
- Carrito: Haz clic en el icono del carrito para ver los productos añadidos
- Mis eventos: Accede a
/myEventspara ver tus eventos creados - Crear evento: Utiliza
/newEventpara añadir un nuevo evento - Mis tickets: Revisa tus compras en
/myTickets
- Gestión de usuarios: Accede a
/manageProfilespara administrar usuarios - Permisos: Los administradores pueden ver y modificar todos los usuarios
- Añadir al carrito: Haz clic en "Comprar" en cualquier evento
- Gestionar carrito: Modifica cantidades o elimina productos desde el menú desplegable
- Checkout: Haz clic en "Finalizar compra" para revisar el pedido
- Pago: Simula el proceso de pago (sin procesamiento real)
- Por categoría: Utiliza el menú desplegable "Events" en el header
- Por texto: Busca por nombre, descripción, sede o ubicación
- Por fecha: Filtra eventos por rango de fechas
- Por ubicación: Busca eventos en ciudades específicas
El proyecto utiliza MySQL para la persistencia de datos. La aplicación incluye entidades para usuarios, eventos, tickets y carrito de compras.
-
Configurar application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/reticket spring.datasource.username=tu_usuario spring.datasource.password=tu_contraseña spring.jpa.hibernate.ddl-auto=update
-
Crear la base de datos
CREATE DATABASE reticket;
La aplicación maneja dos tipos de usuarios:
- USER: Usuario estándar que puede comprar entradas y gestionar sus propios eventos
- ADMIN: Administrador con permisos para gestionar usuarios del sistema
GET /- Página de inicioGET /events- Catálogo de eventos con filtrosGET /search- Búsqueda de eventosGET /checkout- Página de checkoutGET /login- Página de login/registroGET /profile- Perfil de usuarioGET /myEvents- Gestión de eventos del usuarioGET /newEvent- Crear nuevo eventoGET /myTickets- Tickets del usuarioGET /manageProfiles- Panel de administración (solo ADMIN)
POST /api/users/register- Registro de usuariosPOST /api/users/login- AutenticaciónGET /api/shopping-cart- Obtener carrito del usuarioPOST /api/shopping-cart/add- Añadir item al carritoPUT /api/shopping-cart/update- Actualizar cantidad en carritoDELETE /api/shopping-cart/remove- Eliminar item del carritoGET /api/events/user/{userId}- Eventos de un usuarioPOST /api/events- Crear nuevo eventoGET /api/admin/users- Gestionar usuarios (solo ADMIN)
?eventType=CONCERT|FESTIVAL|SPORTS|THEATER?location=ciudad?startDateTime=yyyy-MM-dd?endDateTime=yyyy-MM-dd?q=término_búsqueda
- Spring Security: Configuración completa con roles USER y ADMIN
- Sesiones: Gestión de sesiones de usuario
- Protección de rutas: Endpoints protegidos según el rol de usuario
- Sanitización: Filtrado de caracteres especiales en búsquedas
- SweetAlert2: Notificaciones elegantes para feedback al usuario
- LocalStorage: Fallback para carrito cuando el usuario no está autenticado
- JavaScript modular: Código organizado en módulos específicos
- Interfaz reactiva: El carrito mantiene estado durante las operaciones
- Entidades JPA: User_, Event, Ticket, ShoppingCart, CartItem
- Relaciones: OneToMany, OneToOne configuradas correctamente
- Cascadas: Gestión automática de entidades relacionadas
# Ejecutar tests
mvn test
# Ejecutar tests con reporte de cobertura
mvn test jacoco:report- Fork del proyecto
- Crear una rama para tu característica (
git checkout -b feature/nueva-caracteristica) - Commit de tus cambios (
git commit -am 'Añadir nueva característica') - Push a la rama (
git push origin feature/nueva-característica) - Crear un Pull Request
- El procesamiento de pagos es simulado (no se procesan pagos reales)
- Algunos caracteres especiales en búsquedas pueden causar errores
- La funcionalidad de notificaciones por email no está implementada
- Falta validación completa en algunos formularios del frontend
- Sistema de autenticación y registro
- Persistencia del carrito en base de datos
- Gestión de eventos por usuarios (mis eventos)
- Panel de administración
- API REST básica
- Sistema de pagos real (integración con pasarelas de pago)
- Notificaciones por email
- API REST completa con documentación
- Tests de integración
- Dockerización
- Sistema de reviews y valoraciones
- Recuperación de contraseña
- Integración con calendarios externos
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
- Jjoaquin04 - Desarrollador - GitHub
- CodeInIA - Desarrollador - GitHub
- Alexx019 - Desarrollador - GitHub
- Spring Boot community por la excelente documentación
- Comunidad de desarrolladores por las herramientas open source utilizadas
- Inspiración en plataformas como Ticketmaster y Eventbrite
⭐ ¡No olvides dar una estrella al proyecto si te ha sido útil!