01 / Context
The internet will drop, so the till must keep working.
I built PerkOS as my own software product for business operations. A till cannot assume an uninterrupted connection just because its database lives in the cloud.
The offline sale queue lets work be captured when the connection drops. The harder part comes when the connection returns: the sales saved on the device must be matched to the main records without duplicates.
02 / Constraints
What the system had to handle.
- A connection can disappear during a sale, rather than conveniently before it.
- Stock changes and staff permissions need explicit rules at the data layer.
- A deployed product is not evidence of product-market fit or paying customers.
03 / Decisions & trade-offs
Key decisions and their trade-offs.
Capture locally, then replay
I built an offline sale queue with replay on reconnect, rather than making every till action wait for the network.
- Alternative
- Require a successful online request before accepting any work.
- Trade-off
- Queued work is not the same as a server-confirmed sale. Replays, interruptions, and reconciliation need attention; offline support does not mean every feature works without a connection.
Express business rules in the database
I made stock movement go through a ledger and defined staff constraints such as preventing workers from increasing their own discount ceiling.
- Alternative
- Enforce these rules only in interface controls.
- Trade-off
- Database-enforced rules require careful migrations, but a different client cannot simply bypass a disabled button.
Put tests in front of the build
The build runs the Vitest suite before the application build. A failing test stops that delivery path.
- Alternative
- Run tests as an optional developer step.
- Trade-off
- The suite adds build time and maintenance. Its value depends on meaningful cases, not just a green count.
04 / Outcome
A live product, with adoption still to prove.
I built and deployed PerkOS with offline queueing, stock rules, and automated tests. It is an independent product, not a client commission. I do not claim paying customers or commercial traction for it.
What I’d improve next
Commercial validation is the next major test. I would pair a small operator pilot with improvements to money-screen accessibility and large exports before making broader reliability or adoption claims.
Project snapshot: 2 November 2026. Outcomes describe what was built and launched, not a measured rise in revenue.


