QuickShow is a modern, full-stack movie ticket booking application built with the MERN stack (MongoDB, Express.js, React, Node.js). The platform provides a seamless experience for users to browse movies, book tickets, and manage their bookings, while offering administrators powerful tools to manage content and showtimes.
- 🎬 Browse and search movies with detailed information
- 🎟️ Book tickets with seat selection
- 🔐 Secure authentication with Clerk
- 📱 Responsive design for all devices
- 📧 Email notifications for bookings
- 💳 Secure payment processing with Stripe
- 📱 User profile and booking history
- 🎥 Movie management (add, edit, remove)
- 🕒 Showtime scheduling
- 📊 Booking analytics
- 🎭 Theater and screen management
- 📈 Sales and revenue reports
- ⚛️ React 19
- 🎨 TailwindCSS for styling
- 🔄 React Router for navigation
- 🔐 Clerk for authentication
- 📦 Vite for build tooling
- 🛠️ Node.js with Express
- 🗄️ MongoDB with Mongoose
- 🔒 JWT Authentication
- 📧 Nodemailer for email notifications
- 💳 Stripe for payments
- ☁️ Cloudinary for media storage
- 📅 Inngest for background jobs
- Node.js (v18 or higher)
- npm or yarn
- MongoDB Atlas account or local MongoDB instance
- Clerk account for authentication
- Stripe account for payments
- Cloudinary account for media storage
git clone https://github.com/yourusername/quickshow.git
cd QuickShowcd server
cp .env.example .env
# Update the .env file with your credentials
npm install
npm startcd ../client
cp .env.example .env
# Update the .env file with your credentials
npm install
npm run dev- Frontend: http://localhost:5173
- Backend API: http://localhost:5000
QuickShow/
├── client/ # Frontend React application
│ ├── public/ # Static files
│ └── src/ # React components and pages
│ ├── components/ # Reusable UI components
│ ├── pages/ # Page components
│ ├── context/ # React context providers
│ ├── hooks/ # Custom React hooks
│ └── utils/ # Utility functions
│
└── server/ # Backend Express server
├── config/ # Configuration files
├── controllers/ # Request handlers
├── middleware/ # Express middleware
├── models/ # MongoDB models
├── routes/ # API routes
└── server.js # Server entry point
VITE_API_BASE_URL=http://localhost:5000/api
VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
# Add other frontend environment variables here
PORT=5000
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
STRIPE_SECRET_KEY=your_stripe_secret_key
CLERK_SECRET_KEY=your_clerk_secret_key
# Add other environment variables as needed
POST /api/auth/register- Register a new userPOST /api/auth/login- Login userGET /api/auth/me- Get current user profile
GET /api/movies- Get all moviesGET /api/movies/:id- Get movie by IDPOST /api/movies- Create a new movie (Admin only)PUT /api/movies/:id- Update movie (Admin only)DELETE /api/movies/:id- Delete movie (Admin only)
GET /api/theaters- Get all theatersGET /api/theaters/:id- Get theater by IDPOST /api/theaters- Create a new theater (Admin only)
GET /api/shows- Get all showsGET /api/shows/movie/:movieId- Get shows by movie IDPOST /api/shows- Create a new show (Admin only)
GET /api/bookings- Get user's bookingsPOST /api/bookings- Create a new bookingGET /api/bookings/:id- Get booking by ID
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a new branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ by Your Name | © 2025 QuickShow