WhatsAppCall MeLinkedInGitHub
✨ Completed
⭐ Featured

Farahat Restaurant Platform - Ordering, Delivery and Admin System

Multi-channel ordering platform for a charcoal grill restaurant: NestJS API, Expo mobile app, server-rendered Arabic/English ordering website and an admin dashboard with a kitchen display.

Farahat Restaurant Platform - Ordering, Delivery and Admin System

Client

Farahat Restaurant & Charcoal Grills

Date

August 2026

Duration

4 days

Technologies

17 tools

Technologies Used

NestJS

Next.js

React

React Native

Expo

TypeScript

Prisma

PostgreSQL

Redis

Socket.io

Tailwind CSS

Vite

TanStack Query

Zustand

Docker

Caddy

Paymob

Project Overview

Farahat is a full ordering and delivery system built for Farahat Restaurant and Charcoal Grills in Egypt. It is a monorepo with four parts: a NestJS API on PostgreSQL and Redis, an Expo React Native app for customers and drivers, a Next.js ordering website, and a React admin dashboard that includes a kitchen display screen. Customers order for delivery or branch pickup in Arabic or English, pay by cash or card through Paymob, and follow the order until it arrives. Staff manage menu, branches, coupons, finance and support from the dashboard. Everything ships as one Docker Compose stack behind a Caddy reverse proxy that handles TLS.

Challenge

A restaurant order touches money, kitchen timing, couriers and customer support at once, so small bugs turn into real losses. Prices had to stay exact, an order could not jump to an invalid status, and a lost response on a mobile network could not create a duplicate order or a double charge. The mobile app and the website both needed Arabic right-to-left and English left-to-right. The site also had to be indexable for search without exposing the client attestation key to crawlers, and staff needed live order visibility without a heavy realtime setup. Prices differ per branch and items can sell out per branch.

Solution

The API is a NestJS modular monolith with 24 feature modules. Money is stored as integer minor units and each order line keeps a price snapshot. An enforced state machine controls order status, and checkout uses an idempotency key. Order events go through a transactional outbox so notifications survive a crash. The website is a backend-for-frontend: the browser never calls the API, so the app key and tokens stay on the server and the menu is server-rendered. Sessions live in httpOnly cookies, and guest carts merge into the real cart at sign-in. Auth uses Argon2id, rotating refresh tokens and permission and branch-scope guards. Paymob webhooks are verified with an HMAC signature. The dashboard polls for updates every few seconds. Nightly backups are AES-256-GCM encrypted.

Results & Impact

The repository delivers four working applications and a deployable production stack: API, mobile app, ordering website and dashboard with kitchen display, all brought up with one docker compose command and automatic HTTPS. The API entrypoint runs migrations before accepting traffic, and the ready probe checks the database. The README lists what the code does not do, such as unused queue workers and a realtime layer no client subscribes to, so the documentation matches the code. Unit tests cover money, geo, the order state machine and route authorization. No traffic or sales figures are claimed here because the repository does not state any.

Key Features

Arabic RTL and English LTR across web and mobile
Server-rendered menu with per-branch pricing
Sold-out state per branch
Product modifiers and coupons
Delivery and branch pickup flows
Address book with live delivery quote
Cash and Paymob card checkout
Idempotent checkout against duplicate orders
Order tracking with courier ETA
Enforced order status state machine
Kitchen display screen for staff
Admin dashboard with orders, catalog, branches, coupons, finance, staff and audit log pages
Driver dashboard in the mobile app
Support chat and notifications inbox
Loyalty favourites and reviews
Audit log with permission-gated access
Nightly encrypted database backups
Docker Compose stack with automatic TLS

Project Gallery

Farahat Restaurant Platform - Ordering, Delivery and Admin System - Image 1
Farahat Restaurant Platform - Ordering, Delivery and Admin System - Image 2
Farahat Restaurant Platform - Ordering, Delivery and Admin System - Image 3
Farahat Restaurant Platform - Ordering, Delivery and Admin System - Image 4
Farahat Restaurant Platform - Ordering, Delivery and Admin System - Image 5
Farahat Restaurant Platform - Ordering, Delivery and Admin System - Image 6