Check-In System

Zero-Login Scanner Technology

Technical deep-dive into the zero-login scanner architecture and security model.

4 min readUpdated 2025-01-15

When you hand a volunteer the door at a kirtan, a retreat check-in table, or a festival gate, the last thing you need is to teach them software under pressure. BrightStar's Zero-Login Scanner enables instant ticket validation without app downloads, user accounts, or training — someone can start scanning within moments of getting a link, whether they've worked your events for years or this is their first shift. It runs as a Progressive Web App that opens straight from a browser, using the device's own camera through the WebRTC getUserMedia API and a client-side QR decoder, so there is nothing to install and nothing to sign into. This piece walks through the architecture behind that simplicity, and what it protects against.

Every scanner link is really a signed token, not just a URL. Behind the link sits a small packet of information: which event it belongs to, what the person holding it is allowed to do (scan tickets, view an attendee's name), when the link stops working, who created it, and — if you're running multiple gates — which entrance it's tied to. That token is signed with a key specific to the event, so if anyone tried to alter it — say, to extend its life or widen its permissions — the change would be detectable and the link would fail rather than quietly work with more power than you gave it. By default, a link keeps working until the event ends plus 24 hours, though that window is configurable, which covers the ordinary case of a retreat that runs late or a festival with a slow exit without leaving the door open indefinitely. The entrance field is optional — you only need it if you're issuing more than one link for the same event, which is common once you're running multiple gates or a VIP line alongside general admission.

What happens step by step when you scan a ticket?

Each scan moves through the same sequence, whether it's the first ticket of the night or the five-hundredth:

  1. 1Camera captures QR code image
  2. 2Client-side decoder extracts ticket ID
  3. 3Local cache checked first (offline support)
  4. 4API request to validation endpoint
  5. 5Server checks: valid ticket, not already scanned, correct event
  6. 6Response returned with attendee name + ticket type
  7. 7Scan logged with timestamp, device info, GPS (if permitted)
  8. 8UI shows green (valid), red (invalid/duplicate), yellow (warning)

A scanner link is deliberately narrow in what it grants. Whoever is holding it can see an attendee's name and ticket type — enough to greet someone and confirm they're on the list — but not their email or phone number, and nothing about sales or financial information. That's a meaningful boundary at a kirtan or retreat where the person on the door might be a volunteer you've known for a weekend, not a staff member with access to your books. Every scan is also logged with a device fingerprint, so there's a record of which device made which check-in. If a ticket has already been scanned, the system flags it as a duplicate rather than letting someone walk in twice on the same code. And because each scanner link is unique to its event and can be revoked instantly from the dashboard, losing a phone or ending a volunteer's shift doesn't mean re-issuing new tickets — it means cutting off one link. GPS tagging is available too, and it's optional rather than always-on — useful if your event spans multiple buildings or areas and you want scans tied to a location, but not something forced on every organizer.

If your event has more than one way in — a main gate and a VIP entrance, say — generate a separate scanner link for each one rather than sharing a single link across every door. Each link can carry its own entrance ID, which means BrightStar can track capacity by location in real time: Main Gate: 250 scanned, VIP Entrance: 45 scanned, and so on. For a festival or a large retreat where you need to know how full each area is at a glance, this is the difference between a single blended count and numbers you can actually act on.

Why does scanning still work without a signal?

Camera decoding and an initial cache check happen entirely on the device before any network request goes out. The scanner keeps a local, offline cache — stored in the browser's IndexedDB — so when a QR code is scanned, it's checked against that cache first, and an API request to the validation server follows. That matters at a retreat center tucked into the mountains, or a festival field where signal is thin: the scan still gets checked and logged, and the record catches up with the server as connectivity allows, rather than a weak signal at the gate turning into a line of people waiting to get in. Because the local check happens first, a duplicate scan can often be caught even before the network round-trip completes, which keeps the line moving at a busy gate.

Common questions

Do my volunteers need to download an app or create an account to scan tickets?

No. The BrightStar Zero-Login Scanner validates tickets without app downloads, user accounts, or training. It runs as a Progressive Web App that opens from a link in the browser and uses the WebRTC getUserMedia camera API with a client-side QR decoder.

Read more

Decoding happens entirely on the device. The scanner asks for the camera at an ideal 1280 by 720 with a chosen facing direction, then runs a loop that draws each video frame onto a canvas and hands the raw pixels to the decoder, so no image ever leaves the phone and only the extracted ticket reference is sent for validation. Where the hardware allows it the torch can be switched on through the camera track, the front and rear cameras can be swapped mid-event, and a small settings panel controls the haptic buzz and whether a result card clears itself after three seconds, five seconds, or waits to be dismissed by hand.

What can someone with a BrightStar scanner link actually see?

A BrightStar scanner link is scan-only, with no financial access. The person scanning sees the attendee name and ticket type, but not email or phone, and has no access to sales data or financial information. Permissions are carried in the signed token itself, for example scan and view_attendee_name.

Read more

Authority to scan is resolved per event rather than granted once and for all. A paired device carries an explicit list of the event IDs it may work and belongs to a single organization, and any request naming an event outside that list is refused outright. On the browser side the check runs three ways: the event's own host passes, so does a per-event collaborator whose role carries the scan permission, such as door staff, a coordinator or a co-manager, and so does a member of the owner's account team who has been granted that same permission. Anyone else is turned away before a ticket is ever looked up.

Can a scanner link be revoked if a volunteer loses their phone?

Yes. BrightStar scanner links can be revoked instantly from the dashboard. Links are also unique per event rather than reusable, and they carry a configurable expiry that defaults to the event end plus 24 hours.

Read more

Revocation happens in two places, because there are two things worth cutting off. A code that has been generated but not yet redeemed is cancelled by marking it consumed, so it can never be exchanged for anything; a device that has already been set up is cut off by marking its session revoked, which the server re-checks on every single request rather than trusting a credential it issued earlier. The scanner-devices screen on the event lists both — codes still waiting to be used, and devices already working, with their operator name, when they were set up, the device label and the app version — so it is clear which one to cut.

What happens step by step when a ticket QR code is scanned?

The camera captures the QR image, a client-side decoder extracts the ticket ID, and BrightStar checks the local cache first for offline support before sending a request to the validation endpoint. The server confirms the ticket is valid, not already scanned, and for the correct event, then returns the attendee name and ticket type. The scan is logged with timestamp, device info and GPS if permitted, and the interface shows green for valid, red for invalid or duplicate, and yellow for a warning.

Read more

Underneath, the server works through a fixed order of checks and stops at the first failure: the ticket must exist, it must belong to the event named in the request, it must still be active rather than refunded or voided, and it must not already carry a check-in time. A refusal is not returned as an error — it comes back as an ordinary success response carrying a false verdict and a plain-language reason such as Already checked in, along with the time of the original scan. Only once every check passes does the server stamp the check-in timestamp onto that individual ticket row, which is what makes the count authoritative.

How does BrightStar stop someone from tampering with a scanner link?

Each BrightStar scanner token is signed with an event-specific key, so it cannot be modified without detection. The token holds the event ID, permissions, expiry, creator and an optional entrance ID, and all scans are logged with a device fingerprint. GPS tagging is available as an option for multi-venue events.

Read more

The short code an operator redeems is deliberately awkward to mistype and hard to reuse. It is eight characters drawn from an alphabet that leaves out zero, O, one, I and L, it is checked against outstanding codes before it is handed out, and it can be redeemed exactly once — a second attempt comes back as already used. It expires on its own if nobody claims it. Where it is easier to show than to read aloud, the same code is rendered as a QR that carries only a link back into the scanner app, with no ticket or attendee data encoded in it at all.

Should I use one scanner link or a separate link per gate?

BrightStar recommends generating a separate scanner link for each entrance. Doing so enables real-time capacity tracking by location, so you can see something like Main Gate 250 scanned alongside VIP Entrance 45 scanned. The optional entrance ID in the scanner token is what keeps those counts separate.

Read more

What actually gets recorded against a check-in is the device that made it, and each device is labelled with an operator name chosen at the moment it is set up — the fallback if nothing is entered is Door 1. Because every device writes to the same single check-in timestamp on the ticket, a ticket already used at one point of entry comes back as Already checked in at the next, carrying the time of the first scan. The roster each device holds is refreshed on a twenty-second poll, so counts converge across devices shortly after a scan rather than the instant it happens.

Ready to get started?

Create your first event on EveryEvent Bangkok — it’s free.