Joan Comadran

Event Ticketing System

Event & guest-list management for one of Spain's largest film companies: QR ticketing, capacity control, and a full participant pipeline from invitation to check-in, built on Supabase.

Visit site →
Stack

React + Supabase

Year

2025

Role

Full-Stack Engineer

Field notes

I — III

Discovery

What we found before writing a line of code — three observations that defined what this project would, and wouldn’t, become.

01

What it is

Overview

An internal event and guest-list management platform for one of Spain's largest film companies.

It runs the full lifecycle of an event, from creating it and building an allowed-inviter list, through registration and confirmations, to controlling attendance at the door with QR tickets, the way a cinema controls capacity. A public landing and a public events page face external guests; a role-based dashboard runs everything behind it.

02

Why it matters

Challenge

Premieres and screenings mean hundreds of guests, plus-ones, partners and last-minute changes, managed until now across spreadsheets and manual emails.

Confirmations, rejections and cancellations had to be tracked by hand, companion counts drifted from what was actually agreed, and there was no reliable way to control capacity or verify who was really on the list at the door of a full cinema.

03

What we built

Solution

A single React + Supabase app that models the whole pipeline: events with categories, partner logos and allowed inviters; participants with pending / confirmed / rejected / cancelled states; batch confirmation and rejection emails; and QR-based check-in for real-time capacity control. Companion counts are reconciled against original values persisted in the database, so every change is visible and auditable. Supabase Auth, Row-Level data, Storage for assets and Edge Functions for transactional email tie it together.

Guest pipeline

A participant lifecycle with reconciled companions

Each event carries a full participant list with four states (pending, confirmed, rejected and cancelled) and advanced filtering by registration date, status, company, inviter and free-text search. Companions are the hard part: regular and extra guests are edited inline, and every change is compared against the original value persisted in the database, with visual indicators for what moved and an automatic total-people count. A dedicated filter surfaces only the records that changed, so the team reviews exactly what drifted from the original agreement.

QR & capacity

QR ticketing and cinema-style capacity control

Attendance is controlled at the door like a cinema: each confirmed guest gets a QR ticket, and check-in validates it against live capacity so a room never oversells. Confirmation emails carry full companion detail ('X companions + Y extras, total: Z people') and a red 'Finally, I won't attend' button that opens a public cancellation flow with its own confirmation page and email. Cancellations flow straight back to the dashboard as a visible state and a live counter, so the door and the organizers always see the real headcount.

Platform

Public face, private control, batch email

A public landing and a public events page, with all / upcoming / today filters and newsletter signup, face external guests, cleanly separated from the internal system. Behind login, a role-based dashboard manages events, inviters, responsables and categories, with a desktop sidebar that collapses to icons-with-tooltips and bottom navigation on mobile. Transactional email runs on Supabase Edge Functions: registration, confirmation, rejection and cancellation messages send in batches with live progress, and confirmed lists export to formatted Excel.