Skip to content

Itssanthoshhere/QuickShow-Movie-Theater-Booking-Platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

152 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


QuickShow Project Banner

🎬 QuickShow – Movie Theater Booking Platform

Full-stack movie booking experience built with React, Node.js, and MongoDB. Book tickets in real-time, manage theaters, process payments, and enjoy an admin dashboard that brings the magic of cinema to your fingertips.
Designed for movie lovers, admins, and modern theaters seeking a digital booking system.

Live Demo

πŸ“‹ Table of Contents

  1. ✨ Introduction
  2. βš™οΈ Tech Stack
  3. πŸ”‹ Features
  4. ⚑ Automation & Background Jobs
  5. 🀸 Quick Start
  6. 🧱 Project Structure
  7. 🧩 API Overview
  8. πŸš€ Deployment
  9. πŸ“ Customization
  10. 🀝 Contribution
  11. πŸ”— Contacts
  12. πŸ“„ License
  13. πŸ™ Acknowledgements

✨ Introduction

QuickShow is a modern movie theater booking platform that simplifies ticket management for users and administrators.

It provides a complete end-to-end cinema booking experience, including:

  • real-time seat selection
  • secure payment processing
  • automated show management
  • email notifications
  • background job automation

The system also integrates TMDB movie data and Inngest workflows to automatically keep the platform updated with new movies and shows.

🎯 Whether you're running a cinema or booking your next movie night β€” QuickShow delivers a seamless experience.


βš™οΈ Tech Stack

πŸ’» Frontend

  • React 19 + Vite – Fast modern frontend stack
  • Tailwind CSS 4 – Responsive UI styling
  • React Router DOM – Navigation and routing
  • Axios – API communication
  • Lucide React – Lightweight icon system

βš™οΈ Backend

  • Node.js + Express 5 – Backend API framework
  • MongoDB + Mongoose – Database and schema management
  • Stripe – Secure payment processing
  • Clerk – Authentication and user management
  • TMDB API – Movie data provider
  • Cloudinary – Media storage for images
  • Nodemailer – Email notifications
  • Inngest – Background jobs and workflow automation

πŸ”‹ Features

  • 🎟️ Smart Booking System – Real-time seat availability and interactive seat layouts
  • πŸ’³ Secure Payments – Integrated with Stripe Checkout and webhooks
  • πŸ‘₯ User Management – Authentication, profiles, and favorites powered by Clerk
  • πŸ§‘β€πŸ’Ό Admin Dashboard – Manage movies, shows, and bookings from a centralized admin panel
  • 🎬 Movie Catalog – Browse movies with posters, ratings, runtime, and details
  • πŸ”„ Automatic Movie Sync – Fetches Now Playing movies from TMDB API
  • πŸ“… Automatic Show Generation – Background job automatically creates shows for upcoming days
  • πŸ“§ Email Notifications – Booking confirmations and reminders via Nodemailer
  • ⏰ Background Workflows – Powered by Inngest for:
    • user synchronization
    • booking validation
    • payment verification
    • show reminders
    • automated movie updates
  • ☁️ Cloud Storage – Media storage handled using Cloudinary
  • πŸ“± Responsive UI – Optimized for desktop, tablet, and mobile devices

⚑ Automation & Background Jobs

QuickShow uses Inngest workflows to automate backend operations.

Automated Workflows

Workflow Description
User Sync Syncs Clerk users to MongoDB
Payment Validation Cancels unpaid bookings after 10 minutes
Booking Confirmation Sends confirmation email after payment
Show Reminders Sends reminder emails before showtime
New Show Notifications Alerts users when new shows are added
TMDB Movie Sync Fetches now-playing movies automatically
Show Generator Creates showtimes for upcoming days

These workflows ensure the platform stays fully automated and up-to-date without manual admin work.


🀸 Quick Start

Prerequisites

Install the following:

  • Git
  • Node.js
  • MongoDB Atlas
  • Vercel (for deployment)

Clone the Repository

git clone https://github.com/Itssanthoshhere/QuickShow-Movie-Theater-Booking-Platform.git
cd QuickShow-Movie-Theater-Booking-Platform

Install Dependencies

cd client
npm install

cd ../server
npm install

Environment Variables

Create .env files for client and server.


Server .env

MONGODB_URI=

CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=

INNGEST_EVENT_KEY=
INNGEST_SIGNING_KEY=

TMDB_API_KEY=

STRIPE_PUBLISHABLE_KEY=
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=

SENDER_EMAIL=
SMTP_USER=
SMTP_PASS=

TMDB_API_KEY should be the TMDB Read Access Token (v4) from:

https://www.themoviedb.org/settings/api


Client .env

VITE_CURRENCY='β‚Ή'

VITE_CLERK_PUBLISHABLE_KEY=

VITE_BASE_URL=http://localhost:3000

VITE_TMDB_IMAGE_BASE_URL=https://image.tmdb.org/t/p/original

Run the Project

Start backend:

cd server
npm run dev

Start frontend:

cd client
npm run dev

Open:

http://localhost:5173

🧱 Project Structure

QuickShow/
β”œβ”€β”€ client/
β”‚   β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ vite.config.js
β”‚   └── vercel.json
β”‚
└── server/
    β”œβ”€β”€ configs/
    β”œβ”€β”€ controllers/
    β”œβ”€β”€ models/
    β”œβ”€β”€ routes/
    β”œβ”€β”€ middleware/
    β”œβ”€β”€ inngest/
    β”œβ”€β”€ server.js
    └── vercel.json

🧩 API Overview

Endpoint Method Description
/api/show GET Fetch available shows
/api/show/:movieId GET Fetch showtimes for a movie
/api/booking POST Create booking
/api/user/bookings GET Get user bookings
/api/user/favourites GET Fetch favourite movies
/api/user/update-favourite POST Add/remove favourite movie
/api/admin/add-show POST Add a new show
/api/admin/all-bookings GET Get all bookings
/api/admin/dashboard GET Admin analytics
/api/stripe/webhook POST Stripe payment webhook

πŸš€ Deployment

QuickShow is deployed using Vercel.

Frontend

https://quick-show-ticketbooking.vercel.app/

Backend API

https://quick-show-servers.vercel.app/

The backend handles:

  • authentication
  • bookings
  • payments
  • background workflows
  • automated movie syncing

πŸ“ Customization

  • 🎨 Update branding & colors in client/src/index.css
  • πŸ–ΌοΈ Replace hero images in client/public/readme/
  • 🧠 Modify API routes in server/routes/
  • πŸ’Ό Configure environment settings in .env files

🀝 Contribution

Contributions are welcome!

  1. Fork the repository
  2. Create a feature branch
git checkout -b feature/my-feature
  1. Commit your changes
git commit -m "feat: add new feature"
  1. Push the branch
git push origin feature/my-feature
  1. Open a Pull Request

πŸ”— Contacts


πŸ“„ License

This project is for educational and portfolio use only. All trademarks, logos, and assets belong to their respective owners.


πŸ™ Acknowledgements


⭐ Show Your Support

If you like QuickShow, give it a ⭐ on GitHub and share it with your network!


Contributors

Languages