Case study · Android
Retail POS
A point-of-sale app for retail stores, part of a cloud ERP suite. Cashiers ring up sales in seconds while the app quietly handles promos, taxes and licensing behind every tap.
- Role
- Mobile Developer
- Platform
- Android
- Status
- Live on Play Store
- Kotlin
- Hilt
- Room
- Retrofit
- Coroutines
- CameraX
- WorkManager
- Firebase
What it handles

Checkout
One screen to ring up a sale: items, quantities and savings, recalculated with every tap.

Promos & tax, handled reliably
Promos apply automatically when a sale qualifies, and tax is calculated inclusive or exclusive with rounding, so the cashier never does the math.

Payment
Quick cash amounts, cash or non-cash, and loyalty points. Checkout in a few taps.

Product detail
Per-item price, stacked discounts like "5+10", multiple units and notes.

Tap through a sale
An interactive prototype built from real app screens with demo data. Ring up a sale from product list to receipt.

Tap the highlighted areas, like a Figma prototype.
Under the hood
- UI
- XML views with ViewBinding, Navigation Component with Safe Args, and Paging. Every screen has its own state class; ViewModels expose it as StateFlow plus one-shot events.
- Domain
- Clean Architecture with ~290 use cases. Calculation engines in plain Kotlin: sale totals with inclusive/exclusive tax and rounding, a promo engine built on the Strategy pattern (discount, bonus, buy X get Y, minimum spend), and loyalty points.
- Data
- Room for local data, Retrofit + OkHttp across two backend API generations, DataStore for settings, WorkManager for background jobs, and a WebSocket for real-time cashier approval.
- Device
- CameraX + ML Kit barcode scanning, Bluetooth and WiFi receipt printers, session and license validation.
- Quality
- Hilt for dependency injection, Firebase Crashlytics, Analytics and Performance Monitoring, Fastlane releases to Play Store.