Mahmoud Hamdy

Full-Stack Developer · From Menoufia, Egypt

Egypt Available for hire @mahmoodhamdi

The short version

I'm a full-stack developer building production-ready web and mobile apps for clients across the MENA region. Day-to-day I work in Node.js, TypeScript, Flutter, and Next.js. On the side, I'm a top contributor to several open-source libraries that millions of developers depend on — nanoid, Helmet.js, express-validator, and the adhan_dart prayer-times library that powers Islamic apps.

How it started

I picked up programming in 2021 during my first year studying Computer Science. The thing that hooked me wasn't the syntax — it was watching a small chunk of code do something useful. My first real project was a Flutter app called الأربعون النووية (Nawawi's 40 Hadith) — an audio-first Arabic app I published on Google Play. That project taught me everything that university wouldn't: state management, audio playback, RTL layouts, app-store review, real users emailing me about bugs.

By the time I started my second year, I was taking small freelance gigs on Mostaql and Khamsat — mostly Flutter screens and Node.js endpoints. Each project was a forced curriculum: every client request was a new thing I had to learn, ship, and support.

Why open source

I'd been using libraries like Helmet, express-validator, and Mongoose every day in client work. One afternoon I hit a bug in express-validator, opened the source on a whim to understand it, and ended up sending the fix as a PR. It got merged. That single moment changed how I thought about the tools I used — they were all just code that someone wrote, and the door was always open.

I've kept that door open. Today I have 500+ merged PRs across 50+ projects, including the adhan_dart prayer-times library (I'm the top contributor — most updates pass through me) and the Itqan Community CMS for Quranic content. The contributions split roughly into three buckets: bug fixes I hit in client work, documentation for libraries I wish had been clearer when I learned them, and features for projects I personally use.

What I work on now

I'm currently a full-stack developer at ROV GROUP, building the Escore esports platform for the MENA region — a 16-module Node.js/TypeScript backend with a Next.js admin and Flutter mobile apps. Alongside that, I take on a handful of freelance projects each month, mostly in three categories:

  • E-commerce automation — Salla & Zid integrations, AI customer-support bots, order automation
  • Mobile apps — Flutter apps with clean architecture and Arabic-first UX
  • SaaS platforms — multi-tenant Node.js backends with admin dashboards

The stack I lean on

Backend
Node.js, TypeScript, Express, NestJS, Python
Frontend
Next.js, React, Tailwind CSS
Mobile
Flutter, Dart, Bloc/Cubit
Databases
MongoDB, PostgreSQL, Redis
DevOps
Docker, DigitalOcean, AWS, Nginx, CI/CD
Tools
VS Code, Linux, Git, Postman, Figma

How I work

I try to keep three things consistent on every project, freelance or full-time:

  • Weekly written updates. Every Friday I send a 5-line status: what shipped, what's next, what I'm blocked on. No surprises at the end of a milestone.
  • Test in production-shaped environments. Staging databases that mirror prod, real third-party sandboxes (Salla, Stripe, Twilio), not mocks. The last 10% of work is where most bugs hide.
  • Post-launch support is part of the deal. Every project I deliver includes 30-60 days of bug fixes and small adjustments — I don't disappear after the invoice clears.

What I'm reading and learning

Lately I've been deep on three threads: LLM-backed automation (building Salla AI assistants that actually close sales, not just chat), real-time systems (the Escore platform pushed me deep into WebSocket scaling and Redis pubsub), and better Arabic UX (RTL is solved at the CSS level but nobody talks about how Arabic typography breaks at certain font weights, or how date pickers should handle Hijri).

Outside of code

I live in Menoufia, Egypt. I read a lot — mostly engineering blogs and the occasional book on systems thinking. I write technical articles on the blog (25+ bilingual tutorials so far) because writing is the easiest way to find the holes in my own understanding.

Want to work together?

I'm currently taking on a few new projects for 2026. The fastest way to start is a short discovery call.