Back to PinboardPinboard archive / Engineering case study

Investigation file / CINEMAVERSE

CinemaVerse

A cinema ticket platform covering discovery, seats, bookings, payments, tickets, and administration.

Project type
Team project / .NET backend
Working context
I worked in a three-person team with one other backend contributor and one frontend contributor.
My role
I worked on backend architecture, booking and ticketing, and payments; backend responsibility was shared.
  • Angular 21
  • .NET 9
  • EF Core
  • SQL Server
  • JWT
  • Stripe
  • Hangfire
CinemaVerse customer home
Exhibit A / discovery entry
01

Pinboard archive / Engineering case study

Context

I built CinemaVerse with a three-person team as a full cinema booking platform and .NET backend case study.

Working context
I worked in a three-person team with one other backend contributor and one frontend contributor.
My role
I worked on backend architecture, booking and ticketing, and payments; backend responsibility was shared.
Who was affected
Cinema customers, administrators, and check-in staff.
02

Problem brief

Problem

Cinema customers need a connected path from discovery to seat selection, payment, and ticket validation while staff manage branches, halls, showtimes, and bookings.

Operating constraints

  1. 01Seat and booking state changes over time and crosses payment boundaries.
  2. 02Customer, administrator, and check-in capabilities require different authorization.
  3. 03Pending bookings and reminders require work outside request-response traffic.
03

Evidence / reasoning

Problem Research

01

Booking lifecycle

I traced movie discovery, showtime selection, seat availability, payment, QR ticket generation, and check-in as one booking state chain.

02

Scheduled state changes

I identified unpaid-booking expiry and upcoming-show reminders as time-driven work that cannot depend on an active request.

03

Administrative conflicts

I mapped showtime duration, hall occupancy, and branch schedules to find where administrative edits could create conflicts.

04

Implementation files

How I Solved It

F-01

Discovery to seat selection

I connected movie discovery and showtimes to an interactive seat grid for the booking handoff.

F-02

Payment and ticketing

I connected booking state to Stripe payment, QR ticket generation, email, and check-in lookup.

F-03

Cinema administration

I supported administration for movies, media, branches, halls, seat layouts, showtimes, users, bookings, payments, and tickets.

05

System map

System Architecture

Angular calls an ASP.NET Core API whose controllers, services, repositories, and EF Core data layer integrate SQL Server, Stripe, Hangfire, and email.
01

Angular

Customer and admin UI

02

ASP.NET API

Controllers and JWT

03

Services

Booking, payment, tickets

04

EF Core + SQL

Persistent cinema domain

05

Platform services

Stripe, Hangfire, MailKit

06

Diagnostic notes

Challenges

Issue 01

Time-bound pending bookings

Unpaid reservations cannot remain active indefinitely.

Issue 02

Authentication abuse

Login, refresh, and logout endpoints are sensitive public entry points.

Issue 03

Showtime conflicts

Overlapping schedules can assign one hall to incompatible showtimes.

Issue 04

Payment-to-ticket handoff

A booking should not produce a valid QR ticket before payment state is accepted.

07

Quality gates

Technical Safeguards

Security

I protected system boundaries with JWT access and refresh tokens, BCrypt, RBAC, rate limiting, and admin-only job visibility.

Reliability

I persisted scheduled expiry and reminder jobs through Hangfire in SQL Server and used Serilog for structured application logging.

Contract clarity

I kept standard success, pagination, and problem-detail response shapes consistent across 94 API endpoints.

08

Ownership record

My Contribution

MY VERIFIED SCOPE

I worked on backend architecture, booking and ticketing, and payments. I shared backend responsibility with a teammate.

Working context
I worked in a three-person team with one other backend contributor and one frontend contributor.
My role
I worked on backend architecture, booking and ticketing, and payments; backend responsibility was shared.
09

Closing record

Outcome

What was delivered

Our team delivered customer discovery, seat booking, payment, QR tickets, check-in, and broad cinema administration across Angular and .NET.

Published evidence

Our project includes the full stack, 94 API endpoints, customer and admin workflows, authentication, and background jobs.

Honest boundary

I present my backend scope as shared; the next technical work is automated coverage for seat concurrency, payment, expiry, and ticket issuance.

Next consideration

My next technical step is to add automated concurrency and integration tests for seat holds, payment confirmation, booking expiry, and ticket issuance.

10

Curated project media

Related Evidence

CinemaVerse customer home
Evidence exhibit 01Exhibit A / discovery entry
CinemaVerse seat selection
Evidence exhibit 02Exhibit B / booking decision point
CinemaVerse hall editor
Evidence exhibit 03Exhibit C / hall and seat configuration
CinemaVerse showtime management
Evidence exhibit 04Exhibit D / scheduling operations
CinemaVerse movie management
Evidence exhibit 05Exhibit E / movie administration
CinemaVerse admin dashboard
Evidence exhibit 06Exhibit F / cinema operations overview