Skip to content

maliha-yasmin-mim/SHOWTIME

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎬 ShowTime - Movie Ticket Booking System

🌐 Live Demo: showtime-eta.vercel.app

ShowTime Banner

πŸ“‹ Overview

ShowTime is a full-featured, production-ready movie ticket booking platform built with the MERN stack. This application allows users to browse movies, select seats, book tickets, and make payments seamlessly.

For administrators, the platform includes a comprehensive dashboard to manage shows, track bookings, monitor revenue, and oversee the entire ticketing system with real-time analytics and control.

✨ Features

🎫 User Features

  • βœ… Browse latest movies with real-time data from TMDB
  • βœ… View movie details, cast, trailers, and showtimes
  • βœ… Interactive seat selection with real-time availability
  • βœ… Secure booking with Stripe payment integration
  • βœ… Favorite movies system
  • βœ… Booking history and management
  • βœ… Email notifications for bookings and reminders
  • βœ… Responsive design for all devices

πŸ‘‘ Admin Features

  • πŸ“Š Dashboard with analytics (revenue, bookings, users)
  • 🎬 Add new movie shows with TMDB integration
  • πŸ“‹ Manage all shows and bookings
  • πŸ‘₯ View user statistics
  • πŸ” Role-based access control

βš™οΈ System Features

  • πŸ”„ Automated seat release for unpaid bookings
  • πŸ“§ Automated email notifications (booking confirmations, reminders)
  • πŸ• Background job processing with Inngest
  • πŸ” Secure authentication with Clerk
  • πŸ’³ Secure payment processing with Stripe
  • πŸŽ₯ Real movie data from TMDB API

πŸ–ΌοΈ Screenshots

✨User Pages

Home Page

Home Page

Trailer Section

Trailer Section

Movies Page

Movies Page

Movie Details

Movie Details

Seat Selection

Seat Selection

Payment

Payment

My Bookings

My Bookings

✨Admin Pages

Admin Dashboard

Admin Dashboard

Admin - Add Shows

Add Shows

Admin - List Shows

List Shows

Admin - List Bookings

List Bookings

πŸ› οΈ Technology Stack

Frontend

  • React - UI Library
  • Tailwind CSS - Styling Framework
  • React Router - Navigation
  • Clerk - Authentication
  • React Hot Toast - Notifications
  • Lucide React - Icons

Backend

  • Node.js - Runtime Environment
  • Express.js - Web Framework
  • MongoDB - Database
  • Mongoose - ODM
  • Stripe - Payment Processing
  • TMDB API - Movie Database
  • Inngest - Background Jobs
  • Nodemailer - Email Service
  • Clerk - Authentication

πŸ“ Project Structure

showtime/
β”‚
β”œβ”€β”€ client/                 # React Frontend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/     # Reusable components
β”‚   β”‚   β”œβ”€β”€ pages/         # Page components
β”‚   β”‚   β”œβ”€β”€ context/       # Global state management
β”‚   β”‚   β”œβ”€β”€ assets/        # Images and assets
β”‚   β”‚   β”œβ”€β”€ lib/           # Utility functions
β”‚   β”‚   └── App.jsx        # Main app component
β”‚   β”‚
β”‚   └── package.json
β”‚
└── server/                # Node.js Backend
    β”œβ”€β”€ controllers/       # Business logic
    β”œβ”€β”€ models/           # Database schemas
    β”œβ”€β”€ routes/           # API routes
    β”œβ”€β”€ middleware/       # Authentication middleware
    β”œβ”€β”€ configs/         # Configuration files
    β”œβ”€β”€ inngest/         # Background jobs
    └── server.js        # Server entry point

πŸš€ Installation & Setup

Prerequisites

  • Node.js (v18 or higher)
  • MongoDB Atlas account
  • Clerk account
  • Stripe account
  • TMDB API key

Backend Setup

# Navigate to server directory
cd server

# Install dependencies
npm install

# Create .env file and add your credentials
cp .env.example .env

# Edit .env file with your keys
# MONGODB_URI=your_mongodb_uri
# CLERK_SECRET_KEY=your_clerk_secret_key
# TMDB_API_KEY=your_tmdb_api_key
# STRIPE_SECRET_KEY=your_stripe_secret_key
# etc...

# Start the server
npm run dev

Frontend Setup

# Navigate to client directory
cd client

# Install dependencies
npm install

# Create .env file
cp .env.example .env

# Edit .env file
# VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
# VITE_BASE_URL=http://localhost:3000
# VITE_TMDB_IMAGE_BASE_URL=https://image.tmdb.org/t/p/original
# VITE_CURRENCY=USD

# Start the development server
npm run dev

πŸ”§ Environment Variables

Backend (.env)

MONGODB_URI=your_mongodb_connection_string
CLERK_SECRET_KEY=your_clerk_secret_key
TMDB_API_KEY=your_tmdb_api_key
STRIPE_SECRET_KEY=your_stripe_secret_key
STRIPE_WEBHOOK_SECRET=your_stripe_webhook_secret
SMTP_USER=your_brevo_smtp_user
SMTP_PASS=your_brevo_smtp_password
SENDER_EMAIL=your_sender_email

Frontend (.env)

VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
VITE_BASE_URL=http://localhost:3000
VITE_TMDB_IMAGE_BASE_URL=https://image.tmdb.org/t/p/original
VITE_CURRENCY=USD

πŸ“š API Endpoints

Show Routes

  • GET /api/show/all - Get all shows
  • GET /api/show/:movieId - Get specific show
  • GET /api/show/now-playing - Get now playing movies (Admin)
  • POST /api/show/add - Add new show (Admin)

Booking Routes

  • POST /api/booking/create - Create booking
  • GET /api/booking/seats/:showId - Get occupied seats

User Routes

  • GET /api/user/bookings - Get user bookings
  • GET /api/user/favorites - Get user favorites
  • POST /api/user/update-favorite - Update favorites

Admin Routes

  • GET /api/admin/is-admin - Check admin status
  • GET /api/admin/dashboard - Get dashboard data
  • GET /api/admin/all-shows - Get all shows
  • GET /api/admin/all-bookings - Get all bookings

🎯 Key Features Implementation

Real-time Seat Availability

  • Seats are marked as occupied instantly upon selection
  • Automatic release after 10 minutes if payment not completed
  • Real-time updates across all users

Payment Integration

  • Stripe Checkout for secure payments
  • Webhook handling for payment verification
  • Automated booking confirmation

Email System

  • Booking confirmation emails
  • Payment reminder emails
  • Show reminder emails (8 hours before)
  • New show notification emails

Background Jobs

  • Automated seat cleanup
  • Email scheduling
  • User synchronization with Clerk

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘©β€πŸ’» Developer

Maliha Yasmin Mim

  • Full Stack Developer
  • MERN Stack Specialist
  • Passionate about building scalable web applications

πŸ“§ Email: malihayasmin01.official@gmail.com
πŸ™ GitHub: github.com/malihayasminmim

Sanjana Afroj Faria

  • Full Stack Developer
  • MERN Stack Specialist
  • Passionate about building scalable web applications

πŸ“§ Email: malihayasmin01.official@gmail.com

πŸ™ Acknowledgments

πŸš€ Deployment

Frontend (Vercel)

# Install Vercel CLI
npm i -g vercel

# Deploy
vercel

Backend (Railway/Render)

  1. Connect your GitHub repository
  2. Set environment variables
  3. Deploy the application

Database (MongoDB Atlas)

  1. Create a free cluster
  2. Whitelist IP addresses
  3. Get connection string

Happy Coding! 🎬🍿

About

A full-stack MERN movie ticket booking system with real-time seat selection, Stripe payments, admin dashboard, and TMDB integration.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages