Point of sale for 200+ retail stores across the Gulf

The problem

Eyewa is one of the largest eyewear retailers in the Middle East, with 200+ physical stores across the Gulf. Every sale, every prescription order, every exchange runs through the point-of-sale system — on store hardware, on store networks, operated by staff whose job is selling glasses, not troubleshooting software.

A POS is an unforgiving product surface. An e-commerce page that takes an extra second loses a conversion; a POS that takes an extra second has a physical queue of customers watching a cashier apologize. There is no "try again later" at a till.

What I own

As the technical lead for the POS frontend, I'm responsible for the architecture and delivery of the app that stores run every day: the checkout and order flows, prescription capture, payments integration, and the release process that ships changes to hundreds of stores without breaking a single trading day.

The recurring themes:

  • Resilience over elegance. Store networks drop. Payment terminals time out. Printers jam. The app's job is to degrade gracefully and never lose a sale that's in flight — which shapes everything from state management to how optimistically the UI is allowed to behave.
  • Fast on unremarkable hardware. Stores don't run flagship machines. Performance budgets are set against the slowest device in the fleet, not the developer's laptop.
  • Operationally boring releases. With 300+ stores depending on one codebase, deploys are staged, observable, and reversible. The most important feature of a POS release is that nobody in a store notices it happened.

What it taught me

Consumer web performance work is about percentiles and funnels. Retail systems work is about floors: the worst experience any store has today is the number that matters. It permanently changed how I think about error states — not as edge cases to handle, but as the primary states to design for.

A deeper technical write-up (offline strategies, sync conflicts, payment-terminal state machines) is coming as a full article.