Project · RESTAURANT POS SYSTEM Status · LIVE Type · FULL SYSTEM Domain · pos.ibreezglobal.com

Restaurant POS System

A full-stack point-of-sale and kitchen management system — built from a broken installation into a working system used by staff every day in real restaurant operations.

Problem

The existing setup relied on manual coordination between waiters and kitchen staff.

Orders were communicated verbally or through disconnected tools, leading to:

  • missed or delayed orders during peak hours
  • no real-time visibility of order status
  • inconsistent handling of tables and order flow

There was no unified system connecting waiter input to kitchen execution.

What I Built

Built a complete restaurant POS system covering the full operational flow:

  • waiter order input
  • real-time kitchen display
  • table and order management
  • coordinated interaction across roles

The system connects all stages of restaurant operations into a unified workflow.

My Role

System Developer
  • designed and implemented full POS workflow
  • built waiter ordering interface
  • implemented kitchen display logic
  • structured order routing between components
  • handled server setup, deployment, and production configuration

→ Rebuilt order flow logic

Diagnosed and fixed SellPosController — orders were not being stored correctly, status fields were wrong, and service-type mapping was broken.

→ Implemented kitchen display system

KitchenController had the wrong status filters and a sub_type query that always returned zero rows. Fixed the query so orders appear and persist on screen.

→ Fixed auto-refresh wipe bug

Kitchen screen refreshed every 10s via AJAX — but the response was returning empty HTML and overwriting active order cards. Traced and fixed across three controller methods.

→ Structured order routing

Built category tab system that correctly sets service type per session. Orders now route to the right queue based on cafe vs. restaurant mode.

→ Deployed and secured server environment

Configured the production Linux server via SSH — file permissions, environment variables, database access, and the cPanel/Docker setup.

→ Ongoing maintenance and iteration

Continued to extend the system — table display, payment flow UX, header branding, product loading, and kitchen screen stability — responding to real operational feedback.

System Flow

How an order moves through the system:

From waiter input to kitchen execution — each step is handled by a distinct component.

WAITER
01
Creates Order
Selects table, picks items by category, submits form
SYSTEM
02
Stores + Routes
SellPosController saves transaction, sets status: ordered
KITCHEN
03
Order Appears
KitchenController query picks it up, card renders on display
KITCHEN
04
Marks Done
Staff updates status: final. Card leaves active queue.
WAITER
05
Delivers
Item served. Cashier closes transaction on payment.
Status transitions:  ordered → kitchen receives → final → delivery → closed

[ SYSTEM WALKTHROUGH ]

Interactive POS — Waiter → Preview → Kitchen / Café → Complete

[ STEP 1 OF 2 ]

How is the customer ordering?

Interfaces

WAITER INTERFACE

Ibreezglobal Dining ● TABLE 4
All Drinks Food
Americano
Latte
OJ
Water
Burger
Pasta
3 items [SEND]

Category tabs, table selector, order cart. Works on mobile and tablet.

→ View live

KITCHEN DISPLAY

Kitchen Screen ↻ 10s
T2 2m ago
· Latte x1 · Burger x2
[ORDERED]
T5 7m ago
· OJ x2 · Pasta x1
[ORDERED]

Live order queue, auto-refreshes every 10s.

→ View live

ADMIN DASHBOARD

Dashboard Today
Orders
48
Revenue
OMR 312
Tables
8/12
Staff
6
Recent
T4 · 3 items · final
T1 · 2 items · ordered
T7 · 5 items · final

Transaction overview, table occupancy, daily revenue, and order history.

Technical Breakdown

Stack

Laravel
backend logic — controllers, Eloquent ORM, middleware
MySQL
data storage — transactions, products, tables, users
Docker
containerised deployment on Linux hosting

System

  • role-based interfaces (waiter, kitchen, admin)
  • real-time order handling
  • structured order lifecycle

Deployment

  • Linux server
  • production environment
  • secure configuration and service setup

Architecture

COMPONENTS:
  Order Service
  Kitchen Display
  Table Manager

FLOW:
  Waiter → Order → Queue → Kitchen → Status → Serve

ENV:
  Production deployment (live system)

Key bugs fixed

BUG: Kitchen screen always returned empty

FIX: status filter was set to 'final' only — orders sit in 'ordered' state, so nothing ever showed. Fixed: whereIn(['ordered','final'])

BUG: Orders disappeared 10s after appearing

FIX: AJAX refresh called getOrdersByStatus() with sub_type='cafe'. That column is NULL on all rows — response was empty HTML, wiping the DOM on every tick.

BUG: sub_type column always NULL

FIX: Column existed but was never populated on insert. Removed from all WHERE clauses. Service type now handled as a session parameter only.

Result

  • deployed and running in a live restaurant environment
  • used for daily order handling and kitchen coordination
  • replaced manual communication between staff
  • improved order tracking and operational visibility
Status
LIVE IN PRODUCTION
Used in daily restaurant operations
Scope
END-TO-END SYSTEM
Ordering → kitchen → payment
Users
REAL STAFF
Waiters, kitchen, cashier — all roles active

Context

built for real operational use, not a prototype
required coordination between multiple roles (waiter, kitchen, admin)
designed to run reliably in a production environment