BookMyShow Backend

Production-inspired movie ticket booking backend featuring concurrent seat locking, Razorpay payment integration, booking notifications, and AWS deployment.

Backend SystemsNov 2025 – Dec 20252 monthsCompleted
View Repository

Overview

BookMyShow Backend is a production-inspired ticket booking platform built to simulate how modern booking systems manage concurrent seat reservations, payment verification, notification delivery, and booking confirmation. The project focuses on backend architecture, concurrency control, and cloud deployment rather than frontend implementation.

Problem Statement

Movie ticket booking platforms face challenges such as preventing double bookings, handling concurrent seat reservations, verifying payments securely, and notifying users after successful bookings. This project explores backend strategies for solving these problems using transactional workflows, temporary seat locking, and asynchronous notifications.

Features

  • JWT authentication
  • Movie, theatre and show management
  • Seat availability APIs
  • Temporary seat locking
  • Booking confirmation workflow
  • Razorpay payment integration
  • Email notifications
  • WhatsApp notifications
  • AWS EC2 deployment
  • Scheduled release of expired seat locks

Core Services

The system is composed of independently deployable services, each responsible for a single business capability.

01

Authentication

Handles secure user registration, login, JWT generation, and authorization.

02

Movie Management

Manages movies, theatres, screens, and show schedules.

03

Booking Service

Coordinates seat reservation, booking confirmation, and booking lifecycle management.

04

Seat Lock Manager

Temporarily locks seats during checkout and automatically releases expired locks to prevent double booking.

05

Payment Integration

Verifies Razorpay payments before confirming ticket bookings.

06

Notification Service

Delivers booking confirmations through Email and WhatsApp.

Technology Stack

Technologies, frameworks, infrastructure, and tooling used throughout the development of this project.

Backend

Java • Spring Boot • Spring Security • Hibernate • Spring Data JPA

Database

PostgreSQL

Messaging

SMTP • Twilio API

Infrastructure

AWS EC2 • Maven

Developer Tools

Git • GitHub • Razorpay

Engineering Decisions

Architectural choices made to improve scalability, maintainability, reliability, and long-term evolution of the system.

01

Seat Locking Strategy

Implemented temporary seat locking to avoid race conditions and prevent multiple users from booking the same seats simultaneously.

02

Payment Verification

Bookings are confirmed only after successful Razorpay payment verification, ensuring transactional consistency.

03

Notification Workflow

Booking confirmation triggers notification delivery through Email and WhatsApp channels.

04

Cloud Deployment

Application is deployed on AWS EC2 with externalized environment configuration for production-like deployment.

Challenges

The most significant engineering challenges encountered while building the system.

01

Preventing concurrent seat booking conflicts.

02

Synchronizing payment verification with booking confirmation.

03

Automatically releasing expired seat locks.

04

Managing external integrations such as Razorpay and Twilio.

What I Learned

Key technical concepts and engineering practices gained during the implementation.

01

Concurrency handling using seat locking.

02

Payment gateway integration.

03

Production deployment on AWS EC2.

04

Designing backend workflows for booking systems.

Future Improvements

Potential enhancements that could improve scalability, reliability, and maintainability.

01

Introduce Redis-based distributed seat locking.

02

Move notifications to Kafka-based asynchronous processing.

03

Containerize using Docker and Kubernetes.

04

Implement distributed caching for movie and show information.

05

Support horizontal scaling across multiple booking instances.