Platform overview

Amr Effendi is a multi-vendor marketplace: many independent sellers list products in one catalogue, buyers check out once across sellers, and the platform's own delivery network brings the goods to the door. The platform currency defaults to Qatari riyal (QAR), and every surface works in English and Arabic.

Who does what

PartyRole in the marketplace
BuyerBrowses, searches, buys from one or more sellers in a single checkout, tracks, cancels, returns, reviews.
SellerApplies and passes KYC, lists offers on catalogue products, holds stock in its warehouses, accepts and packs orders, handles returns, receives payouts.
DriverApplies, is approved into zones, works shifts, picks up from sellers, delivers with proof, collects cash on delivery.
DispatcherWatches the task board, assigns or reassigns, manages shifts, reconciles driver cash.
Admin / super adminApproves sellers, drivers and products, resolves disputes, approves payouts, configures commission, tax, shipping, content and feature flags.

The surfaces

Web · Next.js

Storefront

The buyer shop: home, categories, brands, search, product pages, cart, checkout and the full account area.

Web · React + Vite

Seller console

Orders, catalogue, inventory, shipments, returns, finance, reviews, questions, staff and onboarding.

Web · React + Vite

Dispatch console

Task board, drivers and routes, shifts, SLA view and cash-on-delivery reconciliation.

Web · React + Vite

Admin console

Moderation, KYC review, orders, disputes, payouts, chargebacks, commission, tax, content, users, audit trail.

Flutter

Buyer app

Phone-OTP sign-in, browse and search, cart, checkout, orders, returns and notifications.

Flutter

Seller app

Order queue and acceptance. Packing and seller tools are still placeholders.

Flutter

Driver app

Tasks, shift and planned route, cash, earnings; an onboarding screen for applicants; offline action queue.

NestJS

API + worker

One REST API (/api/v1) for every surface, and a worker process that sends notifications and runs scheduled jobs.

One purchase, many sellers

A buyer's checkout produces one order, one payment and one order number. Inside it the order is split into one order group per seller. Each group is accepted, packed, delivered, cancelled, returned and settled on its own clock, so a slow seller never holds up a fast one.

The catalogue model

  • Product — the shared listing (title, images, specifications, category, brand).
  • Variant — the buyable SKU, e.g. a size and colour.
  • Offer — one seller's price, condition and stock on that variant. Several sellers can offer the same variant; a Buy Box ranks them and the product page shows the others as "other offers".

Where to go next