
Selling furniture you can't sit on first
Comforto is a direct-to-consumer furniture brand selling sofas, chairs and tables you'd normally want to test in a showroom — online only. I rebuilt their storefront from the ground up on a headless stack, where the product can't be touched and the page is the only thing doing the convincing.
[ 01 — Problem Statement ]
The old store buckled under its own catalog
The legacy site ran on a WooCommerce theme that was never built for a heavy, image-first catalog. Every product carried a dozen high-resolution photos, and the storefront shipped all of them, unoptimized, on first load.
The result was a store that felt slow exactly where it mattered most — the product pages. On mobile, the largest sofa pages took over six seconds to become interactive. Analytics told a blunt story: a significant share of mobile visitors bounced before the hero image had even painted.
For a brand whose entire pitch is “trust us, it’s beautiful and worth it,” a sluggish, janky page quietly undermined every product it tried to sell.
Product pages — the highest-intent screens — were the slowest in the catalog. Every extra second cost conversions.
Material detail — boucle, the hero product line[ 02 — Architecture ]
Key engineering decisions
Headless, not a monolith
Payload CMS owns content and merchandising; a Next.js storefront owns the experience. The two ship independently — the team can restructure a collection or launch a sale without waiting on a deploy, and I can refactor the front-end without touching their data.
Images as a first-class concern
Every product photo is served as AVIF/WebP at responsive sizes with a blurred placeholder, lazy-loaded below the fold. The catalog’s biggest liability became its biggest performance win — the same imagery now arrives a fraction of the previous weight.
Server components + ISR
Catalog and product pages render on the server and cache at the edge, revalidating only when content changes in the CMS. Shoppers get static-fast pages; the team gets near-instant content updates without a rebuild.
A checkout that never blocks
The cart is optimistic and local-first, so adding an item is instant and never waits on the network. Stripe handles payment behind a checkout flow built to degrade gracefully when something upstream is slow.
[ 03 — Storefront Walkthrough ]
What shipped
A content-driven storefront where the merchandising team controls everything, and the engineering keeps the whole catalog fast — from landing to checkout.
[ 04 — Metrics & Results ]
Fast paid off
The new storefront launched to all traffic and was measured against the legacy store's baseline over the following quarter.
[ 05 — What's Next ]
Future considerations
Personalised recommendations
Surfacing related products and "complete the room" bundles based on browsing behaviour — turning a single-product visit into a multi-item cart.
Internationalisation
The architecture is ready for multi-locale content and multi-currency pricing; the next step is rolling out the first non-domestic market end to end.
“View in your room” AR
The hardest part of selling furniture online is scale and fit. A WebAR preview would let shoppers place a sofa in their own space before they ever commit.