Descripción EventManager es una plataforma web para crear y administrar eventos de forma completa: permite a los usuarios registrarse, acceder, gestionar su perfil y participar en eventos, así como controlar sus entradas y regalos en estos.
- Autenticación: registro, login, logout y refresh token.
- Perfil de usuario: consulta y actualización de datos.
- Gestión de eventos: creación, listado, detalle y actualización.
- Entradas: inscripción a eventos y gestión de tickets.
- Regalos: visualización y administración.
- SPA con routing: vistas públicas y privadas en el frontend.
| Capa | Tecnología | Versión / Detalles |
|---|---|---|
| Frontend | Vue | 3.x |
| Frontend | Vite | 5.x |
| Frontend | TypeScript | 4.x |
| UI | Element Plus | 2.x |
| HTTP Client | Axios | 0.21.x |
| Backend | Java | 21 |
| Backend | Spring Boot | 3.4.4 |
| Backend | Spring Security | (starter) |
| Backend | Spring Data JPA | (starter) |
| API Docs | springdoc-openapi-ui | 1.6.9 |
| Auth | JJWT | 0.12.6 |
| DB | PostgreSQL | (driver org.postgresql) |
| Build | Maven Wrapper | mvnw / mvnw.cmd |
| Cloud AWS | AWS SDK (S3) | Dependencias incluidas |
Un único repositorio con:
- Backend en la raíz (Spring Boot + Maven)
- Frontend en
frontend/(Vue + Vite) - Tests en
src/test/ - Workflow CI en
.github/workflows/ci.yml
Árbol simplificado:
eventManager/
├─ pom.xml
├─ mvnw
├─ mvnw.cmd
├─ docker-compose-base.local.yaml
├─ docker-compose-detailed.local.yaml
├─ docker-compose.aws.yaml
├─ .env.example
├─ .gitignore
├─ src/
│ ├─ main/
│ │ ├─ java/
│ │ │ └─ eventManager/
│ │ └─ resources/
│ │ ├─ api/
│ │ ├─ application.yml
│ │ └─ static/
│ └─ test/
│ ├─ java/
│ │ └─ eventManager/
│ │ ├─ security/
│ │ ├─ service/
│ │ ├─ web/
│ │ └─ selenium/
│ └─ resources/
├─ frontend/
│ ├─ package.json
│ ├─ vite.config.mjs
│ ├─ index.html
│ ├─ public/
│ └─ src/
│ ├─ api/
│ ├─ components/
│ ├─ router/
│ ├─ stores/
│ ├─ views/
│ └─ main.ts
├─ minio_data/
├─ .github/
│ └─ workflows/
├─ cd.yml
│ └─ ci.yml
- Frontend:
http://localhost:3000 - Backend:
http://localhost:8090
- Base URL local:
http://localhost:8090 - Swagger UI:
http://localhost:8090/swagger-ui/index.html
Este proyecto utiliza variables de entorno principalmente para el backend (Spring Boot). Se proporciona un fichero un fichero .env.example de referencia.
Nota (pendiente): Si el frontend se sirve desde un dominio/puerto distinto al del backend (S3, Cloudfront, etc), será necesario ajustar la configuración CORS del backend para permitir ese origen.
El proyecto utiliza MinIO (compatible con S3) para desarrollo local.
docker compose -f docker-compose-base.local.yaml up -d- API: http://localhost:9000
- Consola Web: http://localhost:9001
- Usuario:
${MINIO_ACCESS_KEY}(ver.env.example) - Contraseña:
${MINIO_SECRET_KEY}(ver.env.example)
El bucket event-manager-images se crea automáticamente al iniciar la aplicación con perfil dev.
Si quieres levantar la aplicación completa en local junto con PostgreSQL y MinIO:
docker compose -f docker-compose-detailed.local.yaml up -d --buildEste stack arranca:
- App:
http://localhost:8090 - PostgreSQL:
localhost:5432 - MinIO API:
http://localhost:9000 - MinIO Console:
http://localhost:9001
La imagen de la app se construye con el Dockerfile de la raíz, que ya integra el frontend compilado dentro del backend Spring Boot.
┌─────────────────┐
│ S3Service │ ← Interfaz común
└─────────────────┘
↑
│ implements
┌────┴──────┐
┌───┴────┐ ┌───┴─────────┐
│MinioSvc│ │S3ServiceImpl│
│@dev │ │@aws │
└────────┘ └─────────────┘
│ │
┌───┴────┐ ┌───┴────┐
│MinIO │ │AWS S3 │
│Docker │ │Cloud │
└────────┘ └────────┘
El proyecto incluye:
- Tests unitarios (servicios, seguridad, excepciones)
- Tests de controlador (WebMvc)
- Tests de integración UI con Selenium (vistas de autenticación, home, eventos, usuarios, regalos y tickets)
unit: perfil por defecto; excluye Seleniumselenium: ejecuta suites Seleniumselenium-ci: desactiva tareas pesadas para acelerar CI Selenium
- Unit tests:
./mvnw -Punit test - Selenium:
./mvnw -Pselenium,selenium-ci test - Cobertura JaCoCo:
./mvnw -Punit verify
- Plugin:
jacoco-maven-plugin. prepare-agent: instrumenta durante tests.reporten faseverify: genera reportes.- Ficheros generados típicos:
target/jacoco.exectarget/site/jacoco/index.htmltarget/site/jacoco/jacoco.xml
Estos ficheros son artefactos de ejecución, no se versionan porque target/ está ignorado en .gitignore.
¿Qué tareas se ejecutan automáticamente?
- Ejecución de tests unitarios, Selenium y generación de cobertura con JaCoCo.
- Publicación de reportes de tests y cobertura como artifacts.
¿Cuándo se ejecuta?
- En push o pull requests hacia
main,develop,release/**yhotfix/**.
¿Dónde se almacenan los artefactos?
- En GitHub Actions → Artifacts del run correspondiente (
surefire-*,jacoco-*,backend-log-*).
¿Qué tareas se ejecutan automáticamente?
- Construcción de la imagen Docker usando
Dockerfile. - Publicación de la imagen en DockerHub.
- Publicación del
docker-compose.aws.yamlcomo OCI artifact (solo en releases).
¿Cuándo se ejecuta?
- En commits a
main(por ejemplo tras merge de un pull request). - En publicaciones de release.
¿Dónde se almacenan los artefactos?
- En DockerHub:
docker.io/<usuario>/eventmanagerapp. - El compose OCI:
docker.io/<usuario>/eventmanagerapp-compose:<tag-release>. - Etiquetas típicas:
latest(main),shacorto y etiqueta de release.
Actualmente el endpoint público usa la siguiente IP elástica: https://52.51.236.28/