You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fast Β· Offline Β· Secure Android Point-of-Sale for Kenyan mini-markets
Built with Kotlin + Jetpack Compose π°πͺ
π± Screenshots
Login
Dashboard
New Sale
Checkout
Credit Payment
Customer Search
β¨ Features
ποΈ New Sale
Camera barcode scanner (ML Kit β EAN-13, UPC, QR, Code-128, Code-39, Data Matrix)
Bluetooth / USB HID barcode scanner support
Weighing scale support (PLU) β decodes variable-weight EAN-13 barcodes,
auto-calculates price from weight Γ price/kg, weight persisted in sale records
Continuous scan mode with animated laser overlay, corner brackets,
green flash confirmation, and live scan counter badge
Product search by name or barcode with live dropdown
Cart with quantity stepper, per-item discounts
Inclusive VAT β tax extracted from price, not added on top
Cart badge on bottom nav shows pending item count when navigating away
π³ Checkout & Payments
Cash β quick-amount buttons, real change calculation
M-Pesa β ref number field
Credit β customer wallet or buy-on-account (negative balance allowed)
Split payment β combine credit + cash in one transaction
Customer selector with search + contacts import
Cash drawer auto-opens on cash payment (configurable)
Haptic feedback confirms every completed sale
π€ Customer Credit System
Register customers with name, phone, email
Credit wallet β deposits, deductions on purchases
Buy on account β negative balance allowed
Full transaction history per customer
Credit Ledger β all non-zero balances at a glance
π΄ Debtors (negative, owe money) shown first with "OWES KES X" in red
π’ Wallet balances shown in green
Two summary stats: "Owed to Shop" + "Wallet Credit"
π Multi-Device LAN Sync
No internet, no cloud β pure local WiFi sync
Pairing code authentication β 6-digit code shown on server device,
required on client device β any WiFi visitor cannot read or inject data
Server device: toggle "Act as Sync Server", share the displayed code
Client device: enter server IP + pairing code β Sync Now
Pending-changes amber badge + progress spinner during sync
ποΈ Cash Drawer
ESC/POS kick via thermal printer RJ11 port
Direct Bluetooth cash drawer support
Auto-opens on cash payment (toggle) Β· Test button in Settings
π¦ Inventory & Products
Add/edit: price, cost, stock, category, SKU, unit, tax rate
Supplier info + reorder quantity Β· Batch number + expiry date
Biometric login β bound to one explicitly opted-in user per device (Settings β Account).
Any fingerprint on the device cannot authenticate as an arbitrary username.
Persisted 3-strike lockout β survives force-close, task-kill, and device reboot
(stored via DataStore, not in-memory state)