Ticket booking app The goal is to build a seat reservation system for a multiplex.
Business use case:
- The user selects the day and the time when he/she would like to see the movie.
- The system lists movies available in the given time interval
- The user chooses a particular screening.
- The system gives information regarding screening room and available seats.
- The user chooses seats, and gives the information about the person doing the reservation
- The system gives back the total amount to pay and reservation expiration time.
- In the last step, in addition to the total amount and reservation expiration time, a confirmation link should also be given (by email)
- User accesses the link to confirm reservation
Assumptions:
- The system covers a single cinema with multiple rooms (multiplex).
- Seats can be booked at latest 15 minutes before the screening begins.
- Screenings given in point 2. of the scenario should be sorted by title and screening time.
- There are three ticket types: adult (25 PLN), student (18 PLN), child (12.50 PLN).
Requirements:
- The data in the system should be valid, in particular:
- name and surname should each be at least three characters long, starting with a capital letter. The surname could consist of two parts separated with a single dash, in this case the second part should also start with a capital letter.
- reservation applies to at least one seat.
- There cannot be a single place left over in a row between two already reserved places.
- The system should properly handle Polish characters.
- If the user does not confirm the reservation in 15 minutes (but not later than 15 minutes before the screening), the system should cancel the reservation.
- Reservation cancellation should happen in two cases:
- 15 minutes after the reservation is made,
- 15 minutes before the screening.
- Java 14
- Maven
You can run the booking app by simply typing the following:
Normal:
$ ./mvnw spring-boot:run
With test data:
$ ./mvnw spring-boot:run -Dspring.profiles.active=test_data
Run unit tests:
$ ./mvnw test
Hire me?