Skip to content

orensb/TDP_Project

Repository files navigation

Nest Logo

A progressive Node.js framework for building efficient and scalable server-side applications.

NPM Version Package License NPM Downloads CircleCI Coverage Discord Backers on Open Collective Sponsors on Open Collective Support us

Popcorn Palace Movie Ticket Booking System

Overview

The Popcorn Palace Movie Ticket Booking System is a backend service designed to handle various operations related to movie,showtime, and booking management.

Functionality

The system provides the following APIs:

  • Movie API: Manages movies available on the platform.
  • Showtime API: Manages movies showtime on the theaters.
  • Booking API: Manages the movie tickets booking.

Technical Aspects

The system is built using Java Spring Boot, leveraging its robust framework for creating RESTful APIs. Data persistence can be managed using an in-memory database like H2 for simplicity, or a more robust solution like PostgreSQL for production.

Homework Task

Candidates are expected to design and implement the above APIs, adhering to RESTful principles.

APIs

Movies APIs

API Description Endpoint Request Body Response Status Response Body
Get all movies GET /movies/all 200 OK [ { "id": 12345, "title": "Sample Movie Title 1", "genre": "Action", "duration": 120, "rating": 8.7, "releaseYear": 2025 }, { "id": 67890, "title": "Sample Movie Title 2", "genre": "Comedy", "duration": 90, "rating": 7.5, "releaseYear": 2024 } ]
Add a movie POST /movies { "title": "Sample Movie Title", "genre": "Action", "duration": 120, "rating": 8.7, "releaseYear": 2025 } 200 OK { "id": 1, "title": "Sample Movie Title", "genre": "Action", "duration": 120, "rating": 8.7, "releaseYear": 2025 }
Update a movie POST /movies/update/{movieTitle} { "title": "Sample Movie Title", "genre": "Action", "duration": 120, "rating": 8.7, "releaseYear": 2025 } 200 OK
DELETE /movies/{movieTitle} 200 OK

Showtimes APIs

API Description Endpoint Request Body Response Status Response Body
Get showtime by ID GET /showtimes/{showtimeId} 200 OK { "id": 1, "price":50.2, "movieId": 1, "theater": "Sample Theater", "startTime": "2025-02-14T11:47:46.125405Z", "endTime": "2025-02-14T14:47:46.125405Z" }
Add a showtime POST /showtimes { "movieId": 1, "price":20.2, "theater": "Sample Theater", "startTime": "2025-02-14T11:47:46.125405Z", "endTime": "2025-02-14T14:47:46.125405Z" } 200 OK { "id": 1, "price":50.2,"movieId": 1, "theater": "Sample Theater", "startTime": "2025-02-14T11:47:46.125405Z", "endTime": "2025-02-14T14:47:46.125405Z" }
Update a showtime POST /showtimes/update/{showtimeId} { "movieId": 1, "price":50.2, "theater": "Sample Theater", "startTime": "2025-02-14T11:47:46.125405Z", "endTime": "2025-02-14T14:47:46.125405Z" } 200 OK
Delete a showtime DELETE /showtimes/{showtimeId} 200 OK

bookings APIs

API Description Endpoint Request Body Response Status Response Body
Book a ticket POST /bookings { "showtimeId": 1, "seatNumber": 15 , userId:"84438967-f68f-4fa0-b620-0f08217e76af"} 200 OK { "bookingId":"d1a6423b-4469-4b00-8c5f-e3cfc42eacae" }

Description

Nest framework TypeScript starter repository.

Installation

$ npm install

Running the app

# development
$ npm run start

# watch mode
$ npm run start:dev

# production mode
$ npm run start:prod

Test

# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

# test coverage
$ npm run test:cov

License

Nest is MIT licensed.

TDP_Project

TDP_Project

TDP_Project

TDP_Project

TDP_Project

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published