Skip to content

A full-stack Movie Booking System inspired by BookMyShow, built using the MERN stack. It includes user authentication, movie and show listings, seat selection, booking confirmation, and an admin panel for managing movies and cinemas.

Notifications You must be signed in to change notification settings

sharmachirag760/bookMyShow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

🎬 Movie Booking System

A full-stack web application inspired by BookMyShow, built as part of a hiring assignment. This project demonstrates end-to-end development with backend APIs, frontend UI/UX, database design, and deployment.

🚀 Deployed Project: Live Demo


📌 Features

Core Functionality

  • User Management: Register/login users and associate them with bookings.
  • Cinemas & Screens: List available cinemas and their screens.
  • Movies: Display details and listings.
  • Shows: Manage showtimes (e.g., Movie X at 3PM on Screen 2).
  • Bookings: Users can select up to 6 seats per booking, confirm, and view their booking history.
  • Seat Layout: Fixed layout (10x10 grid), showing booked vs. available seats.

Bonus Features (Implemented)

  • Admin Panel: Add/edit/delete cinemas, screens, and movies.
  • Booking Confirmation: Users see a confirmation screen after booking.
  • Booking History: Users can view their past bookings.

🛠️ Tech Stack

  • Frontend: React (Vite), Redux, Axios
  • Backend: Node.js, Express.js, MongoDB
  • Authentication: JWT (JSON Web Token)
  • Deployment: Vercel (Frontend + Backend)
  • Testing: Postman

⚙️ Installation & Setup (Local)

Prerequisites

  • Node.js (v16+ recommended)
  • MongoDB (local or Atlas)

Steps

  1. Clone the repository:
    git clone https://github.com/sharmachirag760/bookMyShow.git
    cd bookMyShow
    Install dependencies for both frontend & backend:

env

Copy code
MONGO_URL="Mongo_URL"
JWT_SECRET=mysecret
PORT=8082

Run the backend:

cd server
npm i
npm start

Run the frontend:

cd client
npm i
npm start
It will Open the app in browser

🗂️ Database Schema

Users

{
"name": "string",
"email": "string",
"password": "string",
"bookings": [BookingId]
}

Cinemas

{
"name": "string",
"location": "string",
"screens": [ScreenId]
}

Screens

{
"cinemaId": "ObjectId",
"name": "string",
"seats": "10x10 layout"
}

Movies

{
"title": "string",
"description": "string",
"language": "string",
"duration": "number",
"genre": "string",
"poster": "string",
"releaseDate": "date"
}

Shows

{
"movieId": "ObjectId",
"screenId": "ObjectId",
"time": "datetime",
"bookedSeats": []
}

Bookings

{
"userId": "ObjectId",
"showId": "ObjectId",
"seats": [],
"status": "confirmed/cancelled"
}

📌 Evaluation Criteria Alignment Functionality: Covers all required flows (users, movies, cinemas, shows, bookings).

Code Quality: Clean, modular, and maintainable structure.

Backend Design: RESTful APIs with JWT authentication.

Frontend: React with Redux for state management, Ant Design for UI.

Deployment: Hosted on Vercel for live demo.

📜 License This project is built for educational and hiring assignment purposes.

About

A full-stack Movie Booking System inspired by BookMyShow, built using the MERN stack. It includes user authentication, movie and show listings, seat selection, booking confirmation, and an admin panel for managing movies and cinemas.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published