A full-stack cinema ticket booking platform built with Django REST Framework & React.js.
Cinema Online Booking System is a complete ticket reservation platform where users can browse movies, view details, choose showtimes, book seats, make secure payments (Stripe), and download QR-coded tickets.
The project includes full authentication, movie management, booking logic, Stripe integration, PDF ticket generation, and a modern React frontend.
- View all movies (poster, rating, trailer, genre, actors)
- Movie detail page with full information
- Real dataset of 10K+ movies (TMDB based)
- JWT-based login & register
- Protected endpoints
- User profile page with previous bookings
- Select showtime
- Add seats & tickets
- Book & pay through Stripe
- Automatic booking confirmation
- Stripe Checkout Session
- Stripe Webhooks to verify payment
- Ticket creation on successful payment
- Auto-generated PDF ticket
- QR verification code
- Movie poster embedded
- Downloadable from frontend
- Powered by Rasa
- DVD server + Django integration
Frontend (React + Vite)
|
| fetch()
v
Backend API (Django REST)
|
| DB ORM
v
MySQL DB
|
| Celery
v
Async Workers (Ticket PDF)
|
| Payment Status
v
Stripe Payment Gateway
/backend
βββ users/
βββ movies/
βββ showtimes/
βββ booking/
βββ chatbot/
βββ tickets/
βββ cinema_backend/
βββ media/
βββ requirements.txt
/frontend
βββ src/
β βββ api/
β βββ components/
β βββ context/
β βββ pages/
β βββ assets/
β βββ App.jsx
βββ package.json
- Python 3.11
- Django 5.x
- Django REST Framework
- MySQL
- Celery + Redis
- Stripe API
- Pillow
- qrcode
- drf-yasg (Swagger)
- React 18
- Vite
- TailwindCSS
- JWT Auth
- Axios
git clone https://github.com/YOUR_USERNAME/cinema-online-system.git
cd cinema-online-systempython -m venv venv
source venv/bin/activate # Mac / Linux
venv\Scripts\activate # Windowspip install -r requirements.txtpython manage.py migratepython manage.py runservercd frontend
npm installnpm run devSECRET_KEY=your_secret
DEBUG=True
DB_NAME=cinema_db
DB_USER=root
DB_PASSWORD=password
DB_HOST=127.0.0.1
DB_PORT=3306
STRIPE_SECRET_KEY=your_key
STRIPE_PUBLIC_KEY=your_key
TMDB_KEY=your_key
VITE_API_URL=http://127.0.0.1:8000/api/
Swagger UI:
http://127.0.0.1:8000/swagger/
GET /api/movies/
GET /api/movies/<id>/
POST /api/users/register/
POST /api/users/login/
GET /api/users/profile/
POST /api/bookings/create/
GET /api/bookings/user/
POST /api/stripe/create-checkout-session/
POST /api/stripe/webhook/
GET /api/tickets/download/<ticket_id>/
- Seat selection UI (graphical grid)
- Movie recommendations system (ML based)
- Admin dashboard for managing movies & showtimes
- Push notifications for showtime reminders
- Multi-language support
This project is MIT Licensed.