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 092024Theme Engineer

Baloma

Custom Zid theme for a Saudi e-commerce brand. RTL by default, faster product pages, cleaner checkout, every block configurable from the merchant dashboard.

RoleTheme Engineer
Year2024
StackZid Platform, Liquid, Tailwind
Livebaloma.sa↗
Overview

About the project.

Baloma is a Saudi e-commerce brand running on the Zid platform, and the existing themes were neither fast enough nor flexible enough for what they wanted to sell. I built a custom theme from scratch in Liquid and Tailwind: RTL by default, faster product pages, a cleaner checkout, and every block configurable from the merchant dashboard so the team can re-arrange a landing page during a campaign without asking me.

Outcome

What changed.

+27%

increase in checkout conversion

6 weeks

from kickoff to launch

Challenge

What we walked into.

A Saudi e-commerce brand on Zid wanted a theme that was fast, RTL by default, and configurable from the merchant dashboard so the team could re-arrange a landing page during a campaign without engineering help.

Approach

What we did.

Custom Zid theme from scratch in Liquid + Tailwind. RTL-first layout, cleaner checkout, every block exposed as a Zid Section so merchants can re-order in the dashboard.

Outcome

What it became.

Faster product pages, cleaner checkout, merchant-editable landing blocks.

IndustrySaudi e-commerce · Zid platform
TypeCustom storefront theme
Timeline6 weeks
TeamSolo · theme engineer + designer
Ownership

My role on this project.

Solo · 100% — design + Liquid templating + Tailwind config + Zid Section model. Brand supplied identity + product photography; everything technical is mine.

  • 01

    Theme engineer (Zid)

    Liquid templates for product, collection, cart, checkout. Zid Sections schema so merchants edit landing blocks live.

  • 02

    Designer (RTL-first)

    RTL-first layout pass on every page. Arabic typography (Tajawal) primary, English secondary.

  • 03

    Performance engineer

    Hand-tuned for mobile-first; lazy-loaded media; checkout under 3 round-trips.

In production

The numbers that matter.

  • RTL-firstDesign languageLayout designed in Arabic; English is the mirror — not the other way around.
  • LiveMerchant landing editsZid Sections let the brand re-order blocks during a campaign without redeploying.
  • <2.5sMobile product pageSaudi 4G; one of the faster Zid themes in the catalog.
  • 0Custom JS frameworkVanilla JS + Tailwind only. Theme weight under 80KB JS.
Why this was hard

What was actually broken.

Zid's default themes were either slow or rigid. A growing Saudi e-commerce brand needs to launch campaigns weekly — landing page tweaks, hero swaps, urgency banners — without filing a ticket. The brief: build a theme where the brand owns the landing surface entirely from the Zid dashboard, but the developer-controlled foundations (cart, checkout, product detail) stay performant.

Engineering challenges

The hard surface area.

  • 01Zid Section schema for every reusable block (hero, product strip, testimonial, banner, video).
  • 02RTL-first layout that does not feel like an LTR theme mirrored.
  • 03Performance on KSA mobile networks (Zid's default themes can be 200KB+ JS).
  • 04Checkout flow under Zid's constraints (some fields are platform-mandated and immovable).
Hard problems solved

Engineering wins worth naming.

01

Zid Sections schema design

Every brand-editable block is a Zid Section with typed settings (text, image, color, link, repeater). Merchant gets a structured editor; theme code reads a single Liquid object per block.

02

Arabic typography defaults

Tajawal as primary face, line-height tuned for Arabic (1.85 body), tabular nums for prices, proper handling of right-to-left price brackets (SAR 99 vs. 99 ر.س).

System architecture

How the system is wired.

01 — Platform

Zid hosted platform

Zid CDNPlatform-managedKSA + UAE edges
Zid checkoutPlatform-mandatedPCI scope held by Zid
02 — Theme

Custom theme tier

Liquid templatesCustom themeProduct, collection, cart, page, blog
Tailwind configTokenised design systemRTL-first variants, Arabic typography defaults
Zid SectionsMerchant-editable blocksHero, strip, testimonial, banner, video
Why this stack

The decisions behind each choice.

Zid (platform)

  • KSA-native e-commerce platform with Mada + STC Pay integrations out of the box.
  • PCI scope held by Zid — merchant + theme never touch card data.
  • Section schema gives merchant editability without theme redeploys.

Vanilla JS over framework

  • Theme weight matters more than developer convenience for a storefront.
  • Zid Sections + Liquid handle most interactivity; the small remainder is 20 lines of vanilla JS.
Lessons learned

What the build taught us.

  • Section schemas are the cheat code for merchant-editable themes. Design the editing surface as you design the visual surface.
  • RTL-first is a design decision, not a CSS toggle. Layout in Arabic, then ensure English mirrors cleanly.
Visuals

From the project.

Continue reading
Previous caseAsl EvaluationNext caseCaravan Cargo
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→