From b82ccd8208136a9d085c2ab39c8261e6a70a4d8b Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Wed, 7 Aug 2024 15:08:02 +0100 Subject: [PATCH] Add movie reservation system project --- src/data/projects/movie-reservation-system.md | 48 ++++++++++++++++++- src/pages/projects/[projectId].astro | 2 +- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/data/projects/movie-reservation-system.md b/src/data/projects/movie-reservation-system.md index 2ea11bfed..fe6f91c3f 100644 --- a/src/data/projects/movie-reservation-system.md +++ b/src/data/projects/movie-reservation-system.md @@ -7,9 +7,9 @@ difficulty: 'advanced' nature: 'API' skills: - 'Programming Language' - - 'Image Processing' - 'Database' - - 'Queues' + - 'Scheduling' + - 'Authentication' seo: title: 'Movie Reservation System Project Idea' description: 'Build a system that allows users to reserve movie tickets.' @@ -24,3 +24,47 @@ roadmapIds: - 'golang' - 'spring-boot' --- + +You are required to build backend system for a movie reservation service. The service will allow users to sign up, log in, browse movies, reserve seats for specific showtimes, and manage their reservations. The system will feature user authentication, movie and showtime management, seat reservation functionality, and reporting on reservations. + +## Goal + +The goal of this project is to help you understand how to implement complex business logic i.e. seat reservation and scheduling, thinking about the data model and relationships, and complex queries. + +## Requirements + +We have intentionally left out the implementation details to encourage you to think about the design and implementation of the system. However here are some requirements that you can consider: + +### User Authentication and Authorization + +- Users should be able to sign up and log in. +- You also need roles for users, such as admin and regular user. Admins should be able to manage movies and showtimes. +- Regular users should be able to reserve seats for a showtime. + +> You can create the initial admin using seed data. Only admins should be able to promote other users to admin and be able to do things related to movie management, reporting, etc. + +### Movie Management + +- Admins should be able to add, update, and delete movies. +- Each movie should have a title, description, and poster image. +- Movies should be categorized by genre. +- Movies should have showtimes. + +### Reservation Management + +- Users should be able to get the movies and their show times for a specific date. +- Users should be able to reserve seats for a showtime, see the available seats, and select the seats they want. +- Users should be able to see their reservations and cancel them (only upcoming ones). +- Admins should be able to see all reservations, capacity, and revenue. + +## Implementation Considerations + +- Think about the data model and relationships between entities. +- Think about how you will avoid overbooking, and how you will handle seat reservations. +- Think about how you will handle the scheduling of showtimes. +- Think about how you will handle the reporting of reservations. +- Think about how you will handle the authentication and authorization of users. + +
+ +This project is quite complex and will require you to think about the design and implementation of the system. You can use any programming language and database of your choice. I would recommend using a relational database such as MySQL or PostgreSQL. Once you have finished this project, you will have a good understanding of how to implement complex business logic, think about the data model and relationships, and complex queries. You can also extend this project by adding more features such as payment processing, email notifications, etc. \ No newline at end of file diff --git a/src/pages/projects/[projectId].astro b/src/pages/projects/[projectId].astro index a1fecb785..bbec101dc 100644 --- a/src/pages/projects/[projectId].astro +++ b/src/pages/projects/[projectId].astro @@ -105,7 +105,7 @@ const githubUrl = `https://github.com/kamranahmedse/developer-roadmap/tree/maste