One login, many branches
Each person signs in with a username and PIN. If they work at more than one shop, they switch branch from a menu without signing in again. The PIN itself never leaves the device; only a scrambled version is checked.
Rutz Cosmetics has branches in Harare and Bulawayo. We built them a till and stock app that every branch shares: scan and sell, print or WhatsApp the receipt, move stock between shops, and give each member of staff only the access their job needs.
01 — The problem
With several branches, the questions that matter cross shop lines: what did each branch sell today, which shop is running low on a lipstick another shop has plenty of, and who changed a price. Separate books per shop can't answer them.
Rutz wanted to run all its shops as one business. They needed:
02 — How we built it
Here's what each step looked like on this project.
The goal was simple to say: see what each branch sells, move stock to where it's needed, and keep every till consistent. Every screen was judged against that.
We built a small design system first (colours, type, buttons, cards, empty states) so every screen looks and behaves the same. We also settled how branches, staff and permissions fit together. Those choices are explained below.
We mapped the main flows (sell, take payment, check stock by branch, transfer stock) as a clickable prototype that works on a till screen, a tablet and a phone. Try it below.
Features went in one at a time: staff login and roles, the sell screen and held sales, products and categories, stock tools, expenses and suppliers, offline selling, a full desktop layout, then WhatsApp receipts, expiry tracking, CSV import and export, and phone-to-phone sync.
Database rules on the server check every permission, so a cashier's phone can't do what a cashier isn't allowed to. Crashes from the field are logged to a screen only we can see. A small set of automated tests covers the cart, and we checked each flow against the brief.
The app is built for Android, and a Windows installer puts it on the till PCs. We kept a support dashboard for ourselves, plus tools to add a branch, reset a PIN or rename a username without touching anyone's device.
03 — Try it
This is the clickable prototype, running live on the page. It uses sample products, prices and branch figures, and it may be a step behind the real app.
04 — Key decisions
In plain English, without the jargon.
Each person signs in with a username and PIN. If they work at more than one shop, they switch branch from a menu without signing in again. The PIN itself never leaves the device; only a scrambled version is checked.
Every shop starts with five roles: Owner, Manager, Shopkeeper, Stock Clerk and Accountant. Each is just a list of ticked permissions, like "apply discount" or "change selling price", and the owner can edit them or make new ones.
The sale and the stock it uses are saved together on the device and sent up when the connection comes back. The honest trade-off: if two offline tills sell the last unit before either syncs, the stock count needs a quick check afterwards.
Product and price edits, stock adjustments, transfers, sales and refunds each write a line to the audit log, saying who did it and when. The server only accepts new lines. Not even the owner can change or delete one.
Smaller touches came from the same thinking. Stock transfers match products by barcode, so a branch that doesn't stock an item yet gets it added automatically. Stock takes list every product with the system count filled in, so staff only type the ones that are wrong. And when there's no internet at all, two phones can swap sales and stock over the shop Wi-Fi, or a hotspot one Android phone creates for the other.
05 — Tech stack
Flutter (one codebase for Android and Windows), Provider for state
Cloud Firestore with an offline cache, Firebase Storage for product photos
Firebase Auth, with small server functions on Vercel for staff and branch admin
Camera barcode scanning, ESC/POS Bluetooth printers on 58 mm or 80 mm paper
A small HTTP server on the host phone (Shelf) for phone-to-phone sync
Charts (fl_chart), PDF and CSV export through the phone's share menu
06 — Where it stands
Beyond the till, the app already covers:
The permission list already has places for customer records and supplier purchase orders. Those screens aren't built yet, and are the natural next step.
Your project
We follow the same steps for every client, and you see a clickable prototype before you pay for the build.