SaaS Platform Design + Engineering20233–4 months

MenuOnline

Restaurant management SaaS with 13 operational modules — POS, Kitchen Display, reservations, waitlisting, inventory, multi-channel marketing, and analytics — designed and engineered solo as a UX Engineer. 5 user roles, real-time order state machine.

Restaurant TechSaaSPOSKDSUX Engineer

My Role

UX Engineer — Design + Frontend Code

Duration

3–4 months

Year

2023

Tools

Figma · React · TypeScript · MUI v5 · GraphQL · AG Grid

13Modules designed
57Pages designed
5User roles
8.4Portfolio score
MenuOnline — cover

Project Brief

Design and engineer a comprehensive restaurant management SaaS platform — 13 primary modules covering POS, KDS, reservations, inventory, marketing automation, and analytics — for Admin, Manager, Kitchen, Waiter, and Driver roles across dine-in, online orders, and delivery simultaneously.

Restaurant management SaaS with 13 operational modules — POS, Kitchen Display, reservations, waitlisting, inventory, multi-channel marketing, and analytics — designed and engineered solo as a UX Engineer. 5 user roles, real-time order state machine.

Restaurant Tech / F&B Operations
Delivered to Client
57screens designed
Client MarketGlobal
EngagementEmployment
TeamSolo — Design + Engineering (UX Engineer)
Duration3–4 months
Year2023

The Problem

13 restaurant operations. 5 user roles. No unified platform. POS, KDS, reservations, and marketing lived in separate tools — none sharing the same order state.

Multi-service food businesses run on fragmented systems. The POS doesn't talk to the KDS. The KDS doesn't update the Counter Display. Marketing campaigns don't integrate with the customer database. Reservations and waitlisting are separate from table management.

01

Order state not shared across systems

POS accepted an order that KDS had to manually re-enter. Counter Display was updated by kitchen staff calling across the floor.

critical
02

Marketing had no customer data

SMS and email campaigns required manual export from POS into a separate marketing tool — audience targeting was always stale.

high
03

No multi-location architecture

Multi-outlet restaurant brands had no way to manage settings and reporting across locations from a single admin.

medium
04

Role-based access not designed

Kitchen staff, waiters, and drivers were using the same admin interface — seeing more than they needed, less context than they required.

medium

UX Audit

What was broken before we redesigned

A heuristic evaluation of the existing system identified these critical issues before any design decisions were made.

No shared order state machine

Order status wasn't synchronised across POS, KDS, Counter Display, and customer SMS notification — chaos during peak service.

State Management

Role-based access not designed

Kitchen staff and owners used the same admin interface — different needs, same UI.

RBAC Gap

Tax system one-size-fits-all

Multi-named tax configuration (GST, HST, Service Tax, Alcohol Tax, Meat Tax) impossible in existing systems.

Compliance Gap

Our approach: One order state. Five role views. Thirteen modules.

Designed a real-time order state machine (New → In Process → Ready → Completed → Cancelled) synchronised across POS, KDS, Counter Display, and customer SMS. 5 role-appropriate interfaces. Multi-axis tax engine, geospatial delivery, multi-gateway payments, embeddable widget system. Engineered in React + TypeScript + MUI v5.

Process & Approach

How I approached the challenge

01

Platform Architecture

Mapped 13 module interdependencies, 5 role permission scopes, and order state lifecycle before designing a single screen.

02

3-Panel POS Interface

Category sidebar, item grid with modifier groups, live order panel with real-time tax calculation and coupon engine — the most complex single screen in the system.

03

KDS Kanban Design

Real-time Kanban: status columns (New/In Process/Ready), per-ticket countdown timers, chef assignment, item-level check-off. State syncs to POS and Counter Display.

04

13-Module System

POS, Order Management, KDS, Counter Display, Menus, Tools, Reservations, Waiting List, Tables, Customers, Staff & Roles, Store Setup, Inventory, Marketing (Email/SMS/WhatsApp), Analytics, Online Store.

05

React Engineering

Sole frontend engineer. React + TypeScript + MUI v5 + GraphQL + AG Grid. Multi-axis tax engine, SMS template variable injection (${{Customer_Name}}), embeddable iframe widget generators.

Design Principles

One order. Five views. Zero synchronisation delay.

Every module in MenuOnline is designed around a shared order state — not as a standalone feature.

State machine before features

The order lifecycle (New → In Process → Ready → Completed → Cancelled) was designed as an architectural decision. Every module that touches orders is a view of that state.

State Architecture

Role views, not feature flags

Kitchen staff see orders only. Waiters see tables and orders. Managers see everything. Role interfaces designed from the ground up — not filtered from an admin screen.

RBAC Design

Embeddable = extensible

Menu widget and reservation widget iframe generators allow operators to extend MenuOnline to their own websites — a product-within-a-product decision.

Platform Thinking

Tax as configuration

GST, HST, Service Tax, Alcohol Tax, Meat Tax — each named, numbered, and percentage-configurable. Multi-axis tax is the operational reality of multi-region F&B.

Business Compliance

A restaurant POS is not a checkout form. It's an operational command centre for the most time-pressured business environment in retail.

Why This Was Hard

Complexity signals

What set this project apart from standard product design work — the technical, systemic, and domain-specific challenges that demanded real depth.

3-panel POS interface

Category sidebar + item grid with modifier groups + live order panel with real-time tax, coupons, and contextual waiter/table/customer assignment — the most complex single screen in the system.

Real-time order state machine

New → In Process → Ready → Completed → Cancelled — synchronised across POS, KDS, Counter Display, and SMS notifications simultaneously.

Multi-axis tax engine

Named taxes (GST, HST, Service Tax, Alcohol Tax, Meat Tax) with configurable numbers and percentages — item-level tax assignment across all order contexts.

Embeddable widget system

Iframe code generator for Menu and Reservation widgets — operators embed MenuOnline functionality directly in their own restaurant websites.

SMS template variable injection

Dynamic message templates with `{Customer_Name}`, `{Waiting_Time}` variable syntax across Online Order, Cashier, and Reservation notification contexts.

13 modules. 5 user roles. One order state machine. Designed and engineered solo as a UX Engineer.

UI Screens

57 pages

Complete restaurant SaaS platform — 13 modules, 5 roles, designed and engineered solo.

Feature Highlights

Platform capabilities

3-Panel POS Interface

Category sidebar, item grid with modifiers, live order panel with real-time tax and coupons — the core of every restaurant's daily operation.

Core Feature

Kanban Kitchen Display (KDS)

Real-time order board: status columns, per-ticket countdown timers, chef assignment, item-level check-off — synced to POS and Counter Display.

Operations

Multi-Channel Marketing

Email, SMS, WhatsApp campaign templates with {Customer_Name} variable injection — using real customer data from the platform.

Marketing

Embeddable Widgets

Iframe code generators for Menu and Reservation widgets — operators embed MenuOnline in their own restaurant websites.

Platform Extension

Design System

Tokens, typography & components

A shared token-based system built to ensure consistency across every screen and state.

MenuOnline — Design SystemLive tokens
01

Color Tokens

Primary Blue#0378b8
Blue Light#62bdfc
Surface#F9F9FF
Text Dark#222222
Success#28c840
Warning#febc2e
Error#ff5f57
Border#E0E0E0
02

Type Scale

H126px · 700Today's Orders
H220px · 600Order Management
Body14px · 400Table 4 · 3 items · AED 120
Label10px · 700IN PROCESS · KITCHEN
03

Components

ActiveCompletedError

User Flow

Core order pipeline

Login

Role-based

POS Order

3-panel UI

KDS Kitchen

Kanban flow

Payment

Multi-gateway

Order Complete

SMS notification

Tech Stack

Tools & technologies

Design

Figma

Frontend Engineering

ReactReact
TypeScriptTypeScript
MUI v5MUI v5
GraphQLGraphQL

My Contribution

Solo UX Engineering

01

UX Engineer — Design + Code

Sole designer and sole frontend engineer. Platform architecture, 13-module design, 57 screens, and full React + TypeScript + MUI v5 implementation including real-time state management.

FigmaReactTypeScriptMUI v5GraphQL

Impact & Performance

Project at a glance

13

Platform modules

57

Pages designed

5

User roles

8.4/10

Portfolio score

Timeline

3–4 months: design system to production engineering

Month 1

Architecture + POS + KDS

Platform module map, order state machine, 3-panel POS, Kanban KDS. Role-based access architecture defined.

Month 2

13-Module System Design

All 13 modules: Menus, Reservations, Waiting List, Tables, Customers, Staff, Store Setup, Inventory, Marketing, Analytics, Online Store.

Month 3–4

React Engineering

Full React + TypeScript + MUI v5 implementation. Multi-axis tax engine, SMS template variables, payment gateway orchestration, iframe widget generators.

Outcomes

The impact we shipped

Measured results from usability testing, stakeholder reviews, and post-launch adoption tracking.

13

Modules designed

57

Pages designed

5

User roles

8.4

Portfolio score

"Delivered a comprehensive restaurant management SaaS — 13 modules, 5 role-based interfaces, real-time order state synchronisation across POS/KDS/Counter Display/SMS — designed and engineered by a single UX Engineer."

Learnings & Reflection

What I'd do differently

01

Order state before module design

Designing the shared order state machine before any module UI was the right sequencing. Modules built on a defined state are coherent; independently built modules connected afterwards are not.

Interested in working together?

Let's talk about your project or open role.