Skip to content
md ~/projects/seans
Project archive

2026Live

Seans

  • React
  • Express
  • PostgreSQL
  • Prisma
  • Stripe
  • Tailwind CSS
  • Vercel

Overview

A booking site for a small cinema: a live seat map, Stripe payments, signed QR tickets by e-mail, a phone-camera ticket check at the door, and film, showtime and sales management.

01 · Problem

On booking sites two people can grab the same seat at the same moment, a payment confirmed by the browser can be faked, and paper or screenshot tickets can be copied.

02 · Solution

Seats are held for 10 minutes, and the database itself guarantees that a seat belongs to one booking only. Only Stripe's signed webhook confirms a payment; each seat's QR ticket is signed with HMAC and can be scanned only once at the door. The programme tops itself up two weeks ahead every night.

03 · Outcome

An end-to-end system from sign-up to the door, verified on the live site with a test payment. It has 73 tests on a separate test database, and an account takeover flaw found in the pre-launch security review was closed with a test.