Kelvin Warui Kiondo
Back to work

Mamichie Healthcare

E-commerce and membership platform for a UK health brand. Live, taking payments, still shipping.

A rebuild with a launch date attached. First commit on 9 June; Stripe subscriptions were taking real payments on 20 June. Eleven days from empty repository to revenue.

What went in during that window: tiered memberships billed as Stripe subscriptions, a member dashboard on Supabase, transactional confirmations through Resend, Calendly and Zoom for consultation booking, and a clinical article library rendered from markdown with proper table support. British English throughout — the brand is UK, and American spellings were the first thing the client caught.

The bug that cost a day was environment variables. The Supabase client worked locally and failed in production with credentials that looked byte-identical in both places. They weren't: the values carried trailing whitespace, and Vercel's build cache was serving stale copies on top of that. It's the kind of bug where everything looks correct in both places and only the behaviour disagrees.

  • PERIODJune 2026 — present
  • TO FIRST PAYMENT11 days
  • STACKNext.js, Supabase, Stripe, Resend
  • ROLESole developer

Payments

Memberships are recurring rather than one-off, which means the interesting states are the ones after checkout: renewal, failure, downgrade, cancellation. Stripe owns billing truth; the application reconciles against it rather than duplicating it, so a webhook that arrives late produces a delay, not a wrong entitlement.

Content pipeline

The clinical library is markdown with remark-gfm, so the client writes articles containing real tables without touching a CMS or a component. Thumbnails resolve through an image map, which keeps article files portable.

Working with a non-technical client

Roughly a fifth of the commit history is content edits made directly through GitHub's web interface. That was a deliberate trade: the client can fix a typo at midnight without me, at the cost of a messier history and the occasional merge to resolve. For a two-person project that was the right call.