Alaa Mohamed

Senior .NET Developer · Technical Lead · Backend & Architecture

I care about backend systems that stay clean as they grow — boundaries that hold, workflows that are honest about consistency, and code other engineers can read a year later.
Alaa Mohamed

About Me

Backend-focused .NET developer with 4+ years of professional experience building and shipping backend and full-stack systems. Most of my work sits where correctness matters most — orders, payments, and vendor settlements that have to be right the first time.

I'm a Senior .NET Developer and Technical Lead at ITLegend, where I own the backend architecture of the e-commerce codebase powering a multi-vendor marketplace and a fashion-retail store across Egypt and Jordan, plus the ITLegend e-learning platform serving 80,000+ users. I lead a small cross-functional team, handling everything from domain modeling to deployment on Linux infrastructure.

My stack is C# / ASP.NET Core, and my approach is Clean Architecture, DDD, and messaging — patterns that keep complexity manageable as products and teams scale.

Key Expertise

  • Backend Architecture — Clean Architecture, DDD, Modular Monolith
  • CQRS with MediatR & event-driven design with RabbitMQ
  • Performance engineering — caching, indexing, query optimization
  • Team leadership — code review culture, architecture decisions, mentoring
  • DevOps — Docker, Linux (Ubuntu), Nginx, and AI-assisted development workflows

Professional Experience

Senior .NET Developer / Technical Lead

ITLegend · Cairo, Egypt

Oct 2023 – Present

  • Own the backend architecture of the e-commerce codebase powering two live storefronts — Basyit, a multi-vendor marketplace across Egypt and Jordan, and a fashion-retail store on the same shared .NET 10 / Clean Architecture codebase — covering the catalog, per-offer pricing, a buy-box engine that selects the winning offer across competing vendors, seller tiers, warehouses, orders, shipments, and returns (93 API controllers, 600+ endpoints, 125 domain entities, 309 EF migrations).
  • Designed the vendor settlement & refund subsystem as an append-only, immutable financial ledger with a computed wallet read-model, optimistic concurrency, and idempotent refund and notification workflows — keeping money movement consistent and safe to retry.
  • Architected the order-creation workflow to persist the order, shipments, and payment in a single atomic transaction, while offloading notifications, email, and SMS to RabbitMQ so side-effects never block or fail the core order.
  • Diagnosed and resolved a ~20s performance bottleneck on the ITLegend e-learning platform's student dashboard (~300 concurrent users, 80,000+ users overall) by splitting an overloaded endpoint, precomputing heavy stats, and adding caching + targeted indexes — cutting response time by over 5×.
  • Hardened the e-learning platform against a large-scale automated signup attack: added Cloudflare Turnstile, partitioned rate limiting (a global policy plus a stricter auth policy), and mandatory email verification — stopping fraudulent account creation at the edge and restoring trustworthy user metrics.
  • Built idempotent, amount-verified payment-webhook confirmation across four gateways (Fawaterak, Paymob, PayPal, Stripe) that deliver at-least-once and out of order — guarded atomic updates let exactly one of expiry or confirmation win, so a duplicated callback never double-confirms or resurrects an expired order. Also integrated HyperPay / CopyAndPay and WhatsApp messaging via Twilio.
  • Designed a snapshot-based order pricing engine: coupon, loyalty, tax, and per-vendor shipping terms are frozen onto the order at checkout, and every partial cancel or refund recomputes from that snapshot rather than incrementally — rounding once so repeated partial refunds never accumulate cent-level drift, with a FIFO loyalty-points ledger and a single guarded check-and-decrement on stock so concurrent checkouts cannot oversell.
  • Transactional-outbox carrier dispatch (Aramex): the outbox row commits in the same transaction as shipment approval, and a background worker atomically claims each row with a guarded update, reclaims orphaned rows via lease timeout, and does query-before-create using the shipment id as the carrier idempotency key, with exponential backoff and dead-lettering to an admin retry screen.
  • Deploy and operate the platforms on Linux (Ubuntu) VPS infrastructure — Nginx reverse proxy, SSL/TLS, and Dockerized supporting services (SQL Server, RabbitMQ, Redis).
  • Lead a cross-functional team of 5, owning architecture decisions and technical direction, and run technical interviews and code reviews. Also contributed to Riseon (MLM), Wasiitk (classifieds), and Property-Search (real estate).

.NET Developer

Remote

Jun 2022 – Oct 2023

  • Worked remotely with a senior engineer delivering custom web applications for clients across recruitment, education, real estate, and business management — from requirements through to delivery.
  • Built full-stack systems with ASP.NET Core MVC (C#, EF Core, SQL Server) and HTML / CSS / JavaScript / jQuery front-ends, with an emphasis on clean, maintainable server-side code.
  • Delivered a job-board / recruitment platform (ASP.NET Core) connecting job seekers and employers, with candidate profiles, job matching, employer subscription packages, and online payments.

Featured Projects

Basyit — E-Commerce Platform
Multi-vendor marketplace + fashion-retail store (Egypt & Jordan) · .NET 10 · Clean Architecture
🛒

A multi-vendor marketplace and a fashion-retail store running on one shared codebase I architected end-to-end: catalog with per-offer pricing, a buy-box engine that picks the winning offer across competing vendors, a vendor settlement subsystem built as an append-only financial ledger with idempotent refund workflows, and a snapshot-based pricing engine that keeps partial refunds free of cent-level drift. Orders persist atomically; a transactional outbox drives Aramex carrier dispatch, and RabbitMQ handles downstream side-effects so they never block the core order.

93 API controllers · 600+ endpoints · 125 domain entities · 309 EF migrations · 4 payment gateways · 177 test files

.NET 10
Clean Architecture
DDD
RabbitMQ
Redis
SQL Server
Souqna
Personal project · Modular Monolith marketplace · Ongoing
🏪

Self-initiated architecture project built to practice production-style design: Clean Architecture, DDD, Modular Monolith, CQRS (MediatR), and message-driven workflows via RabbitMQ. Implements Catalog and User Management modules with rich domain models, aggregates, and domain events. Includes JWT auth with refresh-token rotation, role-based access, soft-delete with audit trails, health checks, rate limiting, structured logging (Serilog), and unit / integration tests.

Modular Monolith
DDD
CQRS
MediatR
RabbitMQ
C#
ITLegend Platform — E-Learning Performance Overhaul
80,000+ users · 5× dashboard speed-up under load

Student dashboard response was ~20 s under 300 concurrent users. Diagnosis: one fat endpoint doing too much at runtime. Fix: split by read / write, precompute stats on a schedule, add Redis cache and targeted indexes. Result: under 4 s — more than 5× faster. The platform also runs geo-aware pricing and gateway routing (MaxMind GeoIP2) and fail-closed, cache-first fine-grained authorization.

~80,000 users · 94 controllers · 299 endpoints · ~194 tables across 6 schemas · 300 EF migrations

ASP.NET Core
Redis
SQL Server
EF Core
Performance

Case Studies

An immutable financial ledger for vendor settlements

How I keep marketplace money movement correct, auditable, and safe to retry.

Problem

In a multi-vendor marketplace, vendors accrue earnings, the platform deducts commissions, refunds reverse charges, and cash-on-delivery adds edge cases. A single mutable “balance” column is fragile — concurrent updates race, history is lost, and reversals are hard to reason about.

Design

An append-only, immutable ledger. Every money movement is a new immutable entry (credit / debit with a typed reason). The wallet balance is a computed read-model derived from the ledger, not a stored mutable field. Balance-affecting operations use optimistic concurrency. Refunds and commission reversals are modeled as compensating entries, and the workflows are idempotent — a retried or duplicated message never double-charges or double-refunds.

Trade-off

I trade cheap writes and a trivial balance read for correctness, auditability, and safe retries. Reads cost more (roll up the ledger), which I offset with a maintained read-model. For money movement, that trade is worth it.

Append-only ledger+ Credit · vendor sale− Debit · commission+ Credit · vendor sale− Refund · compensating entryentries are appended — never mutatedroll upWallet read-modelbalance = Σ ledger entriesderived, not stored

Atomic orders with asynchronous side-effects

Keeping order creation consistent and fast while side-effects run out of band.

Problem

Placing an order must create the order, its shipments, and the payment record consistently. It also triggers notifications, email, and SMS. If side-effects run inline, a slow or failing provider can delay or break order creation; if the write is split naively, you risk inconsistency (order saved but payment not).

Design

The core write — order + shipments + payment — happens in a single atomic database transaction, so the order is all-or-nothing. Side-effects (notifications / email / SMS) are decoupled: published to RabbitMQ and processed asynchronously by consumers, so a failing provider never blocks or fails the core order.

Trade-off

Side-effects become eventually consistent (a notification may lag or need a retry) in exchange for a fast, reliable core order. For carrier dispatch, where a missed publish means a shipment that never leaves, I closed that window with a transactional outbox: the outbox row commits in the same transaction as shipment approval, and a background worker atomically claims each row with a guarded update plus rowcount check, reclaims orphaned rows via lease timeout, and does query-before-create against Aramex using the shipment id as the carrier idempotency key. Exponential backoff is capped at 60 minutes, and terminal failures dead-letter to an admin retry screen.

Atomic transactionOrderShipmentsPaymentcommit →publishRabbitMQEmailSMSNotificationsasync consumers — never block the order

Technical Skills

BECore Backend
C#
ASP.NET Core
EF Core
SQL Server
REST APIs
SignalR
Blazor
.NET MAUI
ARCHArchitecture & Patterns
Clean Architecture
DDD
Modular Monolith
CQRS
MediatR
Repository Pattern
Unit of Work
Domain Events
MSGMessaging, Caching & Real-time
RabbitMQ
Redis
SignalR
Hangfire
Event-Driven Design
Async Workflows
INTIntegrations & Tooling
Stripe / PayPal
Paymob / Fawaterak
HyperPay
Twilio WhatsApp
Google / Facebook Auth
Postman
OPSDevOps & Infrastructure
Docker
Linux (Ubuntu)
Nginx
SSL/TLS
Git & GitHub
VPS Administration
AIPractices & AI-Assisted Development
Claude Code
ChatGPT / Copilot
xUnit
Serilog
Agile / Scrum
Code Reviews

Currently Expanding Into

Azure
Microservices
CI/CD

Education & Certifications

Education

B.Sc. in Communications & Electronics Engineering

Mansoura College Academy · Mansoura, Egypt

2016 – 2020

Languages

Arabic

Native

English

Professional

Get In Touch

Contact Information

I'm always open to discussing new projects, opportunities, or partnerships. Feel free to reach out!