Case study
A regional bus operation needed drivers to issue tickets from Android POS tablets. The app had to calculate fares, print receipts over Bluetooth, and keep transactions even when the route had no reliable signal.
Reasoning
A web app would have been easier to deploy, but it could not dependably reach the printer or survive long offline stretches. Native Android was possible, but React Native gave enough hardware access while keeping iteration speed high.
Choice
I built a React Native APK with local SQLite storage, Bluetooth receipt printing, and HTTP sync only when cellular data was available. Fare rules were covered by Jest tests before release.
What I'd repeat
The key detail was a journaling queue around ticket printing. One tap records intent, prints once, and only retries when the failure is safe to retry, which avoids duplicate charges during flaky printer states.
Outcome
The POS app printed reliably on 10 tested devices and kept transactions locally through network drops. Drivers could keep selling tickets first, then let the device sync when the route had signal again.
Postmortem: With more time, I would add a small supervisor dashboard so managers can see unsynced devices before the end of a route.
Impact: 10 tested devices · offline queue · APK builds in CI
