A modern, full-stack movie ticket booking platform built with React, Node.js, Express, and MongoDB. Experience seamless movie browsing, real-time seat selection, and secure payments with CineX.
- π User Authentication - Secure JWT-based login and registration
- π¬ Movie Catalog - Browse movies with advanced filtering and search
- π’ Theater Selection - Location-based theater discovery
- πΊ Real-time Seat Selection - Interactive seat map with live availability
- π³ Secure Payments - Razorpay integration for safe transactions
- π± Responsive Design - Works perfectly on all devices
- β° Real-time Seat Locking - Temporary seat reservation system
- π§ Email Notifications - Automated booking confirmations
- π Digital Tickets - PDF ticket generation and download
- π Advanced Search - Find movies by title, genre, or language
- π Booking History - Complete booking management
- π« Cancellation System - Flexible booking cancellation with refunds
- React 19 - Modern UI library with hooks
- TypeScript - Type-safe JavaScript
- Vite - Fast build tool and dev server
- Tailwind CSS - Utility-first CSS framework
- React Router - Client-side routing
- Axios - HTTP client for API calls
- Zustand - Lightweight state management
- React Hook Form - Form handling and validation
- Lucide React - Beautiful icons
- Date-fns - Date manipulation library
- Node.js - JavaScript runtime
- Express.js - Web framework
- MongoDB - NoSQL database
- Mongoose - MongoDB object modeling
- JWT - JSON Web Tokens for authentication
- bcryptjs - Password hashing
- Razorpay - Payment gateway
- Nodemailer - Email service
- Winston - Logging library
- Helmet - Security headers
- CORS - Cross-origin resource sharing
- ESLint - Code linting
- Prettier - Code formatting
- Vite - Build tool
- Nodemon - Development auto-restart
Before running this application, make sure you have:
- Node.js (v18 or higher)
- MongoDB (local installation or Atlas)
- Git for version control
- npm or yarn package manager
git clone https://github.com/your-username/cinex-movie-booking.git
cd cinex-movie-bookingcd moviebooker-backend
npm installCreate a .env file in the moviebooker-backend directory:
# Server Configuration
PORT=5000
NODE_ENV=development
# Database
MONGODB_URI=mongodb://localhost:27017/cinex
# JWT Configuration
JWT_SECRET=your_super_secret_jwt_key_here
JWT_EXPIRE=7d
# Frontend URL
FRONTEND_URL=http://localhost:5173
# Email Configuration (Gmail)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_app_password
# Razorpay Configuration
RAZORPAY_KEY_ID=your_razorpay_key_id
RAZORPAY_KEY_SECRET=your_razorpay_key_secret
# Logging
LOG_LEVEL=infoMake sure MongoDB is running locally or update the MONGODB_URI for MongoDB Atlas.
npm run seednpm run devThe backend will start on http://localhost:5000
cd ../cinex-frontend
npm installCreate a .env file in the cinex-frontend directory:
VITE_API_URL=http://localhost:5000/api
VITE_APP_NAME=CineX
VITE_APP_VERSION=1.0.0
VITE_ENABLE_DEBUG=truenpm run devThe frontend will start on http://localhost:5173
- Register/Login - Create an account or sign in
- Set Location - Choose your city for local theaters
- Browse Movies - Explore movies by category or search
- Select Theater & Show - Pick your preferred theater and showtime
- Choose Seats - Interactive seat selection
- Make Payment - Secure payment via Razorpay
- Get Tickets - Download digital tickets via email
- API Documentation - Available at
/api/docs(if Swagger is implemented) - Database Models - Check
moviebooker-backend/models/for schema details - Component Library - Reusable components in
cinex-frontend/src/components/
cinex-movie-booking/
βββ moviebooker-backend/ # Backend application
β βββ config/ # Configuration files
β βββ controllers/ # Business logic
β βββ middleware/ # Custom middleware
β βββ models/ # Database schemas
β βββ routes/ # API endpoints
β βββ utils/ # Helper utilities
β βββ app.js # Express app setup
β βββ server.js # Server entry point
β βββ package.json
βββ cinex-frontend/ # Frontend application
β βββ public/ # Static assets
β βββ src/
β β βββ components/ # Reusable components
β β βββ pages/ # Page components
β β βββ services/ # API services
β β βββ stores/ # State management
β β βββ types/ # TypeScript types
β β βββ utils/ # Helper functions
β β βββ App.tsx # Main app component
β β βββ main.tsx # App entry point
β βββ index.html # HTML template
β βββ package.json
βββ CineX_Project_Analysis.md # Detailed project analysis
βββ Project_Submission.md # College submission format
βββ Interview_Preparation_Guide.md # Interview prep guide
βββ README.md # This file
POST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/auth/me- Get current user profile
GET /api/movies- Get movies with filtersGET /api/movies/:id- Get single movieGET /api/movies/search- Search movies
POST /api/bookings- Create new bookingGET /api/bookings- Get user bookingsDELETE /api/bookings/:id- Cancel booking
POST /api/payments/create-order- Create payment orderPOST /api/payments/verify- Verify payment
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing code style
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
- React Team for the amazing frontend library
- Node.js Community for the robust runtime
- MongoDB for the flexible database
- Razorpay for payment processing
- Tailwind CSS for the utility-first styling approach
For support, email support@cinemabooker.com or create an issue in this repository.
- Mobile app development (React Native)
- Advanced analytics dashboard
- Social features (reviews, ratings)
- Multi-language support
- Advanced search with AI recommendations
- Integration with external movie APIs
- Loyalty program and rewards system
Status: π§ In Development Version: 1.0.0 Last Updated: 31-08-2025
Made with β€οΈ by Rajat Singh Tomar
β Star this repo if you find it helpful!
