Work

Scrubmee

A cleaning marketplace where property hosts can post and pay for jobs, while verified cleaners find nearby work and track their earnings.

Year
2026

React 19 · TypeScript · Hono · Cloudflare Workers · Cloudflare D1 · Cloudflare R2 · Paystack · Zod

Live Platform
Scrubmee public website

What the product does

Scrubmee connects property hosts with cleaning professionals. Hosts create property records, publish paid cleaning jobs, review completion evidence, and keep a clear payment record. Cleaners complete identity checks, find nearby work, check in on location, submit before-and-after evidence, and withdraw earnings to mobile money. Field agents support cleaner onboarding and administrators handle verification, disputes, and payment operations.

What it needed to solve

Property cleaning work is often coordinated across messages, calls, cash payments, and separate spreadsheets. Hosts lose visibility across properties, while cleaners have little certainty about job details, completion approval, or payment. Scrubmee gives both sides a shared job record from posting through payout.

Scrubmee homepage on a mobile viewport

What I worked on

  • Designed the role-based journeys for hosts, cleaners, field agents, and administrators
  • Built the job, evidence, review, dispute, payment, and earnings workflows
  • Implemented Cloudflare-native data, file storage, scheduled work, and deployment

Implementation details

System

  • React and TypeScript frontend with separate public and role-specific product areas
  • Hono API running on a Cloudflare Worker with Zod validation and role-aware authorization
  • Cloudflare D1 for operational records and R2 for property images, identity documents, and job evidence
  • Paystack payment, refund, transfer, and webhook flows with idempotent ledger records
  • Nearby job search using indexed coordinates and SQL Haversine distance calculations

Lessons

  • Marketplace trust depends on the job record. Scope, payment, evidence, status changes, and disputes need to stay connected.
  • Financial state needs explicit invariants and idempotent provider callbacks. A polished interface cannot compensate for an ambiguous ledger.
  • Location data should reveal only what each role needs. Cleaners can discover nearby work without receiving private access details before acceptance.