Mohammad Waleed Frdoose

MohammadWaleedFrdoose

Software engineer based in Amman, Jordan. I build the backends of business systems in Java and Spring Boot, add AI where it saves people work, then deploy and run it all in production myself.

Mohammad Waleed Frdoose
Map of the systems I have built Requests from customers, branches and partners pass through Cloudflare and Nginx to eight systems, which store their data in PostgreSQL, Redis, RabbitMQ, MongoDB and Cloudflare R2.
The systems I've built, and what they run on. Point at a system to trace it. Click it to read more. Tap a system to read more.

Across these systems I wrote 40+ Spring Boot services with 5,000+ REST endpoints, 830+ database migrations and 75+ CI/CD pipelines. Counted from the repositories, not estimated.

Systems

I designed and built the backend of each system below. On the Angular frontends I fix bugs and add features.

Planet Donuts

Customer app, call center, branches, factories, warehouses and one admin panel

The whole platform a donut chain runs on. Customers order from the app and website, the call center takes phone orders, branches sell through POS and waiter apps, factories produce, warehouses supply them, and one admin panel manages it all.

  • Customer app and website: sign-up with SMS codes, menus and prices per branch, delivery and pickup, saved addresses, card payments (PayTabs, MEPS), wallet, loyalty points, gift cards, ratings and push notifications.
  • Call center: phone orders for any branch, customer lookup, complaints, call records and agent reports.
  • Branches: POS, waiter and branch apps with tables, shifts, Z-reports and inventory counts. An offline server keeps selling without internet, drives card terminals and kitchen printers, and syncs when the connection is back. Cashier screens are recorded and played back as video streams (HLS), and staff checklists are checked by location.
  • Factories, warehouses and maintenance: branch orders to factories, recipes and production, barcodes, Arabic PDFs, purchase orders and stock ledgers, embedded Metabase dashboards and maintenance tickets, with one sign-in across every panel using single-use signed tickets.
  • Admin panel: one place to manage menus and branch prices, offers, employees and roles, every order, the call center, delivery providers, WhatsApp campaigns, app content, reports and the audit log.
  • A WhatsApp Business module on Meta's Cloud API: message templates, broadcasts to contact lists imported from Excel, signed webhooks for replies and delivery status, and the cost of each campaign.
  • Delivery platforms (Careem, MyThings) with a menu sync that retries on failure, order intake and status updates; Jordan's e-invoicing (JoFotara) recorded in an append-only ledger; an audit log of every field changed and by whom.
My part
Backend for every part: designed and built. Admin panel (Angular): I added pages such as reports, WhatsApp broadcasts, QR sessions, table order history and the company factory report.
Stack
Java 21, Spring Boot, PostgreSQL, Redis, RabbitMQ, Flyway, Docker, GitHub Actions, AWS EC2, Cloudflare, k6, Angular

QBridge

Document management for pharma factories (GMP)

A pharma factory has to control every procedure: who wrote it, who approved it, which version is in force today. QBridge does that for many companies, each in its own database.

  • A separate database per company, created automatically, with tests proving one company can never reach another's data.
  • Sign-in through Keycloak with Google, Microsoft and passkeys. Approvals are signed electronically after a fresh password check and tied to the document's SHA-256 hash.
  • The full life of a document: drafts, versions, check-out and check-in, review and approval rounds, change requests, periodic reviews, controlled paper copies and an append-only audit trail.
  • Word templates filled in automatically, inspection PDFs with a signature page, uploads checked by their file signature, bilingual email reminders, Excel import and migration from older systems.
  • Isolation and architecture rules tested with Testcontainers and ArchUnit.
My part
Backend: designed and built. Frontend: features in Angular (document library, passkeys, document types).
Stack
Spring Boot, Spring Security (OAuth2), Keycloak, PostgreSQL, Flyway, Cloudflare R2, Nginx, Docker, Angular

Link HR

HR and payroll for companies in Jordan and Saudi Arabia

Everything an HR team does each month, from attendance to payslips, for many companies on one platform.

  • A modular monolith on Spring Modulith, where modules talk through events instead of calling each other.
  • Each company's data kept apart by PostgreSQL Row-Level Security.
  • Payroll for Jordan and Saudi Arabia: GOSI and social security, end-of-service benefits, tax brackets, payslips and bank files, with Hijri dates, Ramadan hours and each country's holidays.
  • Leaves with accruals and carry-over, attendance with geofence and photo, shifts and overtime, calendar feeds, approval chains, assets, appraisals, loans, expenses and HR letters.
  • An AI assistant (Claude with tool use) that proposes changes to records as a diff. Nothing is saved until the user confirms, and answers stream over SSE.
  • Moves companies over from ZenHR through its API: employees, salaries and leave balances, reconciled before go-live.
  • Two-factor sign-in, Argon2 passwords, rate limiting, idempotency keys, Web Push, and scheduled jobs that run once across servers (Quartz, ShedLock).
My part
Backend.
Stack
Java 25, Spring Boot 4, Spring Modulith, PostgreSQL (RLS), Redis, Quartz, ShedLock, Bucket4j, Claude API, Docker

Link Invoice

Purchasing and supplier invoices, with AI

Scan a supplier invoice and the system reads it. Ask a question about spending and it answers from the data.

  • AI reads invoices and cheques from photos, PDFs or straight from the office scanner into structured JSON (multimodal Gemini). The user checks the draft before it is saved.
  • An AI chat with 7 tools it can call: search invoices and cheques, supplier spend, unpaid invoices, dashboards, and free questions answered with SQL over 25 read-only views, limited to what the user is allowed to see.
  • Price-offer advice (buy or negotiate) from purchase history, automatic fallback to other models on rate limits, and every AI action written to the audit trail.
  • Cheques, supplier payments and advances, and price alerts.
  • A small desktop agent that prints receipts (ESC/POS) and scans from network and Windows scanners, shipped as a Windows installer and a Debian package.
My part
Backend and the print agent. Frontend: AI scanning pages and the audit log in Angular.
Stack
Spring Boot, PostgreSQL, Gemini API (multimodal input, function calling, JSON output), Cloudflare R2, Docker, GitHub Actions, Angular

Link ERP Suite

Warehouse, factory and CRM, for one company or many

Stock, production and customers for companies that make and sell their own products.

  • A report builder that turns every database table into a report source, with grouping, totals, master-detail and Excel or CSV export, labelled in Arabic.
  • A multi-tenant warehouse: a database per company, an admin console, and a Cloudflare DNS record created for each new company's subdomain.
  • A CRM for call centers: customers, loyalty points, wallets, complaints, reviews and Excel import.
My part
Backend. Frontend: the tenant console and tenant-aware sign-in in Angular.
Stack
Spring Boot, PostgreSQL, Flyway, Apache POI, Metabase, Cloudflare API, Nginx, Docker, Angular

Offerat

Offers and food delivery marketplace

A marketplace where stores and restaurants post offers and deliver orders.

  • 10+ microservices behind an API gateway with service discovery.
  • Stores, menus, a Redis cart, orders, drivers, taxes and discounts.
  • Nearby stores found with MongoDB geospatial queries; delivery cost and time from Google Distance Matrix and Directions; delivery areas and blocked zones.
  • Customer and store chat on Firebase Realtime Database, live call updates over SSE, push notifications and SMS sign-in.
My part
Backend.
Stack
Spring Cloud (Gateway, Eureka, OpenFeign), MongoDB, Redis, RabbitMQ, Firebase, Google Maps APIs, Docker

Restaurant and shop SaaS

Subscription online stores, one per customer

Restaurants and shops subscribe and get their own online store.

  • Each customer gets its own subdomain, theme and logo, routed by Nginx.
  • Catalog, options, offers, cart, wishlist, discounts, loyalty points, orders, delivery integration, WebP images and video.
  • The customer is carried through every service call, so each request only sees its own store's data.
  • SMS and email providers set per customer.
My part
Backend.
Stack
Spring Cloud, MongoDB, PostgreSQL, Redis, Nginx, Docker, GitHub Actions

Vaccine Tracker

Children's vaccination schedules for parents

Parents add their children and the app keeps track of every dose.

  • Schedules each child's doses and reminds parents by push notification, SMS and email.
  • Paid subscriptions through PayTabs with promo codes, and Excel reports for admins.
My part
Backend.
Stack
Spring Boot, MongoDB, Firebase, PayTabs, Docker

How I ship

Every service goes to production the same way, with no manual steps on the server.

  1. Push to GitHubA merge to the development or production branch starts the pipeline.
  2. Build and testGitHub Actions compiles with Maven and runs the tests.
  3. PackageA Docker image is pushed to GitHub Container Registry, tagged with the commit.
  4. Blue-green deployThe new container starts next to the old one, and traffic switches only when it is healthy.
  5. ServeNginx and Cloudflare in front, on AWS EC2, Hetzner or Contabo.

Load-tested, not guessed

I load-tested the Planet Donuts API with k6. With Redis caching, menu reads went from about 190 to 2,760 requests a second. The same tests caught a race that could charge an order twice, which I fixed with row locks.

Servers I look after

Ubuntu and Debian servers with Docker Compose, Nginx reverse proxy and SSL, subdomain routing for tenants, firewall rules, backups, cron jobs, and email alerts when a service goes down.

Skills

What I use day to day, grouped by where it sits in a system.

Languages
Java (8 to 25), SQL, TypeScript, C#, Bash
Backend
Spring Boot 3 and 4, Spring Cloud (Gateway, Eureka, OpenFeign), Spring Security, Spring Data JPA and MongoDB, Hibernate and Envers, Spring Modulith, .NET Core, MapStruct
Architecture
Microservices, modular monolith, event-driven design, multi-tenancy (database per tenant, Row-Level Security), transactional outbox, idempotency keys, offline sync, REST, Problem Details, SSE, WebSocket
Data and messaging
PostgreSQL, MySQL, MongoDB (aggregations, geospatial), Redis, RabbitMQ, Flyway, connection pool tuning, locking, data migration
Security and sign-in
OAuth2 and OpenID Connect, Keycloak, JWT, single sign-on, passkeys, Google and Microsoft sign-in, two-factor codes, step-up checks, role-based access per endpoint, Argon2 and BCrypt, CSRF, rate limiting, signed webhooks
Messaging and real-time
WhatsApp Business Cloud API, Firebase (push, Realtime Database, Auth), Web Push, SMS gateways, email in Arabic and English, SSE, WebSocket
Payments and delivery
PayTabs, MEPS online payments and card terminals, wallets, gift cards, loyalty points, Careem and MyThings delivery
Maps
Google Maps Distance Matrix and Directions, MongoDB geospatial indexes, geofencing
Gulf and compliance
Saudi GOSI, end-of-service benefits, tax brackets, Hijri calendar, Ramadan hours, JoFotara e-invoicing, GMP audit trails and electronic signatures
AI and LLMs
Gemini and Claude APIs, reading invoices and cheques into structured data, function calling and tool use, text-to-SQL over secured read-only views, AI changes approved by the user, streaming, model fallback
Files and reports
Excel and Word with Apache POI, PDF with PDFBox and OpenPDF including Arabic text, QR codes and barcodes, calendar feeds, HLS video, WebP images, S3 and Cloudflare R2, a dynamic report builder
Jobs
Quartz, ShedLock, Spring scheduling, retries with backoff, dead-letter handling
DevOps
Docker, Docker Compose, GitHub Actions, Jenkins, Nginx, Cloudflare (DNS API, R2, Pages), AWS EC2, Hetzner, Contabo, Linux, systemd, basic Kubernetes
Hardware and desktop
Receipt, kitchen and bar printers (ESC/POS), network and Windows scanners, card terminals, Windows service installers, Debian packages
Testing
JUnit 5, Mockito, Testcontainers, ArchUnit, k6, Spring Boot Actuator, OpenAPI and Swagger, Postman
Frontend
Angular, PrimeNG, Tailwind CSS, Chart.js, Arabic and right-to-left layouts

Background

Where I've worked and studied, and where I'm based.

Software Engineer, Backend and DevOps

Link Company, Jordan. October 2023 to now.

B.Sc. in Software Engineering

Zarqa University, Jordan. 2020 to 2023, graduated with 89.5% (Excellent).

Based in Amman, Jordan

Syrian nationality. Arabic (native) and English.

Get in touch

Email is the quickest way to reach me, or message me on LinkedIn. My CV has the full details of every system above.