Case study / Selected work

TicketHub

Selling the ticket is the easy part. I built everything around it.

A full-stack event operating system spanning discovery, checkout, payments, ticket delivery, promoter operations, analytics and offline event-day access control.

Role
Product · UX · Frontend · Backend · Systems Architecture
Timeframe
2025
Status
Active Build
Deliverables
Buyer, promoter, employee and admin apps · payments and QR entry
TicketHub — product visual

TicketHub is a full-stack event ticketing and operations platform designed around the entire journey from discovering an event to physically entering the venue.

What began as a ticketing product quickly became an infrastructure problem.

From the outside, buying a ticket appears simple:

Choose ticketpayreceive QR code.

Behind that interaction are inventory rules, capacity, payment state, ticket fulfilment, promoters, venues, refunds, staff permissions, notifications, fraud considerations, event discovery, check-in and potentially unreliable connectivity on event day.

TicketHub became an exercise in designing all of those moving parts as one coherent system.

Multiple products hiding inside one platform

TicketHub serves several users whose needs are completely different.

Buyers want discovery, fast checkout and easy ticket access.

Promoters want event creation, sales, marketing, staff management and analytics.

Gate staff need one thing: validate tickets as quickly as possible.

Sales agents need controlled selling workflows.

Administrators need system-wide visibility and operational controls.

Trying to force those personas into the same interface would make every experience worse.

TicketHub is therefore structured as multiple focused applications backed by shared platform infrastructure.

The promoter experience

The product progressively reveals complexity.

A small organiser creating a simple event should not have to understand advanced zone rules, payout structures or dynamic pricing before publishing.

A large promoter should still have access to those capabilities when needed.

That is progressive disclosure applied to business software.

  • events
  • venues
  • zones
  • ticket types
  • capacities
  • pricing
  • sales windows
  • promotions
  • referral links
  • staff
  • marketing
  • communication
  • reporting
  • settlements
  • event-day configuration

Transactional architecture

The checkout system is one of the most important parts of TicketHub.

Inventory cannot simply be counted.

It must be safely reserved.

If two people attempt to purchase the last ticket simultaneously, the system must know who actually owns that capacity.

The transaction therefore moves through a controlled lifecycle:

AvailabilityQuoteReservationPaymentCaptureFulfilment

Inventory is reserved temporarily.

Reservations expire.

Expired capacity returns to inventory.

Payment confirmation controls fulfilment.

Completed order records remain historically reliable.

Ticket generation happens only when the appropriate transaction state has been reached.

Most users will never know these systems exist.

That is the point.

Reliable software makes difficult problems disappear from the user's mental model.

Ticket fulfilment

Once an order completes, TicketHub supports multiple delivery paths including QR-based tickets and downloadable ticket formats, with the platform designed around additional delivery channels such as digital wallet passes and messaging-based delivery.

Ticket ownership, transfers and validation require auditability because the ticket becomes an access credential, not simply a PDF.

Event discovery

TicketHub is also designed as a buyer experience rather than only checkout infrastructure.

Discovery becomes part of the lifecycle.

DiscoverFollowBuyAttendDiscover Again

That gives the system the foundation for long-term customer relationships rather than one-off transactions.

  • location
  • category
  • date
  • artist
  • interests
  • followed events
  • followed artists

Event-day engineering

Event-day software operates under completely different conditions from normal SaaS.

People are waiting.

Queues are growing.

Noise is everywhere.

Connectivity may be unstable.

The interface cannot require careful thinking.

At the gate, the central question becomes:

Valid or not?

Offline behaviour is not treated as an edge case.

An event does not stop admitting people because mobile data stopped working.

  • gate assignment
  • staff sessions
  • QR validation
  • local manifests
  • queued scans
  • offline behaviour
  • synchronisation
  • entry auditing
  • zone restrictions
  • denial reasons
  • throughput analytics

UX system

TicketHub also became the project where I formalised many of my product design principles.

The interface follows rules such as:

View first.

Show the user what already exists before asking them to create something.

Progressive disclosure.

Expose advanced controls when they become relevant.

Strong defaults.

The system should make sensible decisions before asking users to configure everything themselves.

Next-step chaining.

Every major action should naturally suggest what happens next.

Guardrails before errors.

Prevent invalid actions wherever possible instead of explaining them afterwards.

Truthful states.

If something is processing, queued, failed, pending or unavailable, the interface should say so.

Failure as part of the design

TicketHub also forced me to think beyond the happy path.

What happens when payment succeeds but fulfilment fails?

What happens when somebody refreshes during checkout?

What happens when a reservation expires?

What happens when a promoter postpones an event?

What happens when a ticket gets scanned twice?

What happens when the scanner has no internet?

What happens when notifications fail?

Those questions are not edge work.

They are product work.

What this project represents

TicketHub is probably the clearest representation of how I approach software engineering.

I can begin with a screen.

But eventually I will ask about:

the database,

the state machine,

permissions,

transactions,

queues,

network conditions,

failure modes,

business rules,

security,

notifications,

operational workflows,

and the person standing at the gate trying to admit thousands of people.

Because the interface is only the visible layer.

Great software is everything that has to work before the interface can feel effortless.

Tech stack

  • Next.js
  • TypeScript
  • NestJS
  • Node.js
  • PostgreSQL
  • Prisma
  • Redis
  • Clerk
  • pnpm
  • Turborepo
  • Cloudflare Workers
  • Caddy

Inside the Product

Scroll sideways — or use the arrows — to walk through the product.

Event discovery home
Event discovery home
Event detail and ticket tiers
Event detail and ticket tiers
Checkout and order summary
Checkout and order summary
Promoter sales dashboard
Promoter sales dashboard
My tickets with QR entry
My tickets with QR entry
Promoter event calendar
Promoter event calendar

Product map

See how the seven systems connect.

Create → Market → Sell → Serve → Deliver → Understand — one thesis across seven products, plus the process behind all of them.

Open the product map