94
96
100
100
WEB VITALS · LCP 2.6 s · CLS 0 · TBT 0 ms · BUDGET · JS 348 / 105 KB · 3rd-party 3 req · 60 KB
Multi-tenant support-ops console — tickets, orders, incidents, SLA/escalation, automation, org-scoped RBAC, and a customer portal, on Next.js and Supabase.

Multi-tenant workflow-automation app, built solo — webhook triggers, a queued execution engine with a standalone worker, WebAuthn passkeys, and per-org audit logging.


Bilingual (EN/AR, full RTL) catalog browsing and filtering UI for a Saudi commercial-vehicle dealer, mid-migration off GraphQL onto a custom indexed REST API.

Bilingual (EN/AR) CMS-driven marketing site for a private Saudi college, migrated from Next.js 14 to 15 while live.

Bilingual (EN/AR) marketing site rebuild for a K-12 school, now live.

Bilingual (EN/AR) marketing and booking site for a real Jeddah coworking operator, over a headless Statamic CMS.

Bilingual (AR/EN) fraud-awareness campaign and banking news hub for Saudi Arabia's official Banking Media and Awareness Committee.
Started shipping production code at 17 while studying CS. I work on B2B SaaS frontends for Saudi enterprise clients at Brackets Technology, and I care about the unglamorous things: performance budgets, keyboard navigation, and component architecture the next engineer can read.
Config-prop components rot as requirements grow. Compound components stay clean — if you avoid three specific mistakes. This is the pattern I use in production, with the reasoning.
I read every serious message and reply within 24h.