Billing, inventory, and analytics system for Nugawela Service Center

Inventory Management

NSC is a billing, inventory, and analytics system for a service centre and spare-parts shop. Cashiers work a single-screen POS on Android. Owners and admins get the same app with analytics, staff, expenses, and stock control. A Go API on PostgreSQL is the source of truth; the phone keeps a local copy of customers and parts so search still works when the network is weak. Roles keep the floor simple: employees bill and restock; managers see cost, profit, and the books.

The challenge

The counter had to stay fast on ordinary Android phones. Checkout had to be one screen: find or create the customer, add parts and labour, take cash / card / transfer or credit, print or send the bill. Stock had to drop in the same transaction as the sale so numbers could not drift. Credit and part-payments needed a “to collect” list. The owner needed real margin (selling price locked at sale vs cost), low-stock alerts, shift cash vs declared drawer, expenses, and an audit trail for voids. Cost prices and owner tools had to stay hidden from cashiers. Invoices had to be a proper PDF the customer could get on WhatsApp, with Sri Lankan numbers (+94).

Our solution

We built a native Expo Android app and a Go/Fiber API with JWT roles (employee, admin, owner). Checkout is atomic: invoice, payments, and stock move together. Parts and customers sync to SQLite for floor search; barcode scan (camera or HID) uses the unique part code, with CODE128 labels and a muteable scan beep. Inventory supports add, edit, restock, categories, and reorder levels. Bills are the same HTML invoice for print and WhatsApp share. Shifts track float and cash. Managers get dashboard, ledger, outstanding, expenses, analytics, staff, PIN/biometric lock, and English / Sinhala. The API is hosted (Railway); the shop app is a sideloadable APK.

Results

The counter runs on a phone instead of a till PC. Sales, stock, and credit live in one place, so the owner can see what sold, what is owed, and what to reorder without a spreadsheet. Cashiers cannot see cost or owner analytics. Voids restore stock and leave an audit row. Weak Wi‑Fi does not stop lookup. Customers leave with the same PDF the shop prints. Admins can run the shop like the owner except they cannot change the owner account.

Key features

  • Single-screen POS checkout (customer, parts, services, technician)
  • Split payments: cash, card, transfer, credit, and partial pay
  • Atomic sale: invoice + stock in one database transaction
  • Barcode scan and CODE128 part labels
  • Local SQLite search for parts and customers when the network is slow
  • Inventory: add, edit, restock, categories, reorder / low-stock
  • Credit ledger and “to collect” outstanding list
  • Shift open/close with cash float and drawer check
  • Owner analytics: revenue, profit, top parts, top services, staff
  • Expenses with categories
  • Role-based access: employee, admin, owner
  • Invoice PDF print and WhatsApp share (same bill, +94 numbers)
  • PIN / biometric app lock
  • English and Sinhala
  • Android APK built for the shop floor

App screens

Overview Dashboard
Overview Dashboard
Inventory Management
Inventory Management
Billing Window
Billing Window
Owner Dashboard
Owner Dashboard