SCRL 0%CRSR 0,0
01 — WORK
GET IN TOUCH
← BACK TO WORK
03 · VIVORA

Orders without waiters, apps or a POS terminal.

QR-code restaurant ordering, live in 8 restaurants: guests order from their phone, tickets reach the kitchen display in under a second and print on the thermal printer.

ROLE
Founder, sole engineer
COMPANY
Independent
TIMELINE
2026 — NOW
SCOPE
Product · Full-stack build · Print agent · Operations
STACK
NestJSGraphQLMongoDBNext.jsgraphql-wsRailway
  • LIVE IN 8 RESTAURANTS
  • 4 LANGUAGES
  • REAL-TIME KITCHEN DISPLAY
  • MULTI-TENANT
01
CONTEXT

Built for Uzbek-run restaurants in South Korea, where guests and cooks don’t share a language.

Guests scan the QR code on their table, browse a live menu in their own language, and order from their phone. The ticket reaches the kitchen display in under a second and prints on the thermal printer by the pass. Owners run menus, tables, running tabs and revenue from one dashboard, and the platform invoices each restaurant a flat monthly fee.

I run it end to end: infrastructure, releases, customer onboarding and support.

02
AT A GLANCE
8
Restaurants live
4
Languages
<1s
Order to kitchen
0
Apps to install
03
KEY FEATURES

QR ordering, zero install

Scan a table code, order in your language, watch the status change live. No app, no account.

Real-time kitchen display

Orders arrive on an always-on board over WebSocket subscriptions and print automatically.

Running table tabs

The first scan opens a tab and every later order joins it; a database-level index guarantees one visit never splits into two bills.

One kitchen language

Guests read English, Korean or Russian. Tickets and reports stay in Uzbek, because that’s what the cooks read.

Self-driving lifecycle

Orders accept, serve and settle themselves on a timer, so service completes even when nobody touches a screen.

Owner analytics

Revenue, peak hours, best sellers and average ticket, computed in MongoDB aggregation pipelines.

04
ARCHITECTURE

A cloud GraphQL API, and a local print agent that bridges it to the kitchen.

A NestJS + TypeScript GraphQL API (code-first) with MongoDB, JWT auth and role guards pushes live order feeds over graphql-ws. The Next.js 14 + MUI frontend uses Apollo Client and Zustand.

A standalone Node print agent, installed as a Windows service, drives ESC/POS thermal printers on the restaurant’s own LAN. Menus are translated with the Gemini API, staff get Telegram alerts, and the stack deploys on Railway and Vercel.

05
PANELS

A restaurant dashboard for owners, and a super-admin panel for the platform.

  • Orders & tables

    Live orders, phone orders, payments, table setup, QR codes and closing bills.

  • Menu & availability

    Categories and dishes in four languages, prepped portions that sell out automatically at zero.

  • Billing & feedback

    Monthly invoices, bank-transfer reporting, and guest ratings and comments.

  • Approval-gated signups

    Restaurants stay locked until a super admin approves them, so nobody goes live unreviewed.

  • Suspend without rejecting

    An approved restaurant can be switched off and back on without losing its approval.

USED TECHNOLOGIES
TypeScript
NestJS 10
GraphQL + graphql-ws
MongoDB 7
Next.js 14
MUI v5
Apollo Client
Zustand
ESC/POS print agent
Gemini API
Telegram Bot API
Docker
04NEXT PROJECT
QALQON