Joan Comadran
Empty cinema auditorium seen from the back rows, the kind of screening the event software fills

Custom event management software for a film company

Custom event and guest-list software that replaced a film company's five-year-old tool: automatic emails, guest approval, self-serve branded landings — React + Supabase.

Visit site →
Guests queuing at a cinema entrance at night for a premiere
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

Custom event and guest-list management software for one of Spain's largest film companies, built with the ADAUGE team.

It runs the full lifecycle of an event: creating it and building an allowed-inviter list, registration, confirmations and rejections, automatic emails, and attendance control at the door with QR tickets. A public landing and events page face external guests; a role-based dashboard runs everything behind it.

02

Why it matters

Challenge

The company was running its events on a tool another provider had built at least five years earlier, and it needed replacing.

Premieres and screenings mean hundreds of guests, plus-ones and last-minute changes. The new system had to email guests automatically the moment their attendance was confirmed, let the team turn participants down, and let them launch a new event page on their own, with its own branding, without calling a developer every time.

03

What we built

Solution

Custom software built around everything they asked for.

Automatic emails after attendance confirmation, a clear way to reject participants, and an architecture that lets the client create event landing pages themselves. Each event can carry its own branding across both its landing and its emails. Under the hood it is a single React + Supabase app: Supabase Auth, row-level data, Storage for assets and Edge Functions for transactional email.

The problem

Replacing a five-year-old events tool with custom software

When the client came to us, their events tool had been built by another provider at least five years before. Rather than patch it, we built custom software around how their team actually runs a premiere: who can invite, who gets confirmed or turned down, which email goes out and when, and what each event looks like to its guests. If you are weighing the same build-versus-patch call, this is the kind of work I describe on the AI engineering and full stack services page.

What we built

Automatic emails, guest approval and rejection

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. Confirming a guest sends the confirmation email automatically, with full companion detail ('X companions + Y extras, total: Z people'); rejecting one sends the rejection, and both can run in batches with live progress. Companions are edited inline and compared against the original value persisted in the database, so the team sees exactly what changed. Getting Supabase's auth and transactional emails right has its own traps, which I wrote up in Supabase email confirmation not working in Next.js.

Self-serve landings

Event landing pages the client creates on their own

The part that matters most day to day: the client creates the landing page for a new event themselves. We set up the architecture and content structure so a new event is configuration, not a development ticket. Each event can carry its own branding, and that branding follows through to the emails its guests receive, so a premiere and a partner screening can look completely different while running on the same system.

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 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.

How it works

How it works: React, Supabase and Edge Functions

A public landing and events page 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. Data lives in Supabase with row-level access, assets in Supabase Storage, and transactional email runs on Supabase Edge Functions; confirmed lists export to formatted Excel. Before a launch like this I run through my Next.js + Supabase pre-launch security checklist.

Where it stands

Outcome

Runs the full event lifecycle end to end: create event → build inviter list → registration → automatic confirmation or rejection emails → QR check-in with capacity control → cancellations reflected live on the dashboard. The client creates and brands new event landings without us, and the companion-reconciliation model, persisting original values in the database, makes every change to a guest list auditable at a glance.