Full-stack event ticketing app with a Spring Boot API, React frontend, PostgreSQL, and Keycloak.
api- Spring Boot backendclient- React + Vite frontend
- Java 21
- Node.js 20+
- PostgreSQL running on
localhost:5432 - Docker
- Start Keycloak:
cd api
docker compose down -v
docker compose up -d- Start the backend:
cd api
./mvnw spring-boot:run- Start the frontend:
cd client
npm install
npm run devFrontend runs on http://localhost:5173.
Keycloak is configured for local dev on http://localhost:9090 and auto-imports the realm on startup.
- Realm:
event-ticket-platform - Client:
event-ticket-platform-app - Redirect URI:
http://localhost:5173/callback
Seeded users:
organizer/organizerattendee/attendeestaff/staff
Keycloak admin:
http://localhost:9090admin/admin
Backend defaults:
SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/postgresSPRING_DATASOURCE_USERNAME=postgresSPRING_DATASOURCE_PASSWORD=postgresSPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=http://localhost:9090/realms/event-ticket-platform
Frontend defaults:
VITE_OIDC_AUTHORITY=http://localhost:9090/realms/event-ticket-platformVITE_OIDC_CLIENT_ID=event-ticket-platform-appVITE_OIDC_REDIRECT_URI=http://localhost:5173/callback
- If Keycloak changes are not showing up, rerun
docker compose down -vbeforedocker compose up -d. - Organizer flows live under
/dashboard/events. - Attendee flows live under
/dashboard/tickets. - Staff validation lives under
/dashboard/validate-qr.