# Mohab Mamdouh

> Backend Developer PHP / Laravel

## Contact

| Field | Value |
| --- | --- |
| Current position | Backend Developer PHP/Laravel |
| Location | El Slam, Cairo, Egypt |
| Email | mohabmamdouh0706@gmail.com |
| Phone | 01090483647 |
| Years of experience | 3 |
| GitHub | https://github.com/Mohab2Mamdouh |
| LinkedIn | https://linkedin.com/in/mohab-mamdouh-15851b350 |
| Website | https://author.albarakainsfund.com/ |
| Behance | https://www.behance.net/mohabmamdouh22 |

Download the PDF version: https://author.albarakainsfund.com/downloadPDF

## Summary

PHP/Laravel Backend Developer with 3+ years of production experience. I build REST APIs, design modular systems, and have worked on microservices using RabbitMQ and Laravel across CRM, e-commerce, and real estate platforms. I prefer clean architecture over clever code.

## Skills

- **Backend**: PHP, Laravel, REST APIs, Laravel Queues, Livewire, Laravel Sanctum, Laravel Scout, Laravel Events, Websockets, Microservices, Spatie Permissions, Spatie Translatable, Laravel Modules (nwidart), Laratrust, PDF Generation, PHPUnit, RabbitMQ, State Machine Design, Security Hardening, AI / LLM Integration, Go, Event-Driven Architecture, Multi-Tenancy, Clean Architecture, Repository Pattern, Composer Package Development, Dynamic Form Builder, Feature Flags & Licensing, Streaming Data Export, Audit Logging, JWT Authentication, OAuth 2.0, Webhooks, Server-Sent Events (SSE), Localization (i18n), Firebase Cloud Messaging, Facebook Graph API, SMS Gateway Integration, Model Context Protocol (MCP), WhatsApp Cloud API, Laravel Reverb, OAuth 2.1 Authorization Server, AI Integration (MCP), Data Migration (ETL)
- **Frontend**: JavaScript, HTML, CSS, Bootstrap, Tailwind CSS, Blade, Chart.js, Vite
- **Database**: MySQL, Redis, SQLite, Elasticsearch
- **Prior Knowledge**: WordPress, Kafka
- **Little Knowledge**: AJAX, jQuery
- **Other Skills**: Git, GitHub, Docker, Postman, Composer, Nginx, PHPStan / Larastan, Deployment Automation, CI/CD, SSH Automation, Linux Server Administration, Prometheus, Grafana, Loki, Alertmanager, MinIO / S3, k6 Load Testing, Bash Scripting, Let's Encrypt / TLS

## Experience

### Backend PHP/Laravel Developer — Dotshub (Profit CRM)

*Nov 2025 – Present*

Collaborating on migrating Profit CRM from a monolithic architecture to 9 independent microservices for v6. Implemented RabbitMQ-based async communication between services, reducing inter-service coupling. Maintained and debugged legacy modules in v4 and v5 while building new API endpoints in Laravel 12.

**Environment:** Laravel, PHP, RabbitMQ, REST APIs, MySQL, Docker, Microservices Architecture, Git

### Backend PHP/Laravel Developer — E-ramo for Digital Solutions

*Feb 2025 – Oct 2025*

Built and maintained 170+ RESTful API endpoints consumed by Android and iOS apps. Implemented Laravel Queues for background job processing. Developed admin dashboards with data visualizations using Chart.js and C3.js. Worked closely with frontend teams to optimize API response structure and delivery.

**Environment:** Laravel, PHP, JavaScript, Blade, Bootstrap, MySQL, REST APIs, Git, AJAX, Chart.js, C3.js, Laravel Queues

### Backend Developer PHP/Laravel — Freelance

*Jan 2023 – Mar 2024*

Delivered backend features and bug fixes for multiple client projects built on Laravel and PHP. Handled full project cycles independently — requirements, implementation, and deployment.

**Environment:** Laravel, PHP, MySQL

### Backend Developer WordPress — Early Experience · WordPress/PHP Developer (2020–2021)

*Jan 2020 – Sep 2021*

Developed and maintained WordPress/PHP websites early in my career, including responsive frontend work with Bootstrap.

**Environment:** WordPress, PHP, Bootstrap, HTML, CSS

## Projects

### Profit CRM (Microservices)

*Ongoing*

Profit CRM V6 — a multi-tenant sales CRM rebuilt from a Laravel monolith (v4/v5) into a fleet of nine independent Laravel 12 / PHP 8.5 services: an API gateway, a Central administration service, the Sales, Marketing, Inventory, Questionnaires and Files domain services, an Integrations service for Facebook lead ads and WhatsApp, and an MCP service that connects AI assistants — all sharing one Composer path package for the code that crosses service boundaries. Backend work only — the SPA is another team's. Architecture: database-per-tenant multi-tenancy (stancl/tenancy) with domain resolution and per-tenant provisioning; JWT authentication (tymon/jwt-auth) with separate tenant and central guards; Laratrust RBAC extended with per-type and per-record permissions; a platform-aware layer that resolves WEB and MOBILE implementations of every Service, Request and Resource from an X-Platform header; and a strict Repository pattern so no service touches a model directly. Runs on Docker Compose behind Nginx and a production reverse proxy, with one overlay per licensed module, Supervisor-managed workers, Redis and php-fpm pools tuned to fit a 2-core box. Shared contracts package: one Composer path package that every service installs and volume-mounts — the single home for anything that crosses a service boundary. It ships the typed HTTP service clients, the RabbitMQ publisher and consumer base classes, the import and export engines, the notification and audit-trail publishers, the shared middleware (rate limiting, localisation, request context, service-to-service auth, activity logging), a liveness endpoint registered into all nine services at once, phone-number and signed-file-URL helpers, the shared Arabic/English translation catalogue, and a set of custom Artisan generators — platform services, requests, resources, repositories, RabbitMQ consumers, and a versioned seeder system with batch rollback modelled on migrations. Adding a capability there reaches the whole fleet; it is what keeps nine services from growing nine copies of the same logic, and what let the two newest services ship without touching the other seven. Central control plane (admin API): the tenant lifecycle end to end — create, block/unblock, soft-delete, restore, permanently drop, quota and licence expiry enforced as a block condition — over a dedicated `admin` JWT guard with its own admin and role management, its own audit trail and a Server-Sent Events stream that reports each provisioning step live. Tenant creation runs a job pipeline (create database, migrate, seed, create the admin user) and records status, step and error per tenant. Support staff can impersonate any user of any tenant: a reason-stamped, time-boxed session handed off through a one-time redeemable link code, whose id rides in the token so every log line in every service names the session — and for on-prem clients the token is minted on the client's own box over SSH, since only that box holds its signing secret. v5 → V6 migration: a resumable, checkpointed pipeline (inspect, extract over SFTP, stage, transform, files, finalize) that moves a v5 tenant — on our host or a client's own server — into V6 as one more provisioning stage. The transform is 23 ordered, re-runnable steps that preserve v5 ids for users, leads, requests and logs, remap everything V6 seeds (states, questions, roles, permissions), convert Cairo wall-clock times to UTC with DST handled, and refuse up front any permission or log action the map does not know rather than failing an hour in; it ends with a reconciliation report, history verification and a permission diff. On-prem client management: the same dashboard installs and operates Profit CRM on a client's own server over SSH (phpseclib) — host-key pinning, a generated managed key that replaces the typed credential, a per-box Bitbucket deploy key, a preflight of OS/Docker/Git/disk/RAM, a scripted install with Let's Encrypt certificate issuance and renewal, a verify pass and a durable run log per machine. Interrupted installs are recovered automatically, and installs can be cancelled, retried or fully uninstalled (restoring a v5 the install froze). On top of it: fleet-wide deploys dispatched as queued runs, remote power up/down, per-tenant licence and module sync, a phpMyAdmin console opened on the client's database through an SSH tunnel behind a one-time token, and a browser web terminal (WebSSH2) that issues a short-lived, restricted ed25519 key per session so an admin can open a shell or tail any run's log live without the managed key ever leaving central. Licensing: a Pennant-shaped feature catalogue in the central schema — modules (whole services) and features (capabilities), a per-tenant grant list with a transitive dependency closure, a shared Redis-cached read path across all nine services, fail-closed `feature:` middleware on each service's route group, and a permission-blocking projection so the UI hides what was never sold. AI connector (MCP): a read-only Model Context Protocol server, shipped as its own licensed service, that lets a user ask Claude, ChatGPT and other MCP clients about their own CRM. Streamable HTTP JSON-RPC exposing 40+ read-only tools — every sales and marketing report, lead and request search, request timelines, calendar, tasks, inventory matching, team trees, WhatsApp inboxes and exports — each calling the real V6 endpoint as the signed-in user, so validation, permissions, row-level scopes and field masking apply unchanged and nothing is reimplemented. The gateway acts as an OAuth 2.1 authorization server (RFC 8414/9728 discovery, PKCE, dynamic client metadata) for Claude.ai and ChatGPT, with hashed, expiring, revocable personal tokens for CLI clients, per-token rate limits and byte budgets, and an audit row per tool call. WhatsApp integration: each salesman connects their own WhatsApp Business number through Meta's Embedded Signup in Coexistence mode, and every lead they own gets a two-way thread kept in sync with what they send from the CRM and from their phone. Meta webhooks are signature-checked, written to a central inbox and routed per phone number to the right tenant (SaaS or on-prem) over RabbitMQ; messages are de-duplicated by wamid, matched to leads by phone number across services, and media is downloaded on its own consumer so a large document never stalls chat. Sending covers text, media, location, replies and reactions inside the 24-hour window with retry and error translation; managers see their team's threads, a thread can be shared with salesmen on the same deal, and every message, read receipt and typing indicator reaches the browser live over Laravel Reverb WebSockets. Asynchronous messaging: 30+ RabbitMQ queues (php-amqplib) driving activity logs, notifications, imports, exports, bulk actions, lead-ads ingestion, WhatsApp inbound, status and send, SMS/email campaigns and scheduled sweeps. Consumers were consolidated from 27 supervisor processes into 12 aggregate consumers, cutting worker memory from ~1.7 GB to ~770 MB. Dynamic forms engine: every lead, request, inventory item, provider and state report is described by an admin-built questionnaire rather than fixed columns — 27 question types (text, select, multi-select, date, date range, map, phone, e-mail, price, counter, rich text, images, video, documents, 3D and 360 media), conditional questions nested under an option, per-question validation rules generated at runtime, uniqueness rules that drive lead duplicate detection, card/main field selection, media answers stored as files, and a cross-service answer filter and search used by every listing, export and bulk action. Sales features: Lead ID tracking that grants chosen users the full history and info of the leads arriving through a tracked Lead ID without widening their role; lead-level history across every request with assignee masking; duplicate handling that folds empty requests away; and reports (salesmen performance, conversions, monthly trends) tuned with MySQL index hints. Data in and out: a streaming export engine (XLSX via openspout, CSV, PDF via mPDF) covering 23 entities and 11 report matrices at constant memory — 200k rows in 36 MB where the previous pipeline exhausted 512 MB at 30k rows; a spreadsheet import engine (PhpSpreadsheet) for leads and providers with fuzzy header matching, batched cross-service validation, Excel date/coordinate/range cell normalisation, media fetched by share link, global-error detection and annotated reject files; and per-tenant database backups (scheduled or on demand, local disk or the tenant's own Dropbox, retention pruning) with a synchronous restore that re-imports the dump, migrates and re-seeds it to the current codebase, then flushes the tenant cache across every service behind a per-tenant lock. Also built: push notifications on Firebase Cloud Messaging HTTP v1 with durable per-user rows, device-token and topic addressing and per-type TTLs; a cross-service audit trail on spatie/laravel-activitylog published over RabbitMQ and resolved to human-readable record names, now covering file removals; user blocking enforced by middleware across the fleet; Facebook Lead Ads integration (OAuth, webhooks, Graph API) with Conversions API quality feedback, moved into the Integrations service; and bulk SMS/e-mail campaigns across five SMS gateways and per-tenant SMTP. Observability and logging: dedicated log channels (rabbitmq, import, export, restore, notification, deployment, integrations, mcp, slow queries, debug, daily) plus an edge-minted correlation id that nginx, PHP and every RabbitMQ envelope carry, so one id greps a request across every hop of the fleet. An opt-in Prometheus + Grafana + Loki + Alertmanager + Alloy stack scrapes and probes every service, alerts on MCP tool failures among its rules, ships provisioned dashboards and Discord alerting, with per-endpoint latency and active-user analytics derived from the nginx JSON access logs and k6 load tests for capacity work.

**Stack:** Laravel 12, PHP 8.5, Microservices, RabbitMQ, MySQL, Redis, Docker, Nginx, Supervisor, REST APIs, JWT, OAuth 2.1, Multi-Tenancy, Laratrust RBAC, Laravel Reverb, WebSockets, WhatsApp Cloud API, Model Context Protocol (MCP), MinIO/S3, FCM, SSH Automation, Let's Encrypt, Prometheus, Grafana, Loki, k6

**Links:** [Source](https://bitbucket.org/m7_esmaar/workspace/repositories/)

### Community Management

*Ongoing*

A community-management platform for a real-estate developer: compounds, units, amenities, residents and staff, where a resident raises a request, a gate pass or an amenity booking and staff carry it through to resolution. One Laravel 12 deployment serves three surfaces — a Blade staff dashboard on the session guard, a resident mobile API and a gate-employee mobile API each on its own JWT guard — with two separate permission catalogues over a single database. Built: resident registration with document approval, many-to-many resident-to-unit links with per-unit permission tiers, maintenance requests on a role-gated state machine, QR visitor passes scanned at the gate, bookable amenities with blackouts and slot capacity, and a bilingual announcement inbox with Firebase push written without the SDK. Underneath sits a reusable in-project foundation — repository base, macros, response envelope, encrypted settings store, slice generators — plus a four-phase security hardening pass covering rate limiting, OTP lockout and private media behind a fail-closed access guard.

**Stack:** Laravel 12, PHP 8.3, MySQL 8, Redis, Docker, Nginx, Supervisor, REST APIs, JWT, Laratrust RBAC, Blade, Spatie Media Library, Spatie Translatable, Firebase (FCM), PHPStan, Laravel Pint

**Links:** [Source](https://bitbucket.org/m7_esmaar/cm-backend)

### Amtalek

*Oct 2025*

Phase 1 – API Performance Optimization: Identified and resolved critical bottlenecks across multiple endpoints, reducing response times from 5+ seconds to under 1 second. Optimized backend queries, controllers, and response structure in collaboration with the frontend team. Phase 2 – Dashboard & API Rebuild (Clean Architecture): Rebuilt the dashboard and APIs using Clean Architecture with a Service – Interface – Repository – Actions pattern. Improved separation of concerns, maintainability, and long-term scalability. Features property listings, advanced search, user management, and full admin controls for a complete property marketplace.

**Stack:** Laravel 12, PHP, MySQL, Bootstrap, HTML, CSS, REST APIs, Clean Architecture

**Links:** [Source](https://github.com/Mohab2Mamdouh/Amtalek) · [Live](https://eg.amtalek.com/ar)

### DeployMate

*Jun 2026*

A self-hosted deployment tool — the part of Envoyer or Forge a small team actually needs, running on their own box. It connects a Git provider to a target server, generates the deploy script, SSHes in to run it and streams the output back live. MIT, 173 commits. Five modules: Git integrations over OAuth for GitHub, GitLab and Bitbucket behind one provider interface resolved by a factory; SSH targets reached through a client speaking both spatie/ssh and phpseclib; projects holding branch, strategy, Docker config and per-stage hook commands; and the execution engine. The deploy script is generated fresh every run and never stored, branching on VPS versus shared hosting, and output streams to the browser over Server-Sent Events rather than a WebSocket server. The runner is written so it cannot throw, so a crashed deploy never leaves a record stuck at 'running'. Push webhooks are HMAC-verified per provider. The base classes come from my own published Composer package.

**Stack:** Laravel 12, PHP 8.4, MySQL 8, Redis, Docker, Nginx, Blade, Laravel Modules, Laratrust, Laravel Socialite, phpseclib, spatie/ssh, Server-Sent Events, Webhooks, Tailwind, Vite

**Links:** [Source](https://github.com/Mohab2Mamdouh/DeployMate)

### Bnaia Multi Vendor

*Nov 2025*

A multi-vendor e-commerce system supporting multiple sellers, product management, order processing, and a shared storefront. Each vendor has a dedicated dashboard for managing their store, inventory, and orders.

**Stack:** Laravel 12, PHP, Blade, Bootstrap, HTML, CSS

**Links:** [Live](https://bnaia.com/)

### E-ramo Portfolio

*May 2025*

Developed RESTful APIs powering the frontend of E-ramo's company profile platform. Enhanced the admin dashboard layout and backend functionality. Ensured seamless data integration and performance through close collaboration with the frontend team.

**Stack:** Laravel, PHP, MySQL, REST APIs

**Links:** [Live](https://e-ramo.net/en)

### Laravel Blueprint

*Jul 2026*

My own published Composer package — the application foundation three of my other projects run on: DeployMate takes it as a dependency, while Anageet and Community Management vendor it in. It ships a repository contract and Eloquent base giving every entity a full query surface selected through a return-type enum, a BaseModel with eleven opt-in traits, a uniform response envelope, cache, log, mail and push helpers, a complete settings module, and schema and query macros — so none of that is rewritten per project. Scaffolding is the point of it: one command generates a versioned service, repository pair and controller from stubs the package owns, and a tracked-seeder system gives data the same timestamped, run-once discipline migrations give schema. Published under MIT, installable by path or private VCS repository.

**Stack:** PHP 8.3, Laravel 11/12, Composer Package, Artisan Generators, Repository Pattern, Spatie Translatable, MIT

**Links:** [Source](https://github.com/Mohab2Mamdouh/laravel-blueprint)

### Laravel Chatbot

*May 2026*

My own Composer package, built around one idea: an LLM call costs money and latency, so answer from your own data first. A message runs through intent detection and resolves in two free tiers before the paid one — registered report closures answer factual questions straight from the database, anything else goes to Laravel Scout so the host application's searchable models are queried through Elasticsearch, and only when both come back empty is Groq called. Every response declares which tier produced it, so a deployment's cost profile is visible rather than guessed at. It is entirely config-driven and ships nothing application-specific: the host registers its own models, report closures and intent keywords, and tunes the model, token budget and history depth. One rate-limited endpoint, multi-turn by passing the transcript. MIT.

**Stack:** PHP 8.1+, Laravel 10+, Composer Package, Laravel Scout, Elasticsearch, Groq LLM API, REST API, MIT

**Links:** [Source](https://github.com/Mohab2Mamdouh/laravel-chatbot)

### Tracker

*Ongoing*

A time-tracking, earnings and invoicing tool for my own contracting work, built around a hard constraint: it had to run on cheap shared hosting with no database server and no build step. It is one HTML page, one PHP API and a SQLite file the API creates and migrates itself on first request. It was then rewritten in Go — a single binary speaking the identical API against the identical database with the frontend embedded inside it, so moving from shared hosting to a VPS is copying one file across. Both backends are kept working against the same schema. Projects carry their own hourly rates, a live timer survives a page reload, a payments ledger tracks what is still owed all-time per project, and invoices print from whatever is currently filtered. The password is verified server-side on every request, and hiding money on screen re-asks for it before revealing.

**Stack:** Go, PHP 8, SQLite, JavaScript, HTML, CSS, REST API, Docker

**Links:** [Source](https://github.com/Mohab2Mamdouh/tracker)

### Couponzil

*Jun 2025*

Extended the Laravel backend with new features and developed RESTful APIs for Flutter mobile app integration. Implemented Firebase Cloud Messaging (FCM) for real-time push notifications. Worked closely with the mobile team to align backend functionality with frontend requirements.

**Stack:** Laravel 12, PHP, MySQL, Firebase (FCM), REST APIs

**Links:** [Live](https://play.google.com/store/apps/details?id=com.couponzil)

## Languages

- Arabic — Level 5
- English — Level 3

---

This Markdown document is the machine-readable version of https://author.albarakainsfund.com, served automatically to AI agents. Last generated: Wed, Oct 21, 2026 11:40 PM.
