Skip to content
ALI HAITHAM·TECH·responds in <1h
  • Homestart here
  • Workcase studies, projects
  • Serviceswhat I will build for you
  • Writingessays, series
  • Traincourses, labs, cohorts
  • Aboutthe engineer behind this site
Sign inStart a project
ALI HAITHAM · TECH
  • Home↗
  • Work↗
  • Services↗
  • Writing↗
  • Train↗
  • About↗
Sign inStart a project
Online
ALI HAITHAM·TECH

Engineering studio. Damascus, GMT+3.

aliyosef.online

Studio

  • Work
  • Writing
  • Training
  • About
  • Contact me

Portal

  • Sign in
  • Open a ticket
  • Track project
  • My account

Resources

  • Docs
  • Status
  • Changelog
  • Brand kit
  • Privacy
  • Terms

Newsletter

Field notes and tech news. Weekly. No fluff.

Free. Unsubscribe anytime.

Find me elsewhere
© 2026 Ali Haitham Yosef. All rights reserved.Hand-built in React 19. No frameworks of frameworks.Last deployed · 2026-05-08All systems operational
Case 072021WordPress Developer

Suhail Restaurant

Restaurant ordering site for the Suhail brand under Mira Group. WooCommerce checkout, Stripe payment, custom Elementor blocks for menu and reservations, mobile-first.

RoleWordPress Developer
Year2021
StackWordPress, WooCommerce, Elementor, Stripe
Livesuhailrestaurant.com↗
Overview

About the project.

Suhail is a restaurant brand under Mira Group, and the site is where their guests browse the menu, book a table, and place pickup orders. I built it on WordPress with WooCommerce for the order flow and Stripe for payment, then wrote custom Elementor blocks so the menu and reservations sections stay on-brand without third-party plugins. The whole site was designed mobile-first because most diners reach it from their phone the moment they decide where to eat.

Outcome

What changed.

+41%

increase in average order value

<3s

Largest Contentful Paint

Challenge

What we walked into.

A restaurant under Mira Group needed an ordering site that worked on the phones diners actually use — fast, on-brand, and integrated with Stripe for pickup orders. The constraint was WordPress + WooCommerce (chosen before I joined).

Approach

What we did.

WordPress base, WooCommerce for the order flow, Stripe for payment, custom Elementor blocks for menu + reservations so the brand survived without third-party plugin sprawl.

Outcome

What it became.

Mobile-first ordering live, brand-consistent menu blocks, Stripe checkout with pickup-only fulfilment.

IndustryRestaurant · F&B
TypeOrdering site + reservations
Timeline6 weeks
TeamSolo · WordPress engineer
Ownership

My role on this project.

Solo · WordPress + WooCommerce build. Stack constraint was set by the client before I joined. My ownership: custom Elementor blocks (PHP + CSS), WooCommerce config, Stripe integration, mobile-first design pass.

  • 01

    WordPress engineer

    Custom theme child of Astra. Hand-coded Elementor widgets for menu + reservation blocks. No premium plugins for core features.

  • 02

    WooCommerce integrator

    Pickup-only fulfilment (no shipping), Stripe payment gateway, custom email templates.

  • 03

    Designer (mobile-first)

    Mobile-first design pass — most diners reach the site from a phone the moment they decide where to eat.

In production

The numbers that matter.

  • <2s4G load · homeWordPress with image optimisation + caching; honest about being a CMS.
  • Mobile-firstDesign target70%+ of restaurant traffic is mobile; layout primes for the small viewport.
  • StripePayment integrationPCI burden stays with Stripe; site never touches card details.
  • 0Premium pluginsNo paid Elementor Pro / WooCommerce extensions — built custom blocks instead.
Why this was hard

What was actually broken.

Most restaurant sites are template sprawl: 20 plugins, slow on mobile, broken under their own weight within 6 months. Mira Group wanted a site that survived the next theme update + WooCommerce version bump without falling over. The constraint (WordPress) was set by their existing IT setup — the brief was to make it work well within that constraint.

Engineering challenges

The hard surface area.

  • 01Custom Elementor widgets that survive Elementor major version bumps.
  • 02Mobile-first menu layout that respects long Arabic dish names without breaking layout.
  • 03Stripe integration with pickup-only fulfilment (no shipping address required).
Hard problems solved

Engineering wins worth naming.

01

Elementor widget API forward compatibility

Built widgets against the documented `Widget_Base` class only — no internal API access. Survived two Elementor major version bumps without rework.

02

Arabic dish names breaking grid

CSS Grid with `auto-fit` and `minmax` + `text-wrap: balance` for menu cards. Long names wrap cleanly without forcing the grid to a different column count.

System architecture

How the system is wired.

01 — Hosting

Hosting + CDN

CloudflareCDN · DNSPage cache + image optimisation
Managed WP hostPHP 8.2 · MySQL 8Daily backups, staging environment
02 — App

Application tier

WordPressCustom Astra child themeCustom Elementor widgets
WooCommercePickup-only fulfilmentStripe payment gateway
03 — Data

Data tier

MySQL 8WordPress schemaOrders, products, customers
Why this stack

The decisions behind each choice.

WordPress (constraint)

  • Client's existing IT runs WordPress. Migrating would add cost without changing the outcome for diners.
  • WooCommerce is mature enough to handle pickup-only food ordering without custom payment plumbing.

Custom widgets over premium plugins

  • Premium plugins lock you to a vendor's release cadence. Custom widgets ship when the client needs them.
  • No recurring licence fees on the site itself.
Lessons learned

What the build taught us.

  • Constraints chosen by the client are usually for non-technical reasons — respect them. The right answer is to make the chosen stack work well, not to argue for a different stack.
  • Custom widgets against documented APIs survive version bumps; widgets against internal APIs do not.
Visuals

From the project.

Continue reading
Previous caseRitz-Carlton RiyadhNext caseYang's Kitchen
Build with us

Want something like this?

I take on a small number of engagements each quarter. Tell me what you have in mind.

Start the conversation→