Design · Development · Marketing
The Florist — multi-merchant storefront platform
The Florist (own product)

Context
Small retailers in Malaysia — florists, cake studios, balloon shops — already sell through WhatsApp. That is where orders actually close. What they lack is everything before the chat: a browsable catalogue, prices and variations, a presentable brand. A custom website is out of reach for most of them, and generic store builders assume an online checkout their customers do not use.
We built The Florist as our own product to close that gap: a subscription storefront platform where a shop gets a real online store that funnels into the WhatsApp conversation it already runs. It is designed, built, operated and marketed by us — which makes it the clearest example of all three of our lines working on one thing.
Challenge
- Three very different users on one platform: buyers browsing a catalogue, non-technical merchants running their shop, and an operator managing every tenant.
- 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: card binding, trial, monthly charge, and automatic store locking on lapse, with no manual operations.
- Storefronts had to work in English, Chinese and Bahasa Malaysia, chosen per shop.
What we did
Design
We designed one warm, unified storefront system where the merchant's accent colour is the only per-store exception. Each shop picks a colour that themes its whole storefront, with a readability guard so nobody can pick an unreadable palette. The merchant admin and the platform console share the same design language, so a shop owner never feels like they have left the product.
Development
One Next.js codebase serves many isolated stores:
- Buyer storefront — catalogue, categories, price filters, product variations, and a cross-store directory so shoppers can discover merchants.
- WhatsApp-native checkout — the cart (variations, gift message, totals) is assembled into a prefilled WhatsApp message with a sequential order number, and the order is recorded in the platform so nothing lives only in a chat thread.
- Merchant CMS — products, images with automatic compression, categories, ordering, bulk pricing, settings, opening hours, languages and billing.
- Platform console — onboarding, per-store pricing overrides, trials, suspension and full offboarding.
- Billing lifecycle — signup auto-provisions the store, Stripe Checkout binds a card into a trial, and monthly billing proceeds from there, driven by signed, idempotent webhooks. If payment lapses, a three-state lock model closes the storefront gracefully and tells the merchant exactly how to reopen it.
- Isolation — 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 a proof-of-concept attack.
- Bulk import — merchants can pull their existing Instagram catalogue into products instead of re-entering it by hand.
Marketing
We run merchant acquisition ourselves: onboarding florists onto the platform, an early-bird pricing offer, and per-merchant traffic pages so each shop is discoverable through search as well as through its own WhatsApp link.
Outcome
- Live at theflorist.asia with 50+ merchants on the platform, and growing.
- A merchant can go from signup to a live, themed storefront in minutes — no developer involved.
- Buyers browse a real catalogue with variations and order through a prefilled WhatsApp message; every order is also recorded on the platform.
- Merchants run products, images, categories, settings and billing entirely self-serve.
- The operator 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.
- Trilingual storefronts (EN / 中文 / BM), selectable per shop.
- Scope
- Own product, Multi-tenant SaaS, Storefront + merchant CMS + console, Stripe subscriptions, WhatsApp-native ordering, Trilingual EN/中文/BM
- Outcome
- Live at theflorist.asia with 50+ merchants on the platform — a florist goes from signup to a themed online store in minutes, with no developer involved.