Works
Contact

QR Dine

A restaurant ordering and administration platform that lets customers scan a QR code to browse menus, place orders, follow their order in real time, and pay online, while giving restaurant staff full control over menus, tables, stock, orders, and daily operations.

Date: 4/2023

Tags: Next.js, TypeScript, Express.js, Prisma, Socket.IO

Hero image: https://naikho.com/api/media/portfolio/fc07082f-02a8-4739-a551-7aec62c4f264.png

Project content

## Overview

QR Dine is a restaurant management and QR ordering platform designed for the hospitality sector. The goal was to give restaurants a complete operational system where customers can scan a QR code at their table, access the menu instantly, place orders without creating an account, and pay either online or at the cashier.

On the business side, the platform provides a full administration interface to configure and run the restaurant on a daily basis, including menus, stock, tables, schedules, orders, users, and payment flows.

## Product scope

The project was structured as a complete platform with multiple parts:

- a backend API
- an admin interface for restaurant staff
- a customer-facing ordering experience accessed through QR codes
- a super admin layer for platform-level management

The overall objective was to create a system that restaurants could configure once and then use every day for service, order tracking, and payments.

## Key features

### Restaurant admin

- User and permission management
- Stock management with movement history
- Automatic stock updates based on orders
- Menu management with advanced product composition
- Food and option management linked to stock units
- Interactive order kanban with drag and drop
- Real-time order updates
- Manual order creation at the cashier
- Interactive table plan with positioning and occupancy handling
- QR code generation for tables
- Opening hours management
- Customer email data management and export
- Online payment integration with Viva Wallet

### Customer experience

- Table access through QR code scanning
- Menu browsing without account creation
- Cart and checkout flow
- Online payment or cash payment selection
- Real-time order status tracking
- Assistance request feature
- Split bill support across multiple people at the same table
- Complex product selection flows similar to food delivery apps

## My role

I developed the project almost entirely myself.

My work included:
- frontend integration
- backend development
- API design
- real-time system integration with `Socket.IO`
- database modeling with `Prisma`
- payment flow implementation
- business logic for menus, stock, and orders
- architecture and folder organization
- TypeScript migration and refactor
- design adaptation and implementation from the original Figma work

Although the project started with an external design base, I reworked parts of the design and handled the full implementation and application logic myself.

## Technical challenge

The most difficult part of the project was the order and payment logic.

At first, the codebase was written in plain JavaScript, and some flows became difficult to maintain because many rules were interacting at the same time:
- promotions
- active discount rules
- menu pricing
- included products and selectable options
- stock updates
- cashier payment states
- online payment handling

This created bugs and made the checkout pipeline harder to reason about.

A major refactor to `TypeScript` significantly improved the project. It helped structure the codebase better, surface mistakes earlier, and make the pricing and cart logic much more reliable by separating responsibilities into clearer modules.

## Technical highlights

What makes this project interesting is the combination of product complexity and real-time operations.

It mixes several difficult concerns in the same platform:
- real-time restaurant workflows
- dynamic menu composition
- stock-aware ordering
- table-based customer sessions
- split payment scenarios
- synchronized admin and customer states

One notable feature was the split bill system. Multiple users at the same table could join a shared payment flow in real time while still keeping their own order context, which required careful synchronization between individual carts, shared totals, and order state management.

## Why this project matters

QR Dine is a strong example of my ability to build business-critical software with real operational constraints.

It required much more than a simple frontend application. I had to design and connect admin workflows, customer experience, payment flows, real-time updates, stock logic, and restaurant configuration into one coherent platform.

It is also the project that pushed me much further into serious `TypeScript` usage, especially for complex business logic and long-term maintainability.

## Status

The project is currently on hold. It is a proprietary product, so the repository is private and there is no public demo available at the moment.

Gallery

Similar project: Infinity Table

QR Dine
April 2023Next.jsTypeScriptExpress.jsPrismaSocket.IO

QR Dine

A restaurant ordering and administration platform that lets customers scan a QR code to browse menus, place orders, follow their order in real time, and pay online, while giving restaurant staff full control over menus, tables, stock, orders, and daily operations.

Overview

QR Dine is a restaurant management and QR ordering platform designed for the hospitality sector. The goal was to give restaurants a complete operational system where customers can scan a QR code at their table, access the menu instantly, place orders without creating an account, and pay either online or at the cashier.

On the business side, the platform provides a full administration interface to configure and run the restaurant on a daily basis, including menus, stock, tables, schedules, orders, users, and payment flows.

Product scope

The project was structured as a complete platform with multiple parts:

  • a backend API
  • an admin interface for restaurant staff
  • a customer-facing ordering experience accessed through QR codes
  • a super admin layer for platform-level management

The overall objective was to create a system that restaurants could configure once and then use every day for service, order tracking, and payments.

Key features

Restaurant admin

  • User and permission management
  • Stock management with movement history
  • Automatic stock updates based on orders
  • Menu management with advanced product composition
  • Food and option management linked to stock units
  • Interactive order kanban with drag and drop
  • Real-time order updates
  • Manual order creation at the cashier
  • Interactive table plan with positioning and occupancy handling
  • QR code generation for tables
  • Opening hours management
  • Customer email data management and export
  • Online payment integration with Viva Wallet

Customer experience

  • Table access through QR code scanning
  • Menu browsing without account creation
  • Cart and checkout flow
  • Online payment or cash payment selection
  • Real-time order status tracking
  • Assistance request feature
  • Split bill support across multiple people at the same table
  • Complex product selection flows similar to food delivery apps

My role

I developed the project almost entirely myself.

My work included:

  • frontend integration
  • backend development
  • API design
  • real-time system integration with Socket.IO
  • database modeling with Prisma
  • payment flow implementation
  • business logic for menus, stock, and orders
  • architecture and folder organization
  • TypeScript migration and refactor
  • design adaptation and implementation from the original Figma work

Although the project started with an external design base, I reworked parts of the design and handled the full implementation and application logic myself.

Technical challenge

The most difficult part of the project was the order and payment logic.

At first, the codebase was written in plain JavaScript, and some flows became difficult to maintain because many rules were interacting at the same time:

  • promotions
  • active discount rules
  • menu pricing
  • included products and selectable options
  • stock updates
  • cashier payment states
  • online payment handling

This created bugs and made the checkout pipeline harder to reason about.

A major refactor to TypeScript significantly improved the project. It helped structure the codebase better, surface mistakes earlier, and make the pricing and cart logic much more reliable by separating responsibilities into clearer modules.

Technical highlights

What makes this project interesting is the combination of product complexity and real-time operations.

It mixes several difficult concerns in the same platform:

  • real-time restaurant workflows
  • dynamic menu composition
  • stock-aware ordering
  • table-based customer sessions
  • split payment scenarios
  • synchronized admin and customer states

One notable feature was the split bill system. Multiple users at the same table could join a shared payment flow in real time while still keeping their own order context, which required careful synchronization between individual carts, shared totals, and order state management.

Why this project matters

QR Dine is a strong example of my ability to build business-critical software with real operational constraints.

It required much more than a simple frontend application. I had to design and connect admin workflows, customer experience, payment flows, real-time updates, stock logic, and restaurant configuration into one coherent platform.

It is also the project that pushed me much further into serious TypeScript usage, especially for complex business logic and long-term maintainability.

Status

The project is currently on hold. It is a proprietary product, so the repository is private and there is no public demo available at the moment.

Gallery

QR Dine screenshot 1
QR Dine screenshot 2
QR Dine screenshot 3
QR Dine screenshot 4
QR Dine screenshot 5
QR Dine screenshot 6
QR Dine screenshot 7
QR Dine screenshot 8
QR Dine screenshot 9
QR Dine screenshot 10
QR Dine screenshot 11
QR Dine screenshot 12
QR Dine screenshot 13

Naikho © 2026