Menuvyn
A QR-powered digital menu platform that gives restaurants an app-like ordering experience without downloads, commissions, or subscriptions.

Role
Founder & sole engineer — product, i18n, offline-first frontend
Stack
- Next.js
- TypeScript
- PostgreSQL
- Service workers
- Edge caching
The problem
Delivery platforms take a commission on every order, and most digital-menu products replace that with a subscription. Restaurants operating on thin margins end up paying either way — and the diner still gets a PDF that pinches and zooms badly on a phone.
Approach
- 01Built the menu as an app-like surface that loads from a QR scan — no download, no account, no commission on the order.
- 02Made language a first-class axis rather than a translation layer: English, Sinhala and Tamil switch instantly, with the script rendering correctly at every breakpoint.
- 03Cached aggressively at the edge and offline, because restaurant Wi-Fi is unreliable and a menu that fails to load is worse than a laminated card.
- 04Kept the restaurant-side editor simple enough that a manager can update prices between services without training.
System
The menu is cached in three places before it is ever requested. Restaurant Wi-Fi is the least reliable link in the chain, so the diner's device holds a working copy and the network is an optimisation rather than a dependency.
Diner
- QR scan
- App-like menu
- Instant language switch
Offline
- Service worker cache
- Survives a dropped connection
Edge
- Edge cache
- Next.js app
Data
- PostgreSQL
- Trilingual content model
The restaurant's editor writes prices straight through the cache layers, so a change between services is live without a deploy
Trade-offs
What was rejected, and why.
No commission on orders and no subscription.
Instead ofA per-order cut, or a monthly fee per restaurant.
Both of those are the problem restated. A restaurant on thin margins that swaps a delivery commission for a SaaS bill has not gained anything worth switching for.
Language modelled as a first-class axis of the content.
Instead ofA translation layer over an English-primary menu.
Sinhala and Tamil are not a localisation of this menu, they are the menu. A translation layer gets the strings right and the script rendering, line breaking and layout wrong at exactly the breakpoints a phone uses.
An offline-first surface loaded from a QR scan.
Instead ofA hosted PDF, which is what most restaurants are handed.
A PDF pinches and zooms badly on a phone and fails hard on bad Wi-Fi. A menu that will not load is worse than the laminated card it replaced.
Outcome
- Ordering experience with no downloads, commissions or subscriptions.
- Trilingual menu with instant switching.
Next project
Harriet Shopping