Highlights
- Prices are always re-calculated on the server; the browser is never trusted
- Payment confirmation is race-safe, with exactly one confirmation email every time
- A CRM and newsletter system built into the CMS, with consent handling
- Marketing staff run content and campaigns without admin access
- Migrated from the old domain without losing search rankings
The problem
Kira Scales Limited is our sister company in industrial weighing, with a head office in Ikeja and a branch in Idumota, Lagos. It supplies, installs and calibrates weighbridges and industrial scales across Nigeria. Its old website didn't rank, couldn't take payments, and every lead arrived as an unstructured phone call.
Industrial equipment is a high-value B2B purchase: buyers want a formal proforma invoice for approval, often pay by bank transfer, and need to know where their order is. The new platform had to support all of that, and let non-technical staff run the content and marketing.
What it does
- Online store: a product catalogue with categories, a cart, and checkout by Paystack or direct bank transfer.
- B2B purchasing: printable proforma invoices with per-product VAT, quote and service request forms, and order tracking.
- Order lifecycle: status emails sent automatically as orders move from pending to paid to delivered; bank-transfer orders wait until staff confirm payment.
- CRM: contacts are created and de-duplicated automatically from every quote, proforma, order and sign-up, each with an activity history.
- Newsletters: campaigns targeted by source, tag or staff owner, test sends, and unsubscribes and bounces synced back automatically.
- CMS: 14 collections with live preview, drafts, redirects, site search, a form builder, CSV import/export and a branded admin dashboard, with separate admin and marketing roles.
- SEO: search-intent landing pages, city landing pages, structured data, a sitemap index and a Google Merchant Center product feed.
Architecture
- Edge
- Vercel edge proxy (legacy domain redirect)
- App
- Next.js App Router (RSC + ISR)
- API route handlers
- Payload CMS admin
- Core
- Payload local API
- Pricing & checkout
- Webhooks
- Scheduled jobs
- Data & services
- MongoDB
- Blob storage
- Paystack
- Newsletter provider
- Merchant Center feed
Engineering challenges
Trustworthy payments under a race condition
The customer's browser redirect and the payment provider's webhook can both arrive at the same moment. Prices are never taken from the client. Every cart line is re-priced on the server with the same rules as the storefront, and the amount actually paid is checked. The order moves to "paid" in a single conditional update on its current status, so exactly one caller wins and the confirmation email goes out exactly once.
Emails lost to serverless shutdown
Some confirmation emails never arrived because the serverless function finished before the send completed. Sends are now awaited on the verification path and also triggered from the webhook path, so either route delivers.
Changing domains without losing search rankings
The site moved from the old domain to a new one. A full map of 300+ legacy URLs was collapsed to single-hop permanent redirects at the edge, with paths preserved, plus canonical URLs, sitemap fixes and structured data so search engines could transfer existing rankings.
A consent-aware CRM inside the CMS
Contacts from many sources are merged into one record per email or phone. Consent is explicit, unsubscribes and hard bounces sync back through signed webhooks, and a contact is never re-subscribed automatically. Role-scoped access lets marketing staff work without full admin rights.
Results
The platform is live at kirascales.com, with integration tests covering pricing, checkout, proforma VAT and campaign audiences, and end-to-end tests of the purchase flows.
Gallery

