
Client
My Office Asia — flex-office brokerage in Hong Kong working with major flexible workspace operators and independent boutique providers across Hong Kong.
Industry
PropTech · commercial real estate · brokerage
Scope
Discovery → design system → development → production-readiness → client handover.
The old site read like a directory and buried what actually sells the service: a personal advisor model, fast response times, and no direct advisory fee for tenants.


Hong Kong is the only live market today, but market content, brand tokens and SEO metadata are separated from the component layer — adding Singapore or Seoul later means new content, not a new UI.
Strict layering with no upward dependencies: domains/ (types and contracts) → server/ (business logic and DB adapters) → components/ (UI) → app/ (route composition only). Routes never touch Supabase tables directly — a provider boundary keeps the UI independent of the database, so a future backend change never forces a rewrite of the public interface.
App Router with Server Components as the default. Of roughly 400 components, only 83 run on the client — each one earning its place with state or event handlers. Small JS bundle, fast time to interactive.
No reCAPTCHA, no Turnstile: a honeypot field, form-age check that rejects instant replays, per-IP rate limiting and server-side Zod validation keep spam out without making users prove they're human.
After design sign-off we ran a nine-step CSS refactor turning every color, font size, radius, shadow, spacing and motion value into a semantic token. A global change — accent color, spacing scale — is now one edit in globals.css.
Fluid spacing and content caps replace fixed breakpoint jumps, so pages scale smoothly from a 320px phone to an ultra-wide display.

Before handover, the whole system went through an audit-style review covering security, SEO, accessibility and operations.
Production build: 71 statically generated pages, 0 TypeScript errors and a clean strict type-check on handover.

| Frontend | Next.js App Router, React, TypeScript strict, CSS Modules |
|---|---|
| Backend | Supabase (PostgreSQL), Nodemailer (SMTP), Zod, Anthropic API (admin assistant) |
| Infra | Vercel-compatible, Edge runtime, sharp for image processing |
| Quality | ESLint, Prettier, Vitest, Playwright e2e, lint-staged, husky |
| Design | Fully custom DS, ~150 semantic tokens |
If your current site is just a pile of listings — and your team needs a scalable catalog, an admin CMS, SEO architecture and a handover you actually own — this is exactly the kind of platform we deliver.
















