Tapaway
A browser based PWA for tracking reusable foodware through borrow, return and wash.

Problem
Reusable foodware only works as a green alternative if the items actually come back. That means tracking each cup through its full lifecycle (borrowed by a customer, returned to a station, sent to wash, back into circulation) without slowing the event down or making staff carry extra hardware. The team needed something an event volunteer could pick up in seconds, on a phone they already own.
Outcome
- Deployed at real events with the Tapaway team, with cups tracked end-to-end across borrow, return and wash.
- Any modern Android phone can act as a borrow or return terminal by opening a link, no app store, no extra hardware.
- Provides a single live view of how many cups are out, how many are back, and the resulting impact figures the client can share with partners.
Stack
PWA (browser-first) · Web NFC (experimental browser API) · RFID interface (early, used for batch flows) · PHP / MySQL backend · Dashboard with live transaction log
About the client and the problem
Tapaway is a Hong Kong startup that supplies reusable cups and foodware to events and businesses, as a replacement for single-use packaging. The hard part of that business is not the cups themselves, it is keeping track of them. A reusable cup that does not come back is just a more expensive disposable, so the operation only makes sense if every item can be followed through its full cycle and surfaced as real numbers (how many uses, how much waste avoided) for the partners and venues funding it.
I led the software side as tech lead, working with the Tapaway team. The brief was to turn that lifecycle into something a volunteer at a busy event could operate without training, on equipment that did not need to be bought, shipped or charged.
How the system works
Each cup carries an NFC tag with its own ID, and the whole interface is a browser based PWA. Staff open a link on their own Android phone, the phone becomes a borrow or a return terminal, and a tap on the cup writes the next state. No app install, no dedicated reader. This leans on the Web NFC API, which is still an experimental browser feature, but it is exactly the trade I wanted: ship today on commodity phones, instead of waiting on custom hardware.
Behind that, every cup moves through a small state machine (available, borrowed, returned, in washing, back to available). The backend is the single source of truth for which state a cup is in, and every transition is logged as a transaction. There is also a parallel RFID interface, intended for the bulk steps where a tray of dozens of cups goes into wash and comes out again. It works, but it is the rougher side of the system today and still has room to grow. The dashboard rolls everything up into live counts and an impact view that the client can show partners. The shape of the system, in the end, is closer to asset tracking than to a point of sale, with the asset being a cup that has to find its way home.



