Skip to content
George Wanjii
← All workCommerce

Sabibu Africa

Years of WooCommerce moved onto a modern stack. Not one record retyped.

Client
Sabibu Africa
Role
Migration and build
Year
2025
Sabibu Africa screenshot
data types migrated by script
6data types migrated by script
records re-entered by hand
0records re-entered by hand

The problem

A growing spirits store had outgrown WooCommerce. The catalogue was slow, the storefront looked like a template, and years of products, orders, customers and editorial content were locked inside a WordPress database that nobody wanted to retype.

What I built

  1. 01Wrote the WordPress to Payload migration scripts covering products, categories, blog, media, customers and orders, the whole history moved by code, verified, and repeatable rather than hand-copied.
  2. 02Rebuilt the storefront headless on Payload CMS 3 and Next.js, with product families (Moran and Symba), category browsing, cart and checkout.
  3. 03Kenya-first payments through M-Pesa and Pesapal, alongside the usual rails.
  4. 04Cloudinary for media so a catalogue of bottle photography loads fast on a phone.
  5. 05Deployed to a VPS under PM2 rather than serverless, matching the client's hosting constraints.

Stack

  • Next.js
  • Payload CMS 3
  • PostgreSQL
  • TypeScript
  • Cloudinary
  • M-Pesa
  • Pesapal

Result

A premium dark-and-gold storefront on a modern stack, with every historical record intact. The migration scripts mean the move is reproducible, a dry run, a verification pass, then the real thing, instead of a one-way leap of faith.