2020-09-02 19:17:11 +02:00
2020-09-02 19:17:11 +02:00
2020-09-02 19:17:11 +02:00
2020-09-02 19:17:11 +02:00
2020-09-02 19:17:11 +02:00
2020-09-02 19:17:11 +02:00
2020-09-02 19:17:11 +02:00
2020-09-02 19:17:11 +02:00
2020-09-02 19:17:11 +02:00
2020-09-02 19:17:11 +02:00
2020-09-02 19:17:11 +02:00
2020-09-02 19:17:11 +02:00
2020-09-02 19:17:11 +02:00
2020-09-02 19:17:11 +02:00

evental

Esta aplicación se ha desarrollado con los frameworks Spring Boot para el backend y React para el frontend.

La integración de los mismos ha sido facilitada gracias a la herramienta JHipster.

Como entorno de desarrollo se ha utilizado Intellij IDEA bajo Windows 10.

El objetivo final ha sido crear un sistema de gestión de eventos en el que un usuario puede registrarse y dar de alta tanto artistas como recintos, crear eventos combinando las diferentes opciones ofrecidas y, finalmente, permitir que cualquier usuario compre entradas para los mismos.

Desarrollo

Para poder compilar este proyecto es necesario instalar Node.js

Después de la instalación, ejecutar el siguiente comando en la ruta del proyecto para llevar a cabo el build.

mvnw

La finalización con éxito del mismo mostrará un enlace a http://localhost:8080 para acceder a la aplicación.

Entrada al sistema

Se podrá registrar un usuario desde cero. Para confirmar su cuenta el usuario habrá de activarla desde la dirección que correo que facilite en el registro.

Este servicio se ha habilitado mediante una cuenta de correo en Gmail que hace uso de la utilidad de envío de correo integrada.

O bien, podrán usarse los siguientes usuarios ya predefinidos:

  • admin/admin
  • usuario1/usuario1
  • usuario2/usuario2
  • usuario3/usuario3
  • usuario4/usuario4
  • usuario5/usuario5

El primero es, obviamente, el administrador con acceso a todas las funciones de gestión tanto de entidades como del sistema.

Los cinco restantes son usuarios con un artista y un recinto en una ciudad diferente cada uno.

Al entrar al sistema se ve la página de inicio con eventos que cumplen los criterios por defecto (todas las fechas y en Madrid):

Inicio

Se han predefinido una serie de eventos que implementan las diferentes casuísticas: artista y recinto del mismo usuario, de diferente usuario, con diferentes tarifas, confirmados o no, etc...

Un usuario puede ver sus diferentes artistas/recintos/eventos en el apartado "Cuenta" de la cabecera.

Eventos

Un evento no confirmado aparecerá en un tono más oscuro.

En la creación de un evento tenemos las opciones para escoger, entre otras opciones, el artista y recinto. Si un usuario intenta crear un evento para uno de sus artistas, aparecerán disponibles todos los recintos, pero si intenta crear un evento para otro artista sólo tendrá opción a crearlo para su propio recinto.

Un evento necesita estar confirmado tanto por el artista como por el recinto, y para ello se han habilitado checkboxes que sólo aparecerán visibles para el usuario interesado. También es posible que un evento sea rechazado por una de las partes, en cuyo caso desaparecerá del listado de eventos.

Evento

Por otra parte, es posible plantear una negociación guardando los cambios pretendidos en el evento, el cual aparecerá como pendiente en el listado de los usuarios implicados.

Finalmente, si se confirma, el evento pasa a disponibilidad del público para empezar a comprar entradas.

Compilación para producción

Empaquetamiento jar

En caso de querer compilar el jar para producción, ejecutar:

mvnw -Pprod clean

Para probar su funcionamiento, ejecutar:

java -jar target/*.jar

Y navegar a http://localhost:8080

Empaquetamiento war

Para empaquetar la aplicación de cara al despliegue en un servidor de aplicaciones, ejecutar:

mvnw -Pprod,war clean

Docker

La aplicación y sus todas sus dependencias se puede dockerizar completamente.

Para ello, primero construímos una image docker de la app con el comando:

mvnw -Pprod jib:dockerBuild

Y después lanzamos el docker compose con:

docker-compose -f src/main/docker/app.yml up -d
Description
No description provided
Readme 614 KiB
Languages
Java 56.6%
TypeScript 40.3%
HTML 1.6%
SCSS 0.9%
CSS 0.4%
Other 0.2%