Nyuzi - A circular-fashion marketplace for Kenya connecting clothing donors, upcycling partners, and buyers. React/TypeScript frontend + Supabase backend, with AI-assisted donation triage, M-Pesa checkout, and full donation-to-product traceability.
# Nyuzi
**Nyuzi** (Swahili for "thread") is a circular-fashion platform for the Kenyan
market. It connects three groups of people around one idea — that textiles
don't have to end up in a landfill: donors who give away clothing, shoes, and
accessories they no longer need; upcycling partners who turn those materials
into new products; and buyers who shop those products with full visibility
into the environmental impact and, in many cases, the exact donation a piece
was made from.
This repository contains the complete Nyuzi application: a React/TypeScript
frontend and a Supabase backend (Postgres, Auth, Storage, and Edge
Functions), covering everything from donation intake through checkout,
payment, fulfillment, and post-purchase engagement.
## Project status
Nyuzi is a production-grade application, not a prototype. Every feature
described below is backed by a real database with row-level security
enforced at the data layer, real payment processing, real transactional
email, and has been verified end-to-end with automated regression testing
before being considered complete. The project went through two structured
phases of work: a Production Readiness pass (storage, email, inventory
integrity, legal compliance, deployment configuration) followed by a full
roadmap of customer- and admin-facing features. The only roadmap item not
yet built is a WhatsApp-based donation channel, which was deliberately
deferred because it depends on a Meta Business Account and verified phone
number that only the business owner can set up — see the Roadmap section
below.
## Core features
### Donations and AI-assisted triage
Anyone — signed in or as a guest — can submit a donation describing an item's
title, category, and condition, with an optional pickup request. Donors can
attach photos, which are compressed client-side and uploaded to a private
Supabase Storage bucket accessible only to the donor and Nyuzi admins through
short-lived signed URLs. A donation-category suggestion is g …