You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Eine RESTful-Event-Ticketing-Plattform, entwickelt mit Java 26 und Spring Boot 4. Organisatoren können Events
mit mehreren Ticket-Typen erstellen und verwalten, Benutzer können Tickets kaufen (inkl. QR-Code-Generierung) und
Personal kann Tickets validieren. Die Authentifizierung erfolgt über Keycloak (OAuth2 / OpenID Connect).
Features
Event-Management – Organisatoren können Events mit Ticket-Typen anlegen, bearbeiten, löschen und einsehen
Ticket-Verkauf – Benutzer können Tickets für veröffentlichte Events kaufen; Overselling wird durch pessimistisches
Locking verhindert
QR-Code-Generierung – Nach dem Kauf wird automatisch ein QR-Code (ZXing) generiert und als Base64-PNG gespeichert
Ticket-Validierung – Personal kann Tickets per QR-Code oder manuell validieren; Doppelvalidierung wird erkannt
Volltext-Suche – Veröffentlichte Events können per PostgreSQL Full-Text Search durchsucht werden
Rollenbasierte Autorisierung – Drei Rollen: ORGANIZER, STAFF und authentifizierte Benutzer
Technologie-Stack
Technologie
Zweck
Java 26
Programmiersprache
Spring Boot 4.0.6
Application Framework
Spring Data JPA / Hibernate
Datenbankzugriff (ORM)
Spring Security + OAuth2 Resource Server
Authentifizierung & Autorisierung
Spring Validation
Eingabevalidierung
Keycloak
Identity & Access Management
PostgreSQL
Produktionsdatenbank
H2
In-Memory-Datenbank für Tests
MapStruct 1.6.3
DTO-Entity-Mapping
Lombok 1.18.46
Boilerplate-Reduktion
ZXing (Google) 3.5.1
QR-Code-Generierung
Maven
Build-Tool
Docker Compose
Lokale Infrastruktur (Postgres, Keycloak)
Architektur
Die Anwendung folgt einer klassischen Layered Architecture:
Controller (REST-Endpunkte)
↓
Service (Geschäftslogik, Interfaces + Impl)
↓
Repository (Spring Data JPA)
↓
Datenbank (PostgreSQL)
DTOs entkoppeln die API von der Domäne, gemappt mit MapStruct
Globale Exception-Handling über @RestControllerAdvice
JPA-Auditing für created_at / updated_at (via AuditingEntityListener)
Sicherheitskonzept
OAuth2 / JWT – JWT-Tokens werden von Keycloak ausgestellt und von Spring Security validiert
Rollen aus dem JWT (realm_access.roles) werden automatisch in Spring Security GrantedAuthority konvertiert
User-Provisioning – Ein Servlet-Filter legt beim ersten Request automatisch einen lokalen User-Datensatz aus den
JWT-Claims an