All work
Restaurant SaaSFull-Stack PlatformsCase study

Haazir Eats — Restaurant POS & QR Ordering

Runs a restaurant’s delivery orders and counter bills from one system with one source of truth for sales.

A restaurant platform that unifies online delivery and in-store POS/KOT into one invoicing system, with QR guest ordering, a realtime kitchen display and 80mm thermal printing — built on NestJS with Socket.IO.

Source private
Haazir Eats — Restaurant POS & QR Ordering interface
Industry
Food & Restaurant
Role
Full-Stack Engineer
Type
SaaS Platform
Year
2025
Status
Delivered
Online + POS
Order Channels
Socket.IO
Realtime
80mm ESC/POS
Printing

Overview

Haazir Eats extends an existing online delivery platform with a full POS/KOT and QR-ordering program, all under one unified invoicing model. A single set of invoice tables records both online delivery orders and in-store POS bills, with an invoice generated automatically (and idempotently) when an online order is delivered.

The POS module manages restaurant tables, table sessions, KOT orders, billing and QR codes. Guests can scan a table QR to order dine-in, or order takeaway without a table. The kitchen sees live updates through a Socket.IO namespace, and bills support discounts, tax, service charge, round-off and split/mixed payments, printed on an 80mm ESC/POS thermal layer.

The backend is NestJS (modular: invoices, pos, public, reports), paired with a Flutter partner app, a Next.js admin panel and a public marketing + ordering website.

The problem

A delivery platform needed in-store POS/KOT and QR ordering, but online orders and counter bills lived in different worlds — making unified reporting and kitchen coordination impossible.

The solution

Added POS/KOT and QR ordering as additive NestJS modules on top of the existing platform, with one unified invoice model recording both online and in-store sales, and Socket.IO driving realtime kitchen and table updates.

Technical stack

Frontend

  • TypeScript
  • Flutter
  • Next.js

Backend

  • NestJS
  • Node.js
  • Socket.IO

Data

  • MySQL

Infrastructure

  • ESC/POS Printing

System architecture

  1. 1

    NestJS backend with modular design: `invoices` (unified online + POS), `pos` (tables/sessions/KOT/billing/QR), `public` (guest QR ordering) and `reports` (PDF/Excel)

  2. 2

    Single invoice model (`invoices` / `invoice_items` / `invoice_payments`) with a `source_type` distinguishing online orders from KOT bills; an idempotent hook generates an invoice when an online order is delivered

  3. 3

    `pos` Socket.IO gateway broadcasts realtime KOT/table/session updates to vendor rooms

  4. 4

    Flutter partner app provides the POS/KOT UI, kitchen display and an 80mm ESC/POS printing layer; Next.js admin + a public website handle management and guest ordering

Engineering challenges

Challenge

Online delivery orders and in-store POS bills needed unified reporting.

How I solved it

Designed one invoice schema with a source_type and an idempotent delivery hook, so every sale — online or counter — lands in the same ledger.

Challenge

Kitchens needed instant, reliable KOT/table updates.

How I solved it

Built a Socket.IO `/pos` gateway with per-vendor rooms for realtime kitchen and table-session events.

Core features

  • Unified invoicing for online delivery + in-store POS in one model
  • POS/KOT: tables, sessions, KOT orders, billing and QR codes
  • QR guest ordering — dine-in (with table) or takeaway
  • Realtime kitchen display via Socket.IO
  • Billing with discounts, tax, service charge, round-off, split & mixed payments
  • 80mm ESC/POS thermal printing with KOT print payloads
  • Sales reports across online + POS with PDF/Excel export
  • Flutter partner app + Next.js admin + public website

Results & impact

Restaurants run delivery and dine-in from one system with a single source of truth for sales, a live kitchen view, and real thermal-printed KOTs/bills — with reporting that finally spans both channels.

Screenshots

Haazir Eats — Restaurant POS & QR Ordering screenshot 1
Haazir Eats — Restaurant POS & QR Ordering screenshot 2
Haazir Eats — Restaurant POS & QR Ordering screenshot 3
Haazir Eats — Restaurant POS & QR Ordering screenshot 4
Haazir Eats — Restaurant POS & QR Ordering screenshot 5
Haazir Eats — Restaurant POS & QR Ordering screenshot 6
Haazir Eats — Restaurant POS & QR Ordering screenshot 7
Haazir Eats — Restaurant POS & QR Ordering screenshot 8
Haazir Eats — Restaurant POS & QR Ordering screenshot 9

What I learned

  • Adding capabilities as additive modules protects a working platform while it grows.
  • A unified data model up front is what makes cross-channel reporting trivial later.

Related work

All projects
Next step

Have a system like this to build?

I take projects from the first conversation through to production, and stay on for the support that follows.