Fitt —
Built for the designer.
A complete business management mobile app built from scratch for fashion designers — covering orders, customers, deadlines, PDF receipts, and push notifications. I designed, engineered, and deployed everything.
Fashion designers in Nigeria — and across Africa — run complex businesses entirely from WhatsApp, phone notes, and memory. Orders come in through DMs, deadlines are tracked mentally, customers have no receipts, and money management is guesswork. Existing business apps (QuickBooks, Wave, generic order managers) were built for retailers and accountants. None spoke the language of a fashion designer.
Fitt was built to fill that exact gap. A purpose-built tool for designers who take orders, sew to deadline, and need to manage customers, track payments, and generate professional receipts — all from their phone.
fitting_date column and migrated to a
dedicated order_deadlines table with a foreign
key to orders. The migration was written to safely backfill
existing data, preserving all records. This is an example of
thinking about data evolution from the start — not just initial
builds.
auth.uid() = user_id. Policies are tested
explicitly against different auth contexts. No reliance on
application-layer filtering — security is at the data layer.
Impala —
Two apps. One backend.
A multi-vendor Nigerian marketplace with a vendor app, a buyer app, and a shared Supabase backend. I engineered the complete backend and both mobile applications — wallet system, Flutterwave payments, escrow hold periods, sub-order architecture, and full RLS security.
Impala is a marketplace that connects Nigerian vendors to buyers — locally and internationally. Two separate mobile applications share a single Supabase backend: a Vendor App for sellers to manage their storefronts, products, and orders; and a Buyer App for customers to browse, purchase, and track deliveries.
The complexity comes from coordinating two separate user types, separate apps, and a shared backend with strict data isolation — all while handling real money through Flutterwave's Nigerian payment rails.
vendor_id = auth.uid() on sub_orders.
Commission is calculated per sub-order at completion time.