Skip to content

Jjoaquin04/reticket

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

139 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ReTicket 🎫

Una plataforma web moderna para la venta de entradas de eventos como conciertos, festivales, deportes y teatro.

📋 Descripción

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.

🚀 Características

✨ Funcionalidades principales

  • 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

🎯 Categorías de eventos

  • 🎵 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

🛠️ Tecnologías utilizadas

Backend

  • Java 17
  • Spring Boot
  • Spring Data JPA
  • Spring Security (autenticación y autorización)
  • Maven
  • MySQL (configurado para base de datos)

Frontend

  • HTML5
  • CSS3 (con Flexbox y Grid)
  • JavaScript ES6+
  • Mustache (motor de plantillas)
  • SweetAlert2 (notificaciones y feedback)

Arquitectura

  • MVC (Model-View-Controller)
  • REST API (implementación básica)
  • Responsive Design

📁 Estructura del proyecto

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

🚀 Instalación y ejecución

Prerrequisitos

  • Java 17 o superior
  • Maven 3.6+
  • MySQL (opcional, configurado pero no implementado completamente)

Pasos de instalación

  1. Clonar el repositorio

    git clone https://github.com/Jjoaquin04/reticket.git
    cd reticket
  2. Compilar el proyecto

    mvn clean compile
  3. Ejecutar la aplicación

    mvn spring-boot:run
  4. Acceder a la aplicación

    http://localhost:8080
    

🎮 Uso de la aplicación

Registro y autenticación

  1. Crear cuenta: Accede a /login y selecciona "Registrarse"
  2. Iniciar sesión: Introduce tus credenciales en la página de login
  3. Roles: Los usuarios pueden ser USER (estándar) o ADMIN (administrador)

Navegación principal

  1. Página de inicio: Muestra eventos recomendados y slider de imágenes
  2. Catálogo de eventos: Acceso a /events con filtros y búsqueda
  3. Búsqueda: Utiliza la barra de búsqueda en el header
  4. Carrito: Haz clic en el icono del carrito para ver los productos añadidos

Gestión de eventos (usuarios autenticados)

  1. Mis eventos: Accede a /myEvents para ver tus eventos creados
  2. Crear evento: Utiliza /newEvent para añadir un nuevo evento
  3. Mis tickets: Revisa tus compras en /myTickets

Panel de administración (solo ADMIN)

  1. Gestión de usuarios: Accede a /manageProfiles para administrar usuarios
  2. Permisos: Los administradores pueden ver y modificar todos los usuarios

Proceso de compra

  1. Añadir al carrito: Haz clic en "Comprar" en cualquier evento
  2. Gestionar carrito: Modifica cantidades o elimina productos desde el menú desplegable
  3. Checkout: Haz clic en "Finalizar compra" para revisar el pedido
  4. Pago: Simula el proceso de pago (sin procesamiento real)

Filtros y búsqueda

  • 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

🔧 Configuración

Base de datos

El proyecto utiliza MySQL para la persistencia de datos. La aplicación incluye entidades para usuarios, eventos, tickets y carrito de compras.

  1. 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
  2. Crear la base de datos

    CREATE DATABASE reticket;

Roles de usuario

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

📚 API Endpoints

Páginas principales

  • GET / - Página de inicio
  • GET /events - Catálogo de eventos con filtros
  • GET /search - Búsqueda de eventos
  • GET /checkout - Página de checkout
  • GET /login - Página de login/registro
  • GET /profile - Perfil de usuario
  • GET /myEvents - Gestión de eventos del usuario
  • GET /newEvent - Crear nuevo evento
  • GET /myTickets - Tickets del usuario
  • GET /manageProfiles - Panel de administración (solo ADMIN)

API REST Endpoints

  • POST /api/users/register - Registro de usuarios
  • POST /api/users/login - Autenticación
  • GET /api/shopping-cart - Obtener carrito del usuario
  • POST /api/shopping-cart/add - Añadir item al carrito
  • PUT /api/shopping-cart/update - Actualizar cantidad en carrito
  • DELETE /api/shopping-cart/remove - Eliminar item del carrito
  • GET /api/events/user/{userId} - Eventos de un usuario
  • POST /api/events - Crear nuevo evento
  • GET /api/admin/users - Gestionar usuarios (solo ADMIN)

Filtros soportados

  • ?eventType=CONCERT|FESTIVAL|SPORTS|THEATER
  • ?location=ciudad
  • ?startDateTime=yyyy-MM-dd
  • ?endDateTime=yyyy-MM-dd
  • ?q=término_búsqueda

🔒 Seguridad y características técnicas

Autenticación y autorización

  • 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

Características del frontend

  • 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

Arquitectura de datos

  • Entidades JPA: User_, Event, Ticket, ShoppingCart, CartItem
  • Relaciones: OneToMany, OneToOne configuradas correctamente
  • Cascadas: Gestión automática de entidades relacionadas

🧪 Testing

# Ejecutar tests
mvn test

# Ejecutar tests con reporte de cobertura
mvn test jacoco:report

🤝 Contribución

  1. Fork del proyecto
  2. Crear una rama para tu característica (git checkout -b feature/nueva-caracteristica)
  3. Commit de tus cambios (git commit -am 'Añadir nueva característica')
  4. Push a la rama (git push origin feature/nueva-característica)
  5. Crear un Pull Request

🐛 Problemas conocidos

  • 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

🗺️ Roadmap

Próximas características

  • 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

📄 Licencia

Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.

👥 Autores

  • Jjoaquin04 - Desarrollador - GitHub
  • CodeInIA - Desarrollador - GitHub
  • Alexx019 - Desarrollador - GitHub

🙏 Agradecimientos

  • 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!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors