SaaS Platform · Malaysia

Suntide storefront platform

Multi-tenant SaaSStorefront + CMS + consoleStripe subscriptionsTrilingual EN/中文/BM
Suntide storefront platform
Snapshot

A multi-tenant storefront platform built and operated by Undertide — small shops sign up, bind a card, and get a themed online store in minutes. Three surfaces in one system: a buyer-facing storefront with WhatsApp-native ordering, a self-serve merchant CMS, and a platform console that runs every tenant.

Business
Retail commerce SaaS
Market
Malaysia
Format
Custom System
Status
Delivered
3
Storefront languages
19
Database migrations
89
Automated tests (unit + e2e)
RM49
Per month, one price point
How the system runs
Sign up
Store auto-provisioned
Bind card
Stripe Checkout
7-day trial
Full storefront live
RM49/month
Webhook-driven billing
Self-running
Auto-lock on lapse
Business context

Small retail in Malaysia already sells through WhatsApp — that is where orders actually close. What shops lack is everything before the chat: a browsable catalog, prices and variations, a presentable brand. Suntide is Undertide's own product answer: a subscription storefront platform where a florist or cake studio gets a real online store that funnels into the WhatsApp conversation they already run.

The challenge

The platform had to serve three very different users at once — buyers browsing a catalog, non-technical merchants running their shop, and an operator managing every tenant — while billing, trials, and store locking ran themselves with no manual operations.

  • Merchants are non-technical — every shop operation from product photos to billing had to be self-serve
  • Buyers close orders in WhatsApp — checkout had to produce clean, structured orders without forcing online payment
  • One codebase serves every store — tenants needed hard data isolation and their own visual identity
  • Billing had to run itself: real-card trial, monthly charge, and automatic store locking on lapse
  • Storefronts had to work in English, Chinese, and Bahasa Malaysia, chosen per shop
How Undertide responded
Decision 01

WhatsApp-native ordering

Instead of bolting on a payment gateway buyers don't expect, checkout assembles the cart — variations, gift message, totals — into a prefilled WhatsApp message with a sequential order number. The merchant receives a structured order in the channel they already work in, and nothing about how they transact has to change.

Decision 02

Three surfaces, one platform

A buyer-facing storefront, a merchant admin, and a platform console share one codebase and one database. Merchants manage products with variations, drag-and-drop images with automatic compression, categories, hours, languages, and their own Stripe billing; the console handles onboarding, per-store pricing, trial management, suspension, and full offboarding.

Decision 03

A billing lifecycle that runs itself

Signup auto-provisions the store, Stripe Checkout binds a real card into a 7-day trial, and RM49/month billing proceeds from there — driven by signed, idempotent webhooks. If payment lapses, a three-state lock model closes the storefront gracefully and the merchant's admin shows exactly how to reopen it. Pricing lives in one place, with per-store overrides.

Decision 04

Isolation with identity

Every table is keyed by store, row-level security is default-deny, and all writes go through server-side actions — cross-tenant access is structurally closed and was verified by proof-of-concept attack. On top of that isolation, each shop picks an accent color that themes its whole storefront, guarded so merchants can't pick an unreadable palette.

Under the hood

One Next.js codebase on Vercel with a Supabase Postgres core — 19 migrations, row-level security default-deny with server-action writes, signed idempotent Stripe webhooks, and a unified warm design system where the merchant's accent color is the only per-store exception.

What was delivered
01Buyer storefront: catalog, categories, price filters, product variations
02WhatsApp-native checkout with sequential order numbers
03Merchant CMS: products, images, categories, settings, billing
04Platform console: onboarding, pricing overrides, trials, suspension
05Self-serve signup → Stripe trial → RM49/month auto-billing
06Automatic store locking on lapse (3-state lock model)
07Trilingual storefronts — EN/中文/BM, merchant-selectable
08Per-store accent theming with readability guard
What changed
  • A merchant can now go from signup to a live, themed storefront in minutes — no developer involved
  • Buyers now browse a real catalog with variations and order through a prefilled WhatsApp message
  • Merchants now run products, images, categories, settings, and billing entirely self-serve
  • The operator now manages every tenant — pricing, trials, suspension, offboarding — from one console
  • The subscription lifecycle is verified end-to-end in live mode with a real card
  • The platform ships with 59 unit tests and 30 end-to-end tests, mobile-audited across 13 routes

Need a similar result for your business?

If your market needs a product like this — or your business needs a platform of its own — tell us what you're thinking. Undertide will assess fit and recommend the right scope.