Case study · Keenu One

One codebase, many merchant domains.

I'm lead author of the Keenu One storefront — a multi-tenant ordering platform where a single Next.js codebase is built to serve many restaurants, each on their own branded domain. The first merchant is live at sirocpk.com.

ROLE
Lead author
STACK
Next.js 16 · React 19
LIVE
sirocpk.com
SCOPE
Menu · cart · checkout · theming

Context

Keenu One is a restaurant-commerce platform. The storefront is the customer-facing piece: browse a menu, customise items, check out, track the order. The hard requirement was multi-tenancy — one codebase serving N restaurants, each on their own domain (e.g. sirocpk.com), with their own branding, menu and configuration. No per-merchant forks.

Architecture

Tenant resolution at the edge

Every request resolves its tenant before anything renders. Middleware maps the incoming host to an org id, signs it into an HMAC cookie, and forwards it on a header the browser can't spoof. Client-supplied identity headers are stripped and rebuilt server-side, so one merchant can never read another's data.

Server-rendered, SEO-first

Pages are server-rendered with structured JSON-LD (Restaurant, Menu, Product, Breadcrumb), dynamic sitemaps and per-merchant metadata — because a storefront that doesn't rank doesn't sell. Cart and client state run on Zustand, versioned and scoped per-org so switching merchants never leaks a basket.

A manifest-driven theme system

The part I'm most proud of. Each theme is a module that declares its design tokens and capabilities in a manifest; the storefront reads that manifest and renders accordingly. It's built as a house of themes — architected to host many — and today it ships and serves one production theme (Siroc) live on sirocpk.com.

The storefront, live

The first merchant — Siroc — running in production on sirocpk.com: branded header, server-rendered menu, category navigation, and the Zustand-backed cart. The same codebase renders any merchant's theme from its manifest.

Siroc storefront on desktop — branded header, food carousel, category navigation and menu, served from the multi-tenant Keenu One codebase
Desktop — sirocpk.com. Branded header, category nav and server-rendered menu, all driven by the merchant's theme manifest.
Siroc storefront on mobile — category cards, menu list with prices and add-to-cart, served from the multi-tenant Keenu One codebase
Mobile — same codebase, same theme manifest, responsive down to the phone.

Honest scope

I'm the lead author / primary engineer of the storefront — I wrote the large majority of it (the substance: menu, cart, checkout, order tracking, theming and SEO), with a few other engineers contributing along the way. I don't claim the whole Keenu One platform: the merchant dashboard, the Go BFF and the backend services are the wider team's work — on the merchant dashboard I built the storefront-config / theming editors. One merchant is live today; the multi-theme system is built for many and currently serves the first.

Stack

Next.js 16 (App Router, React Server Components), React 19, TypeScript, Tailwind CSS 4, Zustand, TanStack Query. Server-side integration with a Go BFF. SSR + JSON-LD for SEO. Self-hosted fonts and a custom CDN image loader.