Skip to content

Repository files navigation

Cinema Booking System

A real-time cinema seat booking system where users can browse movies, select seats, place a timed hold, and confirm or cancel their reservation.

Goal

Provide a simple booking flow that prevents double-booking through seat locking with automatic expiration. When a user selects a seat, it is held for a configurable window (default 5 minutes). During that window the seat is reserved exclusively for that user — who can either confirm or release it. If the hold expires without confirmation, the seat becomes available again automatically.

Technologies

Backend — CinemaBookingSystem

  • .NET 10 / ASP.NET Core — Minimal API with endpoint routing
  • Redis (StackExchange.Redis / NRedisStack) — Seat hold state with TTL-based expiration and atomic locking
  • Scalar / OpenAPI — Auto-generated API documentation available in development at /scalar

Frontend — CinemaBookingSystem.WebApp

  • Blazor WebAssembly (.NET 10) — Client-side SPA running entirely in the browser
  • HttpClient — Communicates with the backend API via JSON

Infrastructure

  • Docker / Docker Compose — Containerised deployment of the API, frontend, and Redis
  • nginx — Serves the Blazor WASM static files and handles client-side routing

Running with Docker

docker compose up --build
Service URL
Web App http://localhost:5001
API http://localhost:5294

About

A real-time cinema seat booking system where users can browse movies, select seats, place a timed hold, and confirm or cancel their reservation.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages