Remote (UTC+2) · Open to KSA/UAE relocation · 30-day notice

MarwanMaher

Full-Stack Engineer. Vue/Nuxt + Django.

I build Arabic-first, bilingual RTL products. At SIPRC I built an IP-management platform end to end that now runs 52 IP services, and I still write code while running IT delivery there.

DecideShipLearn

  • 5production systems in my portfolio
  • 52IP services live on a platform I built
  • 40%less manual regression, from the QA practice I founded
Marwan Maher, smiling, in a dark green shirt
01Decide

Decide what is worth building.

Before any code: requirements a vendor can be judged against, options scored with evidence, and a clear call on whether to build, buy, or stop.

Deciding is the work.

Three moments where the decision mattered more than the code.

Build vs buy

Four vendors, one decision

For the trademark-monitoring platform I wrote the requirements, ran a four-vendor evaluation against them and made the build-vs-buy call. Then I led the in-house build with the team. It is in production.

Knowing when to stop

A finished build that missed the point

After the business rejected a completed Power BI build, I re-scoped reporting as a custom module inside the platform instead of patching the wrong thing.

AI with accountability

A rollout gate for model output

Model output that drives a legal recommendation is validated against historical outcomes before anyone relies on it. That is a condition of rollout, not a benchmark number.

Example: replacing an ageing build server

Try it: when does the winner flip?

A tiny version of decision-matrix. Move the weights and watch the ranking. A thin margin means your weights are deciding, not your options.

Try pushing Control above 45.

Must-have: data stays in our own region

A must-have is a yes/no gate, not a weight. Switch it on and an option that fails it cannot win, however well it scores.

  • Buy a hosted service Winner3.65
  • Build in-house 2.85
  • Do nothing 2.40

Robust: the winner holdsmargin 0.80

Winner: Buy a hosted service, margin 0.80, robust

Scores are illustrative. The full tool adds evidence per score, pairwise weighting and a decision record.

Open decision-matrix →

Open source · decide

decision-matrix

Build-vs-buy decisions you can defend.

A guided, in-browser decision matrix. Must-haves stay apart from weights, every score needs evidence, sensitivity analysis flags fragile decisions, and it writes a decision record you can commit.

  • 63 tests
  • Vue 3
  • TypeScript
decision-matrix results: ranked options with a sensitivity warning on a fragile decision
02Ship

Ship systems people rely on.

From the IP-management platform an operations team runs its day on, to a Three.js showroom and AR try-on.

phasegate

CI that catches the project phases teams skip.

86 testsGitHub →

01 / 05

IPORA

IP-management platform

SIPRC · 2025 – 2026 Internal · login-gated

The operations team's daily system of record, with 52 IP services live.

  • 52IP services live
  • 530+automated test cases
  • 40%less manual regression
  • 0downtime in the cloud migration
  • Nuxt 3
  • TypeScript
  • Django
  • PostgreSQL
  • Selenium
  • Playwright
  • Docker
Open case study →
IPORA sign-in screen: 'Intellectual Property Portfolio Integrated Digital Solution', with an email and password form
IPORA sign-in screen on a phone

03 / 05

siprc.sa

Company website and AI assistant

SIPRC · 2025 – 2026 Live

The company's public website in Arabic and English, with an AI customer-support assistant.

  • TypeScript
  • Vite
  • GSAP
  • Arabic/English RTL
  • AI assistant
Open case study →
siprc.sa home page in English: 'Saudi Intellectual Property Rights Company' beside a photo of a consultant
siprc.sa home page in Arabic, laid out right to left
siprc.sa with the AI assistant panel open, offering quick actions such as requesting a service
siprc.sa home page on a phone

04 / 05

Cepro

Brand-protection site and operations dashboard

Cepro (SIPRC group) · 2025 – 2026 Site live · dashboard internal

Built the operations dashboard from zero, then rebuilt cepro.ai and delivered it two weeks early.

  • 17pages rebuilt
  • 2 weeksearly
  • Next.js 15
  • React 19
  • TypeScript
  • Tesseract.js
  • next-intl
  • Vue 3
  • Django
Open case study →
cepro.ai home page in English: 'Your brand is under attack. We make it defensible.'
cepro.ai home page in Arabic, laid out right to left
cepro.ai section explaining why digital brand abuse is a business problem
cepro.ai home page on a phone

05 / 05

Nexxora group

Digitee, Mintora and Lovaa

Digitee (Nexxora Holding) · 2024 – 2025 Production apps

Six production apps from zero to launch, from a Three.js showroom to AR virtual try-on.

  • 6production apps
  • 16languages, full RTL
  • 5countries of e-commerce
  • Vue 3
  • Nuxt 3
  • TypeScript
  • Three.js
  • TensorFlow.js
  • MediaPipe
  • Tailwind
Open case study →
Digitee Three.js 3D showroom: a glowing magenta stage

More work.

Freelance engagements, a side project and earlier client work.

Title slide: 'From Requirements to Clean Code', a front-end project lifecycle workshop

Teaching

From Requirements to Clean Code

Workshop on the front-end project lifecycle · December 2025

A workshop and slide deck for students, graduates and freelancers on taking a front-end project from requirements to clean code.

Interlude

Arabic, done properly.

Put a date or a phone number inside an Arabic sentence and the browser silently reorders it. The data is right; only the pixels are wrong, so users stop trusting the data. Flip the switch.

As most sites render it
  • Date

    آخر تحديث للمستند 12-05-2024 بواسطة الفريق

    Document last updated 12-05-2024 by the team

  • Phone

    للتواصل اتصل على 010 2345 6789 في أي وقت

    To reach us, call 010 2345 6789 any time

  • Order

    تم شحن الطلب #4821-B اليوم

    Order #4821-B shipped today

  • Delivery

    مدة التوصيل 3-5 أيام

    Delivery takes 3-5 days

Verified in Chromium: without isolation these four render as 2024-05-12, 6789 2345 010, B-4821# and 5-3.

Before and after: the same strings rendered raw and through BidiText

vue-rtl-kit

Direction state that survives server-side rendering, logical-property utilities, and a BidiText component that isolates only the runs that would move, so dates and IDs stop reversing inside Arabic.

106 testsGitHub →

The same Django admin side by side in English and Arabic

django-rtl-admin

One app in INSTALLED_APPS: logical-property styling for the parts of the admin that stay mirrored wrong, isolated mixed-script values, Arabic-Indic digits and a language switcher.

192 testsGitHub →

Much of my work ships in Arabic and English. These two open-source kits hold the fixes I kept needing.

03Learn

Learn from what breaks.

Every failure should make the next one harder. I write that down as tests, guards and tools, and some of those tools are open source.

  1. 01

    Look at the real data before writing the parser.

    Formats you assume are formats you get wrong. More than once, a field I "knew" the shape of turned out to have two shapes, and the difference mattered.

  2. 02

    Test in the real thing.

    Scripted probes report success on broken paths. If it is a user interface, it is not done until it has been driven in a browser.

  3. 03

    Make the failure mode expensive to reintroduce.

    A bug that reached production comes back as a regression test, a database constraint or a type, so the same mistake fails loudly next time.

  4. 04

    Say plainly what broke.

    Status reports name what failed, why, and what changed. A clear bad-news report beats a vague good one.

Open source · learn

django-postmortem

Blameless incident reviews that stop repeat failures.

A Django app where blame-shaped wording is flagged, every action item must name the guard that stops the failure returning, and a review cannot close until someone has checked that guard works.

  • regression test
  • database constraint
  • schema check
  • alert
  • runbook
  • process change
  • 133 tests
  • Python
  • Django
django-postmortem review form with blameless-language and guard warnings

Tools I keep in the open.

Six MIT-licensed tools, each with its tests running in CI.

The path so far

Building software since 2022, from freelance client work to running an IT portfolio.

  1. 2019 – 2023

    B.Sc. Computer Science

    Assiut University, Egypt

    Graduated in 2023.

  2. 2022 – 2023

    Frontend Developer

    Freelance

    Client projects from requirements to deployment, including a climate-risk tool for PhD research.

  3. 2023 – 2024

    Frontend Engineer

    IDAAM

    Front-end modules for Keme, a US clinic-management platform.

  4. 2024 – 2025

    Frontend Engineer

    Digitee (Nexxora Holding)

    Sole frontend engineer for six production apps.

  5. May 2025 – Jul 2025

    Frontend Engineer, contractor then full-time

    Cepro (SIPRC group)

    Built the brand-protection dashboard from zero.

  6. Jul 2025 – Mar 2026

    Senior Frontend Engineer, then Full-Stack Engineer

    SIPRC

    Built the IP-management platform end to end, siprc.sa and its AI assistant, and the cepro.ai rebuild.

  7. Mar 2026 – present

    Project Manager, IT Projects

    SIPRCNow

    Running the IT portfolio: five production systems.

Contact

Let's build the next one.

If your team needs someone who can decide, ship and learn, I would like to hear about it.

Write an email

Egypt · UTC+2 (Cairo) · Arabic (native) · English (professional)