Payments · APIs · Product

Haven Skin & Scents

Independent commerce product with M-Pesa checkout, inventory, and order handling.

Problem

A Nairobi product brand needed a storefront that could take orders, reserve stock, and collect payment through Safaricom M-Pesa.

Technical implementation

I built a Next.js storefront with PostgreSQL, product catalog, cart, checkout, order tracking, reviews, and an admin area. Payments use the Safaricom Daraja API for M-Pesa STK Push, with a webhook callback that updates order, payment, and inventory state.

My contribution

Full-stack engineer. I implemented the storefront, APIs, database schema, M-Pesa integration, and operational flows.

End-to-end product: catalog, checkout, M-Pesa STK Push, webhook handling, inventory reservations, and admin tools.

Outcome

Delivered a production-ready storefront with payment webhooks and order handling.

A working commerce system on Kenya's M-Pesa rails, with stock and payment state kept in sync.

Technologies

TypeScriptNext.jsReactPostgreSQLREST APIsM-Pesa DarajaWebhooks

Related work