A native Kotlin scanner validating 25,000 tickets an hour at the gate, with no dependence on venue Wi-Fi.
View live demo Opens a working demo with sample content in a new tab.
On location
Concert FestivalPhoto: Burst (CC0)
People CrowdPhoto: Maxime Bhm (CC0)
Band members yellow lights audienceCC0 photo
Concert crowd eventCC0 photo
Concert ShowPhoto: John Price (CC0)
About the Project
This case study covers an event ticket scanning app built for a live events and festival operator whose gates were slowing to a crawl at exactly the wrong moment. Staff had been scanning tickets with a web app on borrowed tablets. When the crowd arrived, the venue Wi-Fi saturated, each scan took four or five seconds, and queues grew until stewards started waving people through unchecked. That is how duplicate tickets got in, and it is why the operator came to us.
We built a native Android app in Kotlin that validates every ticket on the device itself. The full ticket list for the event is downloaded before doors open, so a scan is a local lookup rather than a round trip across a crowded network. Scans sync in the background whenever a connection exists, duplicates are caught across gates as devices reconcile, and a live dashboard shows the operations team how every gate is performing. The result is sustained throughput of roughly 25,000 scans an hour, with validation well under a second and entirely offline.
About the Client
The client runs festivals and live events where tens of thousands of people arrive within a short window, often at temporary sites with patchy connectivity. Gate entry is the first thing every attendee experiences, and it is also where revenue is protected: a ticket waved through without a check is a ticket that can be sold twice.
The operations team needed two things at once. Stewards at the gate needed a tool that never made them wait, and the control room needed to see, in real time, which gates were flowing and which were starting to back up. Neither was possible with a web app that depended on venue Wi-Fi.
Project Goals
Validate tickets in well under a second, with or without a network connection.
Stop duplicate and invalid tickets getting through, even under pressure.
Support both phone cameras and dedicated rugged scanners at the gate.
Give the operations team a live view of scan rates and totals per gate.
Keep every scan recorded and reconciled for reporting after the event.
Project Overview
The Challenge and Our Solution
The Challenge
Gate staff scanned tickets with a web app on borrowed tablets. At a busy gate the venue Wi-Fi saturated, scans took four or five seconds each, and queues built to the point where staff waved people through unchecked — which is how duplicate tickets got in. The operator had no live view of throughput per gate.
Our Solution
We built a native Kotlin app that downloads the full ticket list for the event before doors open and validates entirely on-device, so throughput does not depend on the network. Scans sync in the background whenever a connection is available, and duplicate detection works across gates once devices reconcile. A live dashboard shows scan rate and totals per gate so stewards can be moved before a queue forms.
Offline Ticket Validation That Never Waits on Wi-Fi
The heart of the app is offline ticket validation. Before doors open, each device downloads the complete ticket list for the event into a local Room database, indexed for instant lookup. When a steward scans a barcode or QR code, the app checks it against that local list and returns a clear valid, already-used or invalid result in milliseconds. The network is simply not involved in the decision.
This changes the economics of a busy gate. Throughput depends on how fast stewards can present and scan tickets rather than on how many thousand phones are competing for the same access point. Background work managed by WorkManager uploads scans whenever a connection becomes available, so the central record catches up without anyone at the gate noticing.
Full ticket list held on the device before doors open
Valid, already-used and invalid results in milliseconds
Background upload of scans whenever a connection exists
Duplicate Ticket Detection Across Every Gate
Offline validation raises an obvious question: if each device decides locally, what stops the same ticket being used at two gates? The answer is reconciliation. Devices exchange their scans as soon as they can, and once a ticket has been admitted anywhere, every other device learns about it and will flag it as already used.
Crucially, the app flags a duplicate rather than quietly rejecting it. The steward sees which gate admitted the ticket and when, so they can handle the conversation calmly and escalate if needed. Duplicate tickets are now detected and flagged instead of being waved through when the queue gets long.
Hardware-Speed Scanning for Festival Gate Entry
Festival gate entry rewards rhythm. We tuned scanning with CameraX for phone cameras and integrated the scanner SDK for dedicated rugged Android devices, so continuous, rapid scanning feels immediate. Large, high-contrast result screens and distinct feedback for each outcome let stewards keep their eyes on the crowd rather than on small text.
The interface, written in Jetpack Compose, was designed around gloved hands, low light and noise. Every action a steward takes at the gate is one tap or less, and the app recovers instantly if a device is restarted or swapped mid-shift.
A Live Gate Dashboard for the Control Room
The operations team now has a live gate dashboard showing scan rate, running totals and exceptions for each gate. Because devices report as soon as they have a connection, the picture in the control room stays current through the busiest part of the arrival window.
That visibility turns queue management from reaction into planning. When one gate's scan rate drops or its exceptions climb, supervisors can move stewards before a queue forms rather than after attendees have started to complain. The same data feeds post-event reporting on entry times and gate performance.
Our Process
How We Delivered It
1
Observing real gates
We started with how the gates actually behaved on event days: where time was lost, how stewards held devices and what happened when the network failed. That shaped an offline-first design from the first sketch.
2
Designing the data model
Ticket lists, scan records and reconciliation rules were modelled so that local decisions are fast and conflicts between devices resolve predictably once they sync.
3
Building the native app
The Kotlin app was built with Jetpack Compose, Room, CameraX and the scanner SDK, with WorkManager handling background synchronisation reliably on rugged Android hardware.
4
Load and failure testing
We tested continuous scanning at speed, devices going offline and coming back, and the same ticket presented at two gates, until every path produced a clear, correct result.
5
Rollout and dashboards
Devices were provisioned before doors opened, the live gate dashboard was set up for the control room, and scan data was reconciled after the event for reporting.
Key Features
What We Delivered
Offline validation
Full ticket list held on the device, so scanning never waits on venue Wi-Fi.
Cross-gate duplicate detection
Devices reconcile scans so the same ticket cannot be used at two gates.
Hardware-speed scanning
Camera and dedicated scanner support tuned for continuous, rapid scanning.
Live gate dashboard
Scan rate, totals and exceptions per gate for the operations team in real time.
Outcome
Results and Impact
Validation time per ticket reduced to well under a second, entirely offline.
Sustained throughput of roughly 25,000 scans an hour across gates.
Duplicate tickets detected and flagged rather than waved through under pressure.
Live gate dashboards let the operations team move stewards before queues built.
Client Feedback
What the Client Says
★★★★★
Twenty-five thousand scans an hour with no dependence on venue Wi-Fi. The first festival we ran with it was the calmest gate we have had, and the live throughput view let us move stewards before a queue formed rather than after.
Event Operations DirectorLive events & festival operator
Services
Services Behind This Project
The Android App expertise we used to build this android app development — and can bring to yours.
Native Android apps built in Kotlin with Jetpack Compose — Material 3 design, background work, offline storage and Google Play release management.
Learn more
FAQ
Frequently Asked Questions
Why build a native Android app instead of a web app for ticket scanning?
A native app can store the full ticket list locally, use the camera and dedicated scanner hardware at full speed, and keep working with no connection at all. A web app at a busy gate depends on the network for every scan, which is exactly what fails when thousands of people arrive at once.
How does offline validation stop the same ticket being used twice?
Each device records the tickets it admits and exchanges those scans with other devices and the server whenever a connection is available. Once a ticket has been admitted at any gate, every device learns about it and flags later attempts as duplicates, showing where and when it was first scanned.
Can the app work with our existing ticketing provider?
Usually, yes. The app needs the ticket list for an event before doors open and somewhere to send scan results afterwards. We integrate with ticketing platforms through their APIs or exports, and the exact approach depends on what your provider offers.
What hardware do stewards need at the gate?
The app runs on modern Android phones using the camera, and it also supports rugged Android devices with dedicated scanners for faster, continuous scanning. Many operators mix both, using rugged devices at the busiest gates and phones for overflow and roaming staff.
What drives the cost and timeline of an event scanning app?
The main factors are the number of ticket types and entry rules, the ticketing integration, the hardware you plan to use, offline reconciliation requirements and the dashboards you need. A clear scope around one event type keeps the first release focused, with more features added between events.
How is scan data used after the event?
Every scan is reconciled into a central record, so the operator can report on entry times, gate throughput, duplicates and exceptions. That data helps plan staffing and gate layout for the next event and provides evidence if a ticket dispute arises.
Similar Work
Related Projects
Case studies built with the same technologies or for similar needs.