
Back to Portfolio

Seclusion of Sage

A commercial interior styling and space rental studio website, built solo end-to-end — from client communication to design and development.

Next.jsReactTypeScriptTailwind CSSSanity CMSSwiper

Screenshots

About This Project

Seclusion of Sage(棲仙)is a commercial interior styling studio offering soft furnishing design, space rental, and workshops. The website serves as a portfolio showcase and a service hub for prospective clients.

This was a solo end-to-end project — I handled client communication, requirements gathering, visual design, and full-stack development with no designer or PM involved. The project is structured as a monorepo with two independent packages: a Next.js frontend (web/) and a Sanity Studio CMS (sanity/), so the client can manage all content independently without touching code.

Features

  • Homepage carousel — full-screen image slideshow powered by Swiper
  • Work portfolio — dynamic gallery with individual project pages and lightbox image viewer
  • News & blog — paginated article listing with category filtering
  • Studio gallery — custom justified layout algorithm for an organic photo grid, with separate desktop and mobile handling
  • Service, Profile, and Contact pages — covering interior styling services, space rental, and workshop offerings

Architecture

Content is entirely CMS-driven via Sanity v4. Pages are built as Next.js Server Components using GROQ queries, with ISR (Incremental Static Regeneration) at a 60-second revalidation interval for fast delivery without sacrificing freshness.

Rich text content is rendered via @portabletext/react, and all CMS images are served through @sanity/image-url for on-the-fly resizing and optimisation.

Design

Typography combines Noto Serif TC for Chinese text with a custom Perpetua serif for Latin headings. The layout is fully responsive using Tailwind CSS v4 breakpoints, with CSS custom properties managing key spacing values.