Full-Stack Web Developer — Cairo, Egypt
Seven years building production websites and the systems behind them. Laravel,
CakePHP and plain-PHP back-ends; React, Next.js and Vue on the front; and
bilingual Arabic/English interfaces where right-to-left is a first-class
requirement rather than a dir="rtl" afterthought.
Much of my work is Arabic-language news, media and fact-checking platforms — more than twenty-five of them, newsrooms that need to publish fast, in Arabic, at scale. The rest is education, humanitarian and corporate work across Egypt, the Gulf, the UK and Australia.
🏢 TakTek · 🌍 English / العربية · 🏠 Remote, UTC+2 · ⭐ 5.0 on Mostaql
LinkedIn · Upwork · Mostaql · Portfolio
احسبلي — Ahsebli
Over 100 Arabic financial calculators for Saudi Arabia, the Gulf and Egypt: salaries and end-of-service, Islamic loans and murabaha, zakat, gold at today's price, income and VAT, currency — plus health and everyday tools.
Search is the whole distribution channel, so the plumbing is part of the product: generated sitemap, RSS and Open Graph images, a glossary, category hubs, and seasonal landing pages that go up when the search volume does. It is an installable PWA with a service worker, so a calculator someone saved keeps working offline.
The platform behind six of the sites listed further down, Quds News Network and Maktoob Media among them: one Laravel application, one deploy, twenty-four Arabic news sites, each with its own theme, its own modules, its own languages and its own editorial team.
| Scale | 456 Livewire components · 839 Blade views · 66 models · 247 migrations |
| Tenancy | 113 feature flags — nothing reaches a site that did not ask for it |
| Access | 40 permission modules × 4 actions, mirrored and re-synced by command |
| Languages | 5,874 keys in Arabic, English and Turkish, right-to-left throughout |
| Guards | 50 artisan commands, six of which exist to fail on a mistake nobody can see |
| Demo | demo.taktek.co |
Every dangerous mistake a fleet makes is silent: a feature leaking to twenty-three other clients, a permission that exists on the route and nowhere else, a missing English string that renders in Arabic because the fallback locale is Arabic. So each of those has a command that fails, rather than a convention that holds. How it is put together.
Matn — a CMS for hand-built newsroom sites · code private
After seven years of building newsrooms one at a time, the recurring problem was always the same: the client needs to edit their site, and every page builder destroys the design doing it.
Matn is the answer. The client opens their real page inside the admin panel,
clicks a heading to rewrite it and clicks a photo to swap it. There is no page
builder and no drag-and-drop — the design stays locked. Pages live in the
database rather than as files, every page shares one layout, and no URL carries
a .html extension.
| Stack | CakePHP 5.1 · PHP 8.1+ · MySQL 8 |
| Panel | English and Arabic, right-to-left throughout |
| Quality | PHPCS, PHPStan and 1,500 PHPUnit tests, all gated in CI |
| Analytics | First-party, no third-party trackers — session maths on SQL window functions |
A screenshot of a score proves nothing — it is a picture of one good run. The table below is re-measured every Monday by a GitHub Action that calls Google's PageSpeed Insights API and rewrites this section, whichever way the numbers moved that week. Paste the same URL into pagespeed.web.dev and you get the same report.
Each number is the median of three runs per device, because one run is not a measurement — the same page answered 90, 79 and 80 on mobile within minutes.
The bar is 90 in every category on both devices. Where a site is under it the number stays on the page until the site is fixed, because a table that only shows the good weeks is the screenshot problem again. The rest of the fleet is measured on the same schedule.
مسند — musnadye.com
Arabic news and claim verification · Design and full-stack
| Performance | Accessibility | Best practices | SEO | LCP | CLS | TBT | |
|---|---|---|---|---|---|---|---|
| Mobile | 97 | 100 | 100 | 100 | 2.1 s | 0.008 | 120 ms |
| Desktop | 99 | 100 | 100 | 100 | 0.7 s | 0.013 | 30 ms |
قدس الإخبارية — qudsn.co
Palestinian news network — high-volume Arabic newsroom · Design and full-stack
| Performance | Accessibility | Best practices | SEO | LCP | CLS | TBT | |
|---|---|---|---|---|---|---|---|
| Mobile | 84 | 97 | 96 | 100 | 2.9 s | 0 | 310 ms |
| Desktop | 98 | 97 | 96 | 100 | 0.8 s | 0 | 70 ms |
Field data (real Chrome users, 28-day rolling): FAST — LCP 1.78 s · INP 99 ms · CLS 0.00.
Portfolio — imsemoo.github.io
This profile's own site, hand-written HTML and CSS · Design and front-end, my own
| Performance | Accessibility | Best practices | SEO | LCP | CLS | TBT | |
|---|---|---|---|---|---|---|---|
| Mobile | 93 | 100 | 100 | 100 | 2.7 s | 0 | 180 ms |
| Desktop | 100 | 100 | 100 | 100 | 0.6 s | 0.002 | 0 ms |
Measured 12 October 2026 · Lighthouse 13.5.0 · raw results · workflow
Four pieces of work where the interesting part was the diagnosis, written up with the numbers and the rejected ideas rather than only the wins.
| Twenty-four newsrooms out of one codebase | The four invariants a multi-tenant CMS runs on, and the six commands that fail when something invisible goes wrong — a leaked feature flag, an unsynced permission, a string that was never a key |
| A template directive ate one key out of every site's structured data | A literal @context in a Blade template compiles as Laravel's own directive, so 45 files shipped JSON-LD that parsed perfectly and meant nothing. Invisible in the browser, invisible in a diff — found by compiling the views instead of reading them |
| What a performance audit of a live newsroom actually finds | 749 KB of fonts down to 78 KB, a preload that was hurting, an optimisation I measured and threw away, and the Cloudflare rule that explains the TTFB nobody could move |
| Twenty-one newsrooms, twenty-one broken share cards | Why a favicon, a WebP or a 400 KB image turns a shared link into a bare blue line on WhatsApp — and the one route, one service, one command that ended it |
Live sites, grouped by what they are. Role stated exactly as it was.
| Site | What it is | My role |
|---|---|---|
| Quds News Network | Palestinian news network — high-volume Arabic newsroom | Design and full-stack · Devlo CMS |
| Musnad — مسند | Arabic news and claim verification | Design and full-stack · Laravel, Livewire |
| Al-Jarmaq — الجرمق | Palestinian media network inside the 1948 territories | Design and full-stack · Laravel, Livewire |
| Tayaqan — تيقن | Community platform for verifying news and claims | Design and full-stack · Devlo CMS |
| Maktoob Media | Independent outlet covering human rights and minorities | Front-end (Figma → build), then the performance and security pass · Devlo CMS |
| Hodhod — الهدهد | Palestinian news network | Full-stack (Figma → build) · Devlo CMS |
| Adeni Cast — عدني كاست | Independent Arabic podcast platform | Design and full-stack · Devlo CMS |
| Saleh Al-Arouri Archive | Independent documentary archive | Design and front-end · Devlo CMS |
| Qasioun Center for Studies | Bilingual strategic-studies centre — papers, library, media | Design and full-stack · Laravel, Livewire |
| Site | What it is | My role |
|---|---|---|
| Mo3ta — معطي | Data platform with dashboards, maps and charts | Design and full-stack · Laravel, Inertia, Vue 3 |
| FreightZone | Australian freight booking app | Designed it in Figma, then built the front-end |
| Calimero | Multilingual restaurant and shop | Front-end, in a team · Next.js, TypeScript |
| Site | What it is | My role |
|---|---|---|
| OzCar | Australian car marketplace, a top-10 site in its market | Front-end (XD → build) |
| BESA | Study-abroad platform, 30+ hand-built pages | Front-end (Figma → build) |
| Yedi Başak | UK humanitarian aid and charity | Full-stack, Laravel |
| HandsOnTV | UK media organisation | Front-end (XD → build) |
| Hardware & Glass | US architectural glass-hardware supplier | Front-end, hand-built |
| BHF Couriers | Australian courier company | Front-end |
| Skills Beyond | Driving school on Sydney's North Shore | WordPress |
| Hive Studio | Creative studio, bilingual | WordPress |
| Infinity Blue Barramundi | Australian barramundi farm | WordPress |
| IDD 2023 | Desalination conference, bilingual | WordPress |
| Power Line Egypt | Engineering and contracting company | WordPress |
Back-end
PHP 8 · Laravel · Livewire · CakePHP 5 · MySQL · WordPress · REST APIs · Composer · PHPUnit · PHPStan
Front-end
JavaScript (ES6+) · TypeScript · React · Next.js · Vue 3 · SCSS · Tailwind · Bootstrap · jQuery · GSAP · AOS
Craft Arabic/English bilingual UI · RTL layout with logical properties · responsive from 375 px up · semantic HTML · accessible forms · Figma and XD to pixel-accurate markup · on-page SEO · PWAs that work offline
Tools
Git · GitHub Actions · Figma · Adobe XD · Laragon · VS Code
Most client back-ends stay private. This is what I can show:
| Repo | What it is | Live |
|---|---|---|
yassiru |
يسّروا — a Laravel + Vue platform for making marriage attainable: candidate matching, premarital courses and counselling, guarantee-fund savings circles, group weddings and digital contracts. Dockerised, Sanctum, Spatie roles | — |
kevla-campa |
KEVLA CAMPA — marketing site for a Kevlar and carbon-fibre teardrop caravan. Plain HTML, CSS and ES modules with no build step: scroll scenes on CSS view timelines with a JavaScript fallback, page-to-page view transitions, self-hosted variable fonts. No axe-core violations across 24 page states | ↗ |
creatives-dashboard |
Multi-page dashboard UI for a creative agency — pricing, signup and a guided tour | — |
mohajer |
News platform for migrants and refugees in Egypt and the Middle East | ↗ |
yottasrc |
Web-hosting provider site and client dashboard — bilingual EN/AR, multi-currency | — |
besa |
The BESA front-end, 30+ hand-built pages | ↗ |
Buruj |
Corporate site with a multi-step application form | ↗ |
Intimedev |
Agency site, scroll-driven animation | ↗ |
Open to remote full-stack and front-end work, contract or full-time — LinkedIn · Upwork · Mostaql


