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



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.