Mahmoud Yosristuff maker
All projects
case study, 2026

Rubies

A marketplace for Alexandria's independent boutiques. Shop several stores in one bag, get it all in one delivery, and pay only for what you keep.

Role
Designed and built end to end
Status
MVP, one-city pilot
Users
Customers, shops, couriers, admins
Languages
Arabic and English
rubies / home
Rubies home page
every shop in one bag
6 boutiques, one 2-hour window
the problem

Great shops, scattered across the city

Alexandria has lots of small boutiques with good pieces, but buying from three of them means three deliveries, three fees, and paying up front for clothes that might not fit. Most of them sell through Instagram messages with no real store behind them.

Rubies gives each shop its own storefront, puts every shop in one bag, sends one courier to collect it all, and lets the customer try the pieces at the door and pay cash only for what they keep.

One order, start to finish

  1. 1Fill one bagPieces from several shops, one 2-hour window.
  2. 2Shops acceptEach shop accepts, packs and marks ready.
  3. 3One courierCollects every bag, with an Open in Maps route.
  4. 4QR at the doorScan the customer's QR or type a 6-digit PIN.
  5. 5Try and payCash only for the pieces they keep.
  6. 6Returns go backRefused pieces return, and stock goes back up.

Four apps in one

one for every person in the chain
for

Customers

  • Each shop has its own page and logo.
  • Search every shop with filters for size, colour, price and rating.
  • The bag groups items by shop, with one delivery fee.
  • Live tracking with a QR handover pass.
boutiques
boutiques
a product
a product
search and filters
search and filters
one bag, two shops
one bag, two shops
tracking, with the QR pass and PIN
tracking, with the QR pass and PIN
for

Shop owners

  • An order queue: accept, pack, mark ready.
  • Catalog and stock, with low-stock warnings.
  • Sales, best sellers, busiest days and hours.
  • What the shop is owed, and payouts.
shop orders
shop orders
catalog and stock
catalog and stock
shop insights
shop insights
for

Couriers

  • The next stop, with Directions and the bags to pick up.
  • Pick up, deliver and returns in three tabs.
  • Cash on hand, and a QR to hand it to the admin.
  • Arabic and dark mode for night shifts.
the courier's day
the courier's day
in Arabic, dark
in Arabic, dark
the customer's order
the customer's order
for

Admins

  • Orders that need a courier, cash with couriers, returns to shops.
  • Financial report with PDF export.
  • Money and payouts per shop.
  • People, shops, windows, fees, announcements and join requests.
command center
command center
financial report
financial report
money and payouts
money and payouts
people
people
and

Arabic first, light and dark

Arabic is the default, with a full right-to-left layout. English is one tap away, and every screen works in light and dark.

home in Arabic
home in Arabic
admin in Arabic
admin in Arabic
home on a phone
home on a phone
Arabic search
Arabic search
photo viewer
photo viewer

How it's built

Parts
No.PartUsed for
01FastAPIThe API
02SQLAlchemy 2, AlembicModels and migrations
03PostgreSQL 17The database
04Next.js 15, TailwindEvery screen
05httpOnly sessionThe browser only talks to Next.js
06Telegram, OpenWASign-in codes without SMS
07pytest, Playwright24 API tests, 14 browser tests
08MermaidAn engineering handbook
  • Small on purposeOne city, one or two pilot shops, invitations first, no in-house drivers yet.
  • Trust at the doorThe QR or PIN proves the right person got the order, and every refused piece is tracked back.
  • Browser onlyNo app stores. It works like an app on any phone, so it's cheap to ship and update.

The code is private. Screenshots use demo shops, products and people.

next on the benchCodeNote