Skip to content

Software case study · Events & Entertainment

Wooziee — Event Ticketing & Management Platform

One platform for discovery, checkout, QR entry, organiser analytics and payouts — across web, admin, Android and iOS.

In brief: A production ticketing platform that replaced a patchwork of separate tools, live in India and the UK with market-specific payment providers.

Status
Live in production
Platforms
Web, admin, Android, iOS
Markets
India and United Kingdom
API surface
~260 endpoints, 40 route modules
Data model
49 models
User roles
4
Homepage — event discovery with a featured carousel, city and date filters and categories.

Overview

About the project

Wooziee is an event discovery and ticketing platform covering the full lifecycle of an event: organisers publish events and sell tickets, attendees discover and book them, gate staff scan entry and the business receives payouts — all in one product.

The platform serves two markets with different payment providers, currencies and payout arrangements. A single Node.js API powers the customer website, the admin console and the Flutter mobile apps, so every surface works from the same rules and the same data.

Presented as portfolio work from our founder-led engineering team. Client names, commercial terms and business performance figures are not published.

The challenge

  • A paid order has to become a valid ticket exactly once — never zero times and never twice — even when payment webhooks arrive late or out of order.
  • Multi-day tickets must scan on each remaining day, with every entry recorded.
  • Organisers need custom staff roles whose permissions also respect the organisation's own status.
  • Public event pages must be readable by search engines and AI assistants, not just by browsers.
  • India and the UK require different payment providers, currencies and payout processes.

Features

What the platform does.

  • Event discovery and booking

    A featured carousel, city and date filters, categories and search help attendees find events. Event pages show live ticket status and one-tap booking.

  • Ticketing and checkout

    Ticket types with day-level pricing and inventory, coupons, promoter links and ID-verified concessions.

  • Payments and payouts

    Razorpay and RazorpayX in India and Stripe in the UK, with webhook-verified capture and reconciliation.

  • QR entry validation

    QR ticket PDFs, gate scanning from the organiser app, and per-day entry history for multi-day events.

  • Organiser analytics

    Revenue trends, conversion funnel, category and city performance and payout reporting.

  • Guestlists and promoter tools

    Promoter links and coupon codes let organisers attribute and incentivise sales.

  • Customer and organiser mobile apps

    Flutter apps for Android and iOS, including gate scanning for organiser staff.

  • Real-time updates and notifications

    Live order and scan events over Socket.IO, with queued email, push notifications and reminders.

  • Wallet and calendar

    Google Wallet passes and Add to Google Calendar links for booked events.

  • Administrative controls

    An admin control centre for users, organisations, custom roles, artists, venues, ticket types and transactions.

  • Marketing tools

    Hero carousel, coupons, newsletter, push campaigns and a built-in blog.

  • Role-based access

    Platform admin, organiser admin, organiser staff and attendee roles, each with its own permissions.

System architecture

How it's put together.

  1. 01Clients

    React 18 web app and admin console; Flutter apps for Android and iOS; server-rendered SEO event pages

  2. 02Edge

    Cloudflare DNS, TLS and WAF; nginx reverse proxy; CloudFront CDN

  3. 03API

    Node.js with Express 5; ~260 endpoints across 40 route modules; JWT with Redis revocation; shared permission catalogue; Swagger documentation

  4. 04Data

    MySQL 8 via Sequelize (49 models); Redis for cache, OTP and token blacklist; AWS S3 storage

  5. 05Async

    Bull queues for email, push, reminders and backups, monitored with Bull Board

  6. 06Integrations

    Razorpay, RazorpayX, Stripe, SendGrid, Mailgun, SMS OTP, FCM, Google Wallet and Google Maps

  7. 07Delivery

    GitHub Actions CI/CD for development and production; Playwright end-to-end, SEO and accessibility tests

  8. 08Operations

    Sentry, New Relic APM, Helmet, CORS, rate limiting and input sanitisation

Technical challenges

Problems worth solving properly.

Exactly-once ticket issuance
Payment capture is confirmed by verified webhooks, and a reconciliation process catches mismatches between the payment provider and the order database.
One permission model everywhere
A single permission catalogue is shared by the API and the admin UI, so custom roles behave identically in every interface.
Sensitive documents
Private documents, such as ID verification for concessions, are served through signed, short-lived URLs with view logs and automatic deletion after the event.
Discoverability
Event pages are server-rendered and tested for SEO and AI-crawler access as part of the automated quality gates.
Safe continuous delivery
Playwright suites for smoke, SEO, accessibility, security and API behaviour run on every change before deployment.

Technology

Stack

  • React 18
  • Flutter
  • Node.js
  • Express 5
  • MySQL 8
  • Sequelize
  • Redis
  • Bull
  • Socket.IO
  • AWS S3
  • CloudFront
  • Cloudflare
  • Razorpay
  • Stripe
  • SendGrid
  • Mailgun
  • FCM
  • Sentry
  • New Relic
  • Playwright
  • GitHub Actions

Outcomes

Where it stands.

  • Live in production at wooziee.com, with a UK edition at wooziee.co.uk using Stripe.
  • Organisers can publish events, sell tickets, scan entry and receive payouts in one product.
  • One API powers the web, admin and mobile apps.
  • Business metrics belong to the client and are intentionally not published.

Planning a platform of your own?

Tell us about the product, the users and the systems it needs to work with. We'll suggest an architecture and a sensible first release.