IoT · Retail · Full-Stack
QuickCart
Smart Trolley Checkout System


My roleI designed and built the multi-store platform, the counter printing and the Bluetooth setup app.
The situation
A supermarket queue is a cashier scanning, item by item, a basket the customer already picked up item by item. QuickCart puts a scanner, a screen and a camera on the trolley, so the bill is ready before the customer reaches the counter.
That only works if a store can set up dozens of trolleys without an engineer, and if the counter still prints a proper receipt on the printers the shop already has.
- Store Wi-Fi is weak in the aisles. Trolleys must keep scanning offline and catch up when they are back in range.
- One deployment serves several stores, and no store may ever see another's products, orders or staff.
- Setup must work from any phone, including iPhones, where no browser can use Web Bluetooth.
- Store Wi-Fi passwords must never reach the server.
Architecture decisions I made
- D1Every trolley keeps its own billThe trolley stores its list and syncs it when it can. At the counter the cashier only loads the trolley, checks it and presses Checkout & Print. A barcode the shop has not added yet still syncs, and shows at the counter as an unknown item to add or remove before checkout.
- D2The store is part of every requestStaff send a session token and the store they are working in; a trolley sends its own device key, which resolves to its store. Every query filters on the store, and a record from another store answers 404, never 403, so ids do not leak.Trade-off Every table and database function carries the store, so old firmware needed a default store to keep working during the move.
- D3A setup app that speaks the same Bluetooth contract as the portalA React Native app writes the store Wi-Fi, the trolley number and a fresh device key over Bluetooth, then waits for the device to confirm. If a setup fails after the key is made, the key is reused on retry instead of reset. The Wi-Fi password stays on the phone, and the key is never shown.
- D4Print where the printers areThe same app runs on the counter computer and sends receipts, with the store's logo and address, to network thermal printers on the shop network.
In practice
One shopping trip
- AisleThe customer scans each item into the trolley. The list is kept on the trolley, so it works without Wi-Fi.
- SyncNear the counter the trolley reaches Wi-Fi and sends its full list, including anything scanned offline.
- CounterThe cashier opens the trolley by its number. Items the shop has not added yet are flagged for checking.
- CheckoutCheckout & Print saves the sale, reduces stock and prints the receipt. The trolley is cleared for the next customer.
What I took away
- A smart trolley is only as good as its setup, so setting one up got its own phone app instead of a step buried in the portal.
- Design retries before failures happen: a retry that resets the device key would have locked out the trolley it was trying to fix.
Questions about this project
What problem did QuickCart solve?
Checkout queues are the slowest part of a supermarket visit, and a smart trolley is only useful if the store can set up dozens of them without an engineer, on any phone, including iPhones that cannot use Web Bluetooth.
Who built QuickCart, and how does it work?
I did (Qalab Hassnain Agha). I designed and built the multi-store platform, the counter printing and the Bluetooth setup app. How it works: A Next.js and Supabase platform where every trolley's scanner syncs its items, a cashier checkout that prints receipts to printers on the shop network, multi-store isolation enforced on every query, with row-level security locking out the public keys, and in-trolley ads. A React Native setup app talks to each device over a fixed Bluetooth contract to give it the store Wi-Fi, its number and its own key. Stack: Next.js · TypeScript, Supabase Postgres, Row-level security, React Native, Bluetooth Low Energy, ESP32 trolley hardware, Network receipt printing.
What results did QuickCart achieve?
Live multi-store platform with per-store data isolation. Setup finishes in under a minute per trolley. Safe retries: the device key is reused, never duplicated. Store Wi-Fi passwords stay on the phone, never on the server.
Can I hire Qalab to build something similar to QuickCart?
Yes. Contracts from $25 an hour, full-time remote from $3,000 a month, fixed-price prototypes from $600 and builds from $2,000, and fractional CTO retainers from $800 a month. Book a free 30-minute call and I will tell you honestly whether and how I would build it.
Gallery





