Skip to content
Omar Aldanaf

Case study

Business SystemsDashboardSaaS

CaterPro

Multi-tenant catering management platform for the UAE and GCC: orders and delivery, events, inventory, purchasing, invoicing and reporting, in English and Arabic.

Industry
Catering
Status
In final QA
Operations dashboard (sample data).
automated tests
525
permissions
83
business reports
17

Overview

CaterPro is a white-label catering management system built for catering companies across the UAE and the wider GCC. One installation serves many independent companies, each with its own isolated database, and models a catering group as brands with several branches. It runs the whole operation: menus and prices per branch, customer orders from the kitchen to signed delivery, events, stock and purchasing, invoicing and payments, and 17 business reports.

The problem

Catering groups run orders, events, kitchens, deliveries, stock and billing across several branches. They needed one bilingual system that covers the full cycle, respects each person's role and branch, and produces VAT-ready documents.

What I built

  • Domain-based multi-tenancy with one MySQL database per company
  • A brand and branch hierarchy that scopes every record a user can see
  • Livewire-driven boards, builders and dashboards on a Laravel service layer
  • A role hierarchy with 83 permissions, per-user privileges and custom roles

Key features

  • 01Order builder with branch menus and price overrides, and a status flow from pending to delivered
  • 02Kanban order board, kitchen display, driver assignment, customer signatures and proof-of-delivery photos
  • 03Events with a menu builder, budget tracking, staff assignment, a proposal PDF and invoicing
  • 04Inventory per branch with cost snapshots, waste tracking, purchase orders with partial receipts, and transfers between branches
  • 05Invoices numbered per branch, partial payments, receipt vouchers and bilingual PDFs with VAT
  • 06Supplier-invoice analyser that reads a PDF, matches its lines to stock items and books them after human review
  • 07Dashboard with role desks for drivers, kitchen staff, accountants and inventory clerks
  • 0817 reports, including invoice ageing, VAT summary, branch comparison, busy hours, allergen matrix and margins
  • 09Import and export centre, archive with restore, audit log, scheduled report emails and signed outbound webhooks
  • 10English and Arabic with a full right-to-left layout, dark mode and per-company currency

Architecture

  1. Browser
  2. Tenant resolver
  3. Livewire + controllers
  4. Service layer
  5. Tenant database
Architecture: Browser to Tenant resolver to Livewire + controllers to Service layer to Tenant database

Screens

Order status, sales by category and branch ranking.
Reports hub.
Public landing page.
Dark mode on a phone.
Arabic, right to left.

Decisions & challenges

One database per company

Each company has its own database, resolved from the request domain, and isolation was verified by querying a second tenant directly.

Scope follows data, not role names

A user's brand and branch decide what they can see, applied once across every model, so a new role never needs new visibility code.

Financial documents are never edited

Order, invoice and purchase-order lines are fixed and receipts are immutable; corrections are made by cancelling and re-issuing, which keeps the financial trail intact.

Performance & security

Performance

  • Reports and dashboards built on SQL aggregates and tested with 50,000 orders across 20 branches
  • Cached tenant dashboard served in about 17 ms in local measurements
  • Any N+1 query fails the test suite

Security

  • Deny-by-default test sweep that calls every route as an unauthorised user and as users from another brand or branch
  • Optional TOTP two-factor authentication, company password policies, sign-in lockout and a security log
  • Encrypted customer tax numbers, signed webhooks and formula-safe CSV exports
  • Daily backups of every company database, verified by an automated restore test

Inventory

Profile

Developer toolkit

  • GitHub

Systems toolkit

System

omar@world01

Client-side command palette. Type help to list commands.

WORLD_01 map

  1. SPAWN // OMAR Spawn Point / About
  2. CRAFTING // STACK Crafting Workshop / Skills
  3. MINE // PROJECTS Project Mine / Projects
  4. LAB // ARCHITECTURE Logic Lab / Architecture
  5. OPS // INFRASTRUCTURE Server Room / Infrastructure
  6. HALL // EXPERIENCE Achievement Hall / Experience
  7. PORTAL // CONTACT Portal / Contact