RETURN TO PROJECTS
GreenLand Icon

PassGo

Self-service badge kiosk for GreenLand's HomeX and Ceramica Market exhibitions — scan the pass, check in, print the badge, with no staff at the entrance

Scan your pass — the idle screen, with English and Arabic side by side Printing — the visitor is greeted by name next to a live preview of their badge A long name — a five-part name shrinks and wraps between words, on screen and on the badge You're in — the check-in is confirmed, then the kiosk resets for the next visitor Welcome back — a visitor who already checked in can reprint a lost badge, within a limit Pass not found — the kiosk falls back to a search by mobile number Find my pass — the on-screen keypad, here in the Ceramica Market theme Paused — the printer ran out of labels, so visitors are sent to the next kiosk Same kiosk, other exhibition — the screen follows whichever show is active

1 / 9 Scan your pass — the idle screen, with English and Arabic side by side

The Printed Badge

A 4 × 3 in colour label at 300 dpi. It is drawn with the same Compose code as the on-screen preview and printed as an image, so Arabic names come out shaped and right-to-left on any printer driver. Long names shrink to fit and wrap between words, never mid-word. The QR repeats the visitor's pass, so exhibitors can scan the badge at their stands.

HomeX visitor badge with a Latin name
HomeX · Latin name
Ceramica Market visitor badge with an Arabic name
Ceramica Market · Arabic name
HomeX VIP badge with a long hyphenated name
HomeX VIP · Long name

The Vision

GreenLand runs two exhibitions side by side — HomeX and Ceramica Market — at the same venue over the same four days, and every registered visitor already holds a QR pass sent on WhatsApp or by email. PassGo turns the entrance into a self-service lane: the visitor holds the pass under a scanner, the kiosk checks them in on that exhibition's own website and prints a personalised colour badge in seconds, with no one behind the desk. It is a Windows kiosk app built with Compose for Desktop for the November 2026 editions of both shows.

How a Visit Works

  1. Scan. The visitor holds the pass from WhatsApp or email under the USB scanner.
  2. Match. The pass is found instantly in the kiosk's saved copy of both exhibitions' visitor lists, even with no internet.
  3. Check in. The check-in goes to the exhibition's website, or waits in a queue and uploads the moment the website is reachable again.
  4. Print. The badge prints while the screen greets the visitor by name, then the kiosk resets for the next person.

Every Screen at a Glance

Scan Your Pass

The idle screen: three bilingual steps, a phone mock-up pointing at the scanner, and a footer QR that opens the registration page for walk-ins.

Printing

Greets the visitor by name with their interests and category, next to a live preview of the exact badge coming out of the printer. Long names shrink and wrap between words.

You're In

Confirms the check-in and counts down back to the start screen; staff choose how many seconds.

Welcome Back

A visitor who already checked in can reprint a lost badge, up to a per-pass reprint limit. After that, the kiosk sends them to the information desk.

Find My Pass

If a pass won't scan or isn't found, an on-screen keypad finds it by the mobile number used to register.

Paused

The kiosk watches the printer (out of labels, paper jam, cover open, out of ink, offline) and pauses itself, pointing visitors to the next kiosk until staff fix it.

Two Exhibitions, One Kiosk

The screen and the badge follow whichever show is active, in its own branding. Passes from the other exhibition still get a badge.

Staff Station Panel

Hidden from visitors and locked with a PIN: sign in to each website, choose the printer and run a test print, set the reprint limit, reset timer and station name, follow today's stats and the upload queue, and search any visitor across both exhibitions and every edition.

Engineering Highlights

  • Offline-first. Each exhibition's full visitor list is cached in Room (SQLite) and refreshed every 3 minutes. Check-ins wait in a local queue and upload as soon as the website answers, so a dropped connection never stops the entrance.
  • A scanner with no text field. The USB QR scanner works in keyboard mode, and a global AWT key dispatcher catches its burst of keystrokes whatever has focus. Visitors never see an input box, and stray keys go nowhere.
  • Locked-down kiosk. Full-screen, undecorated and always on top. Alt+F4 does nothing; staff leave only through the PIN-protected panel.
  • Silent badge printing. The badge is rendered off-screen with Compose at 300 dpi and sent straight to the label printer through the Java Print Service with no dialogs. The printer's state is checked so the kiosk can pause itself on any problem.
  • No extra backend. PassGo talks directly to the two exhibitions' own Spring Boot websites, which gained a small staff API and revocable kiosk device tokens. Staff sign in once per website with their mobile number and a WhatsApp code; after that the kiosk stays signed in across website restarts and deploys.
  • Bilingual by design. Every message appears in English and Arabic side by side, with IBM Plex Sans Arabic and Cairo for the Arabic type and Arabic-Indic digits.
  • Clean Architecture + MVVM. Use cases for find, check-in and print, repositories behind interfaces, and one sealed KioskUi state that drives a single stateless screen.
  • Tested by rendering. Tests render every kiosk state at 1920 × 1080 and the badge at print size (the screenshots on this page come straight from them), alongside pass-code, search and end-to-end tests against a local copy of the websites.

Built With

Kotlin Multiplatform (JVM) Compose for Desktop Material 3 Coroutines / Flow Ktor Client Room (KSP) Koin DI Kotlinx Serialization Multiplatform Settings ZXing Java Print Service Clean Architecture MVVM

Hardware

Windows PC 1920 × 1080 Screen USB QR Scanner Colour Label Printer

Ships As

Windows Installer (MSI / EXE) Bundled Java Runtime

Exhibition Websites

Visit HomeX Online Visit Ceramica Market Online

Related Projects

GreenXpoLog HomeX Exhibition System (Desktop) Ceramica Exhibition System (Desktop)