Sunmi Thailand · production
Thailand's best-selling retail POS software. A dual-screen Android terminal application spanning cashier, order, table service, goods, reporting and tax — with a customer-facing second display, a printing and templating subsystem, shift handover with cash reconciliation, and licence enforcement.
Engineering challenge
A till that cannot trade is worse than a till that is slow. Every architectural decision — offline journaling, idempotent sync, hardware abstraction — follows from the fact that a network drop must never stop a sale.
10,000+ merchant terminalsDual-screen Android POS
Node.jsReact NativeKotlinMax IoTAlibaba Cloud
NFC Card Reader & Tap Reliability
Sunmi terminals · Kotlin
Native Android NFC module for reading and validating identification and stored-value cards on Sunmi payment terminals, including secure card data extraction.
Engineering challenge
Card taps were failing intermittently. Root cause was Android's foreground dispatch — it performs an intent round-trip and an NDEF check before handing over the tag, which is too slow for payment-speed reads. Replaced it with reader-mode polling and tuned IsoDep timeouts. Then added tag-presence debouncing, so a single physical tap cannot register as two reads — on a payment terminal that is the difference between one charge and two.
KotlinAndroid NFCIsoDepReader Mode
Sunmi Thailand · architecture
Store-to-cloud synchronisation for transaction data moving from Thai retail floors to Alibaba Cloud.
Engineering challenge
Cross-border latency was degrading transaction reporting. Rather than optimise the link, I inverted the dependency: writes journal locally first, then sync asynchronously as idempotent deltas with retry and jitter. A slow link now delays reporting freshness instead of blocking a sale — the failure mode moved from the customer to the dashboard.
Offline-firstIdempotencyDelta syncAlibaba Cloud
Hardware Abstraction Layer
Sunmi Thailand · platform
A single abstraction covering receipt printers, label printers, barcode and QR scanners, cash drawers and payment terminals across Sunmi hardware form factors.
Engineering challenge
The common failure is calling a printer library directly from the receipt screen and a card-reader SDK from checkout. It demos fine — until a supplier discontinues a model and the change touches forty files. Solving it once at the boundary means new device models certify without an application rebuild.
IoTDevice driversPeripheral integration
Sunmi Thailand · production
Self-service ordering for restaurants. Diners scan a table QR code, browse the menu and pay from their own phone; orders route straight into the POS for kitchen and service fulfilment — no extra hardware on the floor.
ReactReal-time syncMobile-first
Max IoT SDK & English Documentation
Sunmi HQ, Shanghai
SDK libraries and the first English-language reference for Sunmi's Max IoT IDE, which until then existed only in Mandarin — documentation, code comments, error toasts and configuration labels.
Engineering challenge
This was a critical-path dependency, not a translation exercise. Without it the Thai engineering team could not onboard, and the Thailand go-to-market could not start.
SDK designDeveloper experienceDocumentation