Adi Andrea
All projects

2025 · F&B · Android, Kiosk

Yoshinoya self-order kiosk

Self-ordering for a restaurant chain: combos, promos, membership with OTP, and card and QRIS payment through an EDC terminal.

KotlinJetpack ComposeHiltUSB serial
Yoshinoya self-order kiosk screen 1Yoshinoya self-order kiosk screen 2Yoshinoya self-order kiosk screen 3

I was the sole Android engineer on a self-order kiosk app for Yoshinoya Indonesia, from April 2025 to January 2026.

What it does

Customers choose dine-in or takeaway, browse the menu by category, build combo meals step by step with add-ons, apply promo vouchers, and sign in as members with phone number and OTP. They pay at the kiosk by card or QRIS, or choose to pay at the cashier.

Technical notes

  • Hardware integration: the app drives the kiosk’s built-in Sunmi printer and status lamp, a serial barcode scanner, Epson LAN printers for kitchen tickets, and an EDC payment terminal over USB serial, using a raw ECR protocol implemented in the app.
  • Kiosk mode: runs as a device admin in lock-task mode, with an idle timer that resets the session.
  • Field debugging: print flows are logged remotely so issues on in-store kiosks can be traced without visiting the device.
  • Stack: Kotlin, Jetpack Compose, Material 3, Hilt, Retrofit, DataStore, Firebase Crashlytics.

UI design by the Yoshinoya design team; Android implementation by me.