Skip to content
All work

Case study · University project, TU Wien

Ticketline

A webshop for event tickets, built by a team of six in the Software Engineering project (SEPM) at TU Wien, on top of a project template from the course. I worked on the backend and the frontend: ticket purchase with an interactive seating plan, news, event creation and account security.

Full-stack developer in a team of six
Role
Winter semester 2023/24 November 2023 – January 2024
Timeline
Java 17, Spring Boot 3, Spring Security (JWT), JPA, H2, MapStruct, iText, Angular 17, Angular Material, Cypress, GitLab CI
Stack
Completed university project
Status
Ticketline show page for Midsummer Music Fest on 2 December 2024: a seating plan with seats drawn as ellipses and a hatched standing sector, two seats selected and highlighted, next to the Reserve Ticket and Buy Ticket panels with two tickets for 233.12 euros
Demo data

The project

Ticketline sells tickets for events. Customers search events, shows, artists and venues, pick their seats in a seating plan, reserve, buy and cancel tickets, and get PDF tickets and invoices. Admins manage artists, events, rooms with their seating plans, news and users. The team built it in one semester, starting from a project template the course provided.

My role

I worked in the Spring Boot backend and the Angular frontend, including tests. My parts were ticket purchase and reservation, news, event creation, account locking and user management, plus fixes to the CI and end-to-end pipeline. Search, the room and seating-plan editor, registration and email verification, and the PDF tickets and invoices were built by teammates. In the final code base, about 4,100 of roughly 28,500 lines are mine.

What I built

  • Ticket purchase & reservation

    The show page with its interactive seating plan, and the purchase and reservation logic behind it in the backend. Purchases are validated on the server, and seats without a price are greyed out.

  • News with read status

    Read and unread per user, news linked to events, an overview, a detail dialog and a creation form. The endpoint is covered by integration tests.

  • Event creation

    Events with image upload and display. Tickets are generated when shows and sectors are created, and artists are found through a search with autocomplete.

  • Account security

    Accounts lock after repeated failed logins. I extended the list of locked users into a full user administration with deleting, and fixed a bug that still let locked users log in.

  • CI & E2E fixes

    Several fixes to the GitLab CI pipeline and the Cypress end-to-end job.

Architecture

Architecture of Ticketline The Angular single-page app calls the Spring Boot backend over REST with JWT authentication. The backend is split into endpoint, service and repository layers and stores events, shows, seating plans, orders, news and users in H2 through JPA. It renders tickets and invoices as PDFs with iText and sends verification and password-reset emails. GitLab CI runs the backend tests and the Cypress end-to-end tests and builds the Docker image. REST · JWTJPAimageAngular clientGitLab CISpring Boot backendH2iText PDFsMailSPA, Angular Materialtests, Cypress E2E, imageendpoint · service · repoSpring Security, JWTevents, orders, userstickets, invoicesverification, reset
An Angular single-page app talks to a layered Spring Boot backend over REST with JWT. The backend stores its data in H2 through JPA and renders tickets and invoices as PDFs with iText. GitLab CI runs the tests and builds the image.

Results

70 backend tests
Integration tests with MockMvc and unit tests, all passing.
From seat to PDF
A seat picked in the plan ends as a bought ticket with a PDF ticket and an invoice.
Public source
The code is on GitLab.
  • Ticketline start page: a carousel of event photos, a search field for events, artists and locations with filter and date buttons, and a bar chart of the top ten events by tickets sold
    Demo data · Start page
  • Ticketline event page for Midsummer Music Fest, a concert: a festival photo, a short description with buttons to the shows and the details, and a table of shows with date, venue, price range and a Get ticket button
    Demo data · Event page
  • Ticketline news overview with the tabs News and Already seen: unread news items such as Live Concert Experience and Musical Showcase, each with date and summary, and an Add news button
    Demo data · News with read status
  • Ticketline user administration: a table of demo accounts with their account type and buttons to lock or unlock, edit, email and delete each one, above it a button to add a new account
    Demo data · User administration