A comprehensive web application for browsing and booking movie tickets. Built as a Wipro Training Capstone Project.
- Overview
- Architecture
- Features
- Tech Stack
- Project Structure
- Setup Instructions
- Usage
- API Endpoints
- Database Schema
- Contributing
- License
Movie Booking System is a full-stack web application that enables users to:
- Browse available movies and showtimes
- Book and manage theater tickets
- Manage user accounts and preferences
- View booking history
The application follows a microservices architecture pattern:
- User Registration Service: Handles user authentication and profile management
- Movie Management Service: Manages movie catalog and details
- Theater Management Service: Handles theater and seat management
- Showtime Management Service: Manages movie showtimes and availability
- Booking Management Service: Handles ticket bookings and reservations
- Service Registry: Enables service discovery in microservices environment
- React-based UI: Modern, responsive user interface
- Vite Build Tool: Fast development and optimized builds
- Component Architecture: Modular and reusable components
✅ User registration and authentication ✅ Browse available movies ✅ View movie details and ratings ✅ Check showtimes and theater availability ✅ Book tickets for selected shows ✅ View and manage bookings ✅ Cancel bookings ✅ View booking history
✅ Add and manage movies ✅ Manage theater information ✅ Create and update showtimes ✅ View booking statistics ✅ Manage user accounts
| Layer | Technology | Percentage |
|---|---|---|
| Backend | Java, Spring Boot | 59.3% |
| Frontend | JavaScript, React, Vite | 37.3% |
| Styling | CSS | 3.1% |
| Markup | HTML | 0.3% |
- Database: MySQL/PostgreSQL
- API: RESTful Web Services
- Build Tool: Maven (Backend), Vite (Frontend)
- Version Control: Git
MovieBookingSystem/
├── backend/
│ └── moviesbookingsystem/
│ ├── MovieManagement/
│ ├── UserRegistration/
│ ├── TheaterManagement/
│ ├── ShowtimeManagement/
│ ├── BookingManagement/
│ └── ServiceRegistry/
├── frontend/
│ └── project/
│ ├── src/
│ │ ├── components/
│ │ ├── pages/
│ │ ├── App.jsx
│ │ └── main.jsx
│ ├── public/
│ ├── package.json
│ ├── vite.config.js
│ └── index.html
├── LICENSE
└── README.md
-
Navigate to backend directory:
cd backend/moviesbookingsystem -
Configure database (Edit application.properties):
spring.datasource.url=jdbc:mysql://localhost:3306/moviebooking spring.datasource.username=root spring.datasource.password=password
-
Build the project:
mvn clean install
-
Run services (Start each service in separate terminals):
# Service Registry java -jar ServiceRegistry/target/service-registry.jar # User Registration Service java -jar UserRegistration/target/user-registration.jar # Movie Management Service java -jar MovieManagement/target/movie-management.jar # Theater Management Service java -jar TheaterManagement/target/theater-management.jar # Showtime Management Service java -jar ShowtimeManagement/target/showtime-management.jar # Booking Management Service java -jar BookingManagement/target/booking-management.jar
-
Navigate to frontend directory:
cd frontend/project -
Install dependencies:
npm install
-
Start development server:
npm run dev
-
Build for production:
npm run build
-
Access the application:
http://localhost:5173
- Register or login to your account
- Browse available movies
- Select a movie and view showtimes
- Choose seats and complete booking
- Receive booking confirmation
- Manage your bookings from user dashboard
- Login with admin credentials
- Access admin dashboard
- Add new movies or update existing ones
- Manage theater information
- Create showtimes for movies
- View analytics and reports
POST /api/users/register- Register new userPOST /api/users/login- User loginGET /api/users/{id}- Get user profilePUT /api/users/{id}- Update user profile
GET /api/movies- Get all moviesGET /api/movies/{id}- Get movie detailsPOST /api/movies- Add new movie (Admin)PUT /api/movies/{id}- Update movie (Admin)DELETE /api/movies/{id}- Delete movie (Admin)
GET /api/theaters- Get all theatersGET /api/theaters/{id}- Get theater detailsGET /api/theaters/{id}/seats- Get available seats
GET /api/showtimes- Get all showtimesGET /api/showtimes/movie/{movieId}- Get showtimes for a moviePOST /api/showtimes- Add new showtime (Admin)
POST /api/bookings- Create new bookingGET /api/bookings/user/{userId}- Get user bookingsGET /api/bookings/{id}- Get booking detailsDELETE /api/bookings/{id}- Cancel booking
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(100) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
phone VARCHAR(15),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);CREATE TABLE movies (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(200) NOT NULL,
genre VARCHAR(100),
duration INT,
rating DECIMAL(3,1),
description TEXT,
release_date DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);CREATE TABLE bookings (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
showtime_id INT NOT NULL,
seat_numbers VARCHAR(100),
total_price DECIMAL(10,2),
booking_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Project Name: Movie Booking System
Type: Capstone Project
Last Updated: March 17, 2026