Escrowd — Commission Escrow with Paymob

Featured
01

Overview

Escrowd — Commission Escrow with Paymob — Cursor × Paymob buildathon build: Arabic-first escrow for illustration commissions — deposit starts work, balance unlocks the file

Cursor × Paymob buildathon build: Arabic-first escrow for illustration commissions — deposit starts work, balance unlocks the file

02

The Problem

Buildathon challenge #03, "Brief to delivery": Nour, 27, an illustrator in Alexandria, takes commissions through Instagram DMs. Clients ghost her after half the work is done, nothing is written down so scope and price get argued after the fact, and she sends the same twelve pricing messages to every new enquiry.

03

The Solution

One bio link → an Arabic-first brief with a live price calculator → a deposit on Paymob Unified Checkout starts the work → the artist uploads preview and final → the balance payment unlocks a signed download. Paid state is written only after the HMAC-SHA512 webhook verifies, with Transaction Inquiry as fallback.

Technologies used

13

Languages

TypeScriptPostgreSQL

Platforms

Responsive Design

Backend, data & cloud

Supabase

Tooling & delivery

Vercel

Experience & UI

Next.jsReactTailwind CSSArabic / English

Other

next-intlPaymobHMAC WebhooksResend
04

Key Outcomes

  • Two real Paymob payments (deposit + balance) on one order row, each a fresh Intention with a single-use client secret and a typed special_reference.
  • Client needs no account: a secret 12-char order URL, frozen brief receipt, and a private Supabase bucket that withholds the final file until the balance clears.
  • Shared pricing function on client and server, studio dashboard with KPIs and a one-step-at-a-time status machine, 8 node:test suites covering HMAC field order and tampered amounts.