SYS:ONLINE
[ 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 // what was broken

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 // system scope

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.

YOUR ROLE [ 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 // order lifecycle

This is 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 // system screens
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. Previously returned empty — fixed by correcting status filter and removing a broken sub_type query.

[→] 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 + architecture

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:
WaiterOrderQueueKitchenStatus UpdateServe

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 // impact in operations
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 // project conditions
built for real operational use, not a prototype
required coordination between multiple roles (waiter, kitchen, admin)
designed to run reliably in a production environment