Skip to content
Raja Varma
Productivity ToolsWeb ApplicationClient WorkWeb DevelopmentLive

Token Kitchen - Token Ordering System

Token Kitchen replaces paper tokens at a food counter with a simple two-role web app. The Owner takes orders (dine-in or take-away) from a predefined menu and hands out a token number; the Chef sees new orders instantly and advances them through NEW, IN PROCESS, and COMPLETED. There are exactly two roles and no customer accounts.

Problem Statement

Paper tokens and shouted orders lead to lost or duplicate orders, reused token numbers, and no record of what was sold each day.

Proposed Solution

A real-time web app where tokens are allocated safely on the server for each business day, orders sync live between the owner's counter and the kitchen, and every order is stored for history and daily totals.

Main Features

  • PIN login for exactly two roles (Owner and Chef)
  • Order creation from a predefined menu, for dine-in or take-away
  • Daily token numbers starting at 001, with a configurable business day (default 04:00 IST)
  • Live kitchen board: NEW, IN PROCESS, COMPLETED
  • Owner dashboard with today's orders, new/completed counts, and the latest token
  • Order history and records with status filters
  • Menu item management (name, price, availability)
  • Mobile-first, accessible UI tested at 360-412px widths

Technical Architecture

React + Tailwind frontend served by an Express 5 API on MongoDB (replica set, for transactions). Socket.IO pushes invalidation events so clients re-read authoritative data, with a 15-second fallback sync. Deployable with Docker Compose.

System Flow

  1. Owner signs in with a PIN and builds an order from the menu
  2. Server allocates the next token in a MongoDB transaction and snapshots prices
  3. Socket.IO notifies the kitchen board instantly
  4. Chef moves the order to In Process, then Completed (atomic compare-and-set)
  5. Owner dashboard and history update live

Challenges & Solutions

Duplicate orders when the network drops mid-submit

Every order carries an idempotency key; retries return the original token instead of creating a second order.

Two people updating the same order at once

Status changes use atomic compare-and-set, so conflicting or invalid transitions are rejected with 409.

Keeping a shared kitchen device secure

bcrypt-hashed PINs, HttpOnly SameSite=Strict JWT cookies, strict Origin checks, login rate limiting, and Helmet headers.

Key Learnings

  • MongoDB transactions and unique indexes for safe counters
  • Idempotent API design
  • Real-time sync with Socket.IO
  • Cookie-based JWT security
  • Testing with an in-memory MongoDB replica set

Related Projects

Live
Productivity ToolsAppClient Work

QR Pocket – Smart QR Code Manager

A QR code management application that helps users securely store, organize, search, and instantly reuse QR codes for payments, Wi-Fi, contacts, businesses, and other frequently accessed information.

ReactJavaScriptLocal StorageQR Code Technology
View Details
Live
Productivity ToolsWeb ApplicationSkillGlider

SkillGlider Roadmap – Technology Learning Platform

A structured technology learning and career guidance platform that provides students and aspiring developers with clear learning paths, curated resources, and direction for building industry-relevant skills.

ReactJavaScriptEducation TechnologyUI/UX
View Details
Live
Productivity ToolsWeb Application

NavaCrop

A multilingual agriculture platform providing farming guidance, crop recommendations, and agricultural information for farmers through a clean web interface.

ReactJavaScript
View Details