No items yet
Tap a product to add it
| Product | SKU | Category | Price | Cost | Stock | Status | Actions |
|---|
| Date & Time ↕ | Receipt # ↕ | Customer ↕ | Items | Total ↕ | Payment ↕ | Status | Actions |
|---|
| # | Product | Category | Units Sold | Revenue | Avg Price | % of Sales |
|---|
| Customer | Orders | Total Spend | Avg Order | Last Purchase | Type |
|---|
| Receipt | Date | Customer | Method | Items | Total |
|---|
| Product | SKU | Category | Stock | Low Stock At | Status | Stock Value |
|---|
| Job # | Date | Customer | Device | Status | Quote | Priority |
|---|
| Receipt # | Date & Time | Customer | Cashier | Items | Subtotal | Tax | Discount | Total | Payment | Actions |
|---|
| Receipt # | Date & Time | Customer | Items | Subtotal | Discount | Total | Payment | HPM? | Actions |
|---|
| Staff | Standalone | Combo | Daily Target | Adjustments | Total | Bonus hours | Awards |
|---|
| Period | Orders | Revenue | Avg Order | Demand Level | Suggested Staff |
|---|
| # | Product | Category | Units Sold | Revenue | Avg/Week | Proj. Week | Proj. Month | Proj. Quarter | Current Stock | Weeks Left |
|---|
How your shop appears across the app
Basic information about your business
Configure how tax is calculated at checkout
Set the currency symbol used throughout the app
Customise which payment options appear on the POS checkout screen
The name and details printed at the top
Tap to show or hide each part
A black-and-white logo prints best on receipt paper
A line at the top and your thank-you at the bottom. Tap a suggestion to add it.
Pick a style, or fine-tune it below
How this till reaches the printer: the Epson on the shop's Wi-Fi, a Bluetooth printer, or the print window
Add, edit or remove discount codes used at checkout
Add, edit or remove suppliers — set one as the default supplier on a product or repair part so Restock knows who to order it from
For items without their own numbers: reorder when stock is at or below the reorder point, then order up to reorder point + order qty (js/inventory/restock-rules.js)
The categories your products use, grouped by department — they appear here by themselves (an import, a new product). Add one ahead of time, rename (renames it on its products; an existing name moves them into it), drag to reorder, delete unused ones. Tick "🔧 Repair-triggering" on a department or a category a technician should be able to deduct against a Parked Sale ticket — everything else behaves as plain retail stock.
Reusable option lists (e.g. Phone Model, Colour) — build them once here, then apply them to any product's variant groups instead of retyping.
Every colour a variant can have, with the dot the matrices and the checkout draw for it: one colour, two tones, a pattern (glitter, glass, marble, carbon) or an emoji. Tap a dot to change it. A colour on a product with no dot yet is listed under "Needs a dot" and shows as a dashed "?"; two colours of one product that draw the same are listed under "Look the same". On a matrix, an admin's long-press (or right-click) on a dot opens the same editor. Archiving keeps past stock/sales records readable.
The primary colour used for buttons and highlights
Early looks at upcoming changes — safe to try, off by default, switch back anytime
The shop's own model names — case models (groups like "A36/56/37" allowed), protector models, repair models (one phone each). A product on a list shows them exactly as written: its matrix rows are the list, in this order.
How the POS behaves on every till, for everyone — unless a device or a person picks their own (This Device / My Preferences).
Only this till / iPad — kept on this device, never synced. A person's own preference still wins.
Add the till to the home screen: it opens from its own icon, in its own window, like an installed app.
In every new job number (RJ-A-0001) and parked ticket (#A1), so two tills never give the same number. Set once per till.
Where this till keeps its copies of the product images, so each picture is downloaded once. On Chrome / Edge they can go in a folder on this computer — and the folder can be copied to another till.
These already belong to this device only
Only you, on every till you sign in to (saved with your staff record). Staff open this from their name → My preferences.
People who can log in to this POS
Tick the pages, tabs and actions each role can use — untick to hide them
firebase deployCompress all existing product images to reduce sync size. Images are stored separately from product data for cloud sync.
Repair photos and signatures are kept on this device. When signed in to Cloud Sync they are also backed up to the cloud, so the other tills can see them and they survive this device. Pictures over 1.5 MB always stay on this device.
Lets every till keep product images instead of asking the cloud each time one is shown. New images are uploaded this way; this sets it once on the images already in the cloud (admin, signed in). Safe to run again — images already set are skipped, and a stopped run carries on.
Only accounts that are members of the shop can read or write its cloud data (Firestore security rules). The first till to connect becomes the owner; the owner adds any other accounts here.
Set up the layout on this device — checkout tabs and pinned products, renamed/hidden tabs, tab & row order across the app, classic or new look — then save it as the shop default. Every device following the shop layout switches to it automatically, including new devices and new sessions.
Control which devices can access the POS system. Untrusted devices are blocked at the lock screen.
Where it is set up, the cloud knows which person is at the till, not only which shop.
All devices registered to access this POS. Revoke access to deactivate a device remotely.
• The device guard uses a cryptographic token stored in the browser's localStorage.
• Clearing browser data will deactivate the device and require re-activation.
• Revoking a device takes effect the next time that device connects to the internet.
• The master password is hashed (SHA-256) — the plaintext is never stored.
• Staff cannot bypass the guard by typing a URL — the guard blocks all content.
Technical details for troubleshooting sync issues