Skip to content

Taking freelance work · ~20h/week · Cairo, GMT+3

The request ends.The work doesn't.

Backend developer for Laravel and Node. I connect your app to the systems it depends on — ERPs, CRMs, listing portals — and keep the data agreeing after the request is over. Seven projects below, with the trade-offs left in.

Lines, sole author
20,665
Platform users
~5,000
Field agents on my sync
~50
Test files
35
Nader Adel, backend software engineer
Nader AdelAvailable for freelance
Services

What you can hire me for.

Backend work, remote, about 20 hours a week. Each one links to where I have done it.

  • 01

    Third-party integrations and data sync

    Connect your app to the systems it depends on — an ERP, a CRM, a listing portal — and keep both sides agreeing, including when the other side never tells you something changed.

    • Typed API clients with rate-limit and retry handling
    • Webhooks in, queued jobs out
    • Scheduled reconciliation for systems that send nothing back
    • A record of every sync run, so failures are visible
  • 02

    Laravel backends, APIs and admin panels

    A new backend or new features on yours: schema, domain logic, queued jobs, a REST API, roles and permissions, and a Filament admin panel — with tests.

    • REST APIs with Sanctum or Passport authentication
    • Role-based permissions
    • Filament admin panels
    • PHPUnit and Pest feature tests
  • 03

    Features and fixes in an existing Laravel codebase

    Changes inside code someone else wrote, landed without breaking what is already there. Most of my production work has been exactly this, in a codebase shared by around 40 engineers.

    • Tests around the paths I touch, before I change them
    • Queue, scheduling and workflow bugs
    • State that has drifted out of sync with reality
    • Access rules kept in one place, not repeated per endpoint
  • 04

    Next.js screens on your backend

    Internal tools and dashboards in Next.js and TypeScript, built against the API they read from — lists, filters, status views and forms.

    • Next.js and React with Tailwind CSS
    • Status views that show what the backend actually knows
    • Tables and filters over large lists
Work

Seven systems, from sole author to one feature in someone else’s.

Open any card for the problem, the trade-offs and the screens.

Authorship, on every card, was measured with git blame on 24 and 25 September 2026 — surviving lines per author, across the files of each system. Work done by teammates is attributed to them, not counted here.

Also built

  • gym-app

    Membership and class booking for a gym, built as a Laravel API with an Inertia front end.

    • Laravel 13
    • Vue 3
    • Inertia
    • Sanctum
    • Pest
  • Node / Express REST API

    A TypeScript REST API built to the same layering I use in Laravel, as my own Node.js reference implementation. (Repository is currently private)

    • TypeScript
    • Node.js
    • Express
    • JWT
    • bcrypt
  • Broker portal

    A self-serve deal pipeline for external brokerages, built against the internal CRM. (Internal project, no public repository)

    • Laravel 12
    • PostgreSQL
    • Passport
How I work

Start small, see progress every week.

Taking freelance work · ~20h/week

  1. 01

    Tell me what you need

    Email the problem, your stack and any deadline. I reply with the questions I need answered before I can scope it.

  2. 02

    A written scope

    What I will build, what I will not, and how we will both know it is done. Fixed-price or hourly, quoted once we have talked it through.

  3. 03

    Start small

    For a new client I suggest a small paid first task, so you can see how I work before committing to more.

  4. 04

    Visible progress

    Work lands in your repository as pull requests with tests, with a short written update each week: what shipped, what is next, what is blocked.

The practical part

  • About 20 hours a week
  • Full overlap with EU business hours; US East until roughly 1pm ET
  • Fixed-price or hourly, quoted after a short conversation
  • Remote, in your repository and your tools

Recommendations on LinkedIn

About

Most of what I build runs after the response has already gone out.

Where I learned this, and what it taught me.

I have a year and a half of production Laravel behind me, at a real-estate group in Cairo. The codebase is a modular monolith of 127 bounded contexts, used by about 5,000 people across eight departments, deployed for four companies in the group, and worked on by around 40 engineers. That is the environment I learned in: other people's modules on every side of mine, and changes that have to land without breaking them.

My strongest work is integration and async. Typed clients for third-party systems, queued jobs, rate-limit handling, and reconciliation sweeps for the cases where the other side has no way to tell you that something changed. Most of what I build runs after the response has already gone out.

I work in TypeScript as well — including Next.js screens that are in production — and outside work I build Node.js and Express services with the same layering I use in Laravel.

One publish, start to finish

The agent got their answer in 41 milliseconds. Everything that matters happened afterwards.

POST /units/8412/publish202 Accepted · 41msthe caller is already gone
The request ends here
  1. +0ms

    PublishListingJob queued

    Dispatched to the queue rather than run inline, so the agent's request is not holding a connection open across a third-party API call.

  2. +180ms

    Readiness check — 22 reasons evaluated

    Every blocker is reported at once, not just the first, and each one names the form field to fix. Fourteen further cases were deleted once validation made them unreachable.

  3. +240ms

    POST /listings → 429 Too Many Requests

    Publishing a whole project’s worth of units reaches the portal’s rate limit. The response carries retry_after: 30.

  4. +30s

    Backoff — the client waits what it was told to wait

    Not a fixed sleep and not an immediate retry. The portal named a number; honouring it is the difference between a queue that drains and one that gets throttled harder.

  5. +30.4s

    Retry → 201 Created

    The remote reference is written back under lockForUpdate, because two concurrent publishes of the same listing would otherwise create a duplicate on the portal and burn the reference.

  6. +1h

    ReconcileListingsCommand runs

    The portal sends no webhooks. It cannot tell us anything, so once an hour we ask it instead — the only way expired and rejected are reachable at all.

  7. +1h

    Portal says expired — local state corrected

    PublicationState moves active → expired. A guess that is never corrected turns into a lie, and this is the sweep that stops it becoming one.

An hour of staleness, accepted on purpose. The portal offers no push channel, and a tighter schedule buys freshness with rate-limit budget that is better spent publishing.

Experience

A year and a half shipping inside a 40-engineer codebase.

Where the work happened, and what I owned.

  1. Aug 2025 – Present

    Backend Software Engineer · The Address Investments

    Feature work across seven modules, plus the integrations that connect the platform to the systems outside it.

    • Own features end to end across the HR, Unit, Deal, Lead, Learning, Developer Project and Task Management modules: schema, domain logic, queued jobs, API and tests.
    • Build the third-party integrations: typed clients, rate-limit handling, and scheduled reconciliation for the systems that never send anything back.
    • Alongside the current platform, still maintain the older Laravel 9 CRM that serves the rest of the group.
    • Land changes in modules other engineers own without breaking them — reading more code than I change, and writing the tests that prove nothing adjacent moved.
    • Laravel 12
    • PostgreSQL
    • Redis
    • Laravel Queues
    • Next.js
  2. Apr 2025 – Aug 2025

    Backend Engineering Intern · The Address Investments

    Four months on the Laravel 9 CRM the group was running at the time.

    • Shipped lead and deal features into the group’s production CRM during the internship.
    • Built a concurrency-safe booking flow that claims an agent time slot and creates the linked lead inside one locked transaction, so two agents can never hold the same slot.
    • Laravel 9
    • MySQL
    • Redis
Stack

What I actually use, and what I am only learning.

No percentages. No star ratings. The learning group says so.

Languages
  • PHP
  • TypeScript
  • JavaScript
  • SQL
Backend
  • Laravel 9–12
  • Laravel Octane (FrankenPHP)
  • Passport
  • Sanctum
  • Fortify
  • Filament
Data
  • PostgreSQL
  • MySQL
  • Redis
Async & realtime
  • Laravel Queues
  • Task Scheduling
  • Laravel Reverb
  • Laravel Echo
  • Server-Sent Events
  • Webhooks
Architecture
  • Modular Monolith
  • Bounded Contexts
  • Repository Pattern
  • REST API Design
  • Event-Driven Architecture
  • DDD-style layering
Testing & tooling
  • PHPUnit
  • Pest
  • Postman
  • Git
  • Linux
  • Laravel Telescope
  • Sentry
Frontend
  • Next.js
  • React
  • Tailwind CSS
Own projects, not production
  • Node.js
  • Express
  • Vue 3
  • Inertia
Currently learning
  • NestJS
Contact

Tell me what you’re building.

I take on freelance backend work — integrations, Laravel features and APIs, fixes in existing codebases — at about 20 hours a week, and I am open to full-time backend roles too. Email is the fastest way to reach me: include the stack, what is going wrong or what you need built, and any deadline.

Start a project

Hiring full-time? The CV