Skip to main content
All work
2025
Forma Strata screenshot 1
Live site

Case study

Forma Strata logoForma Strata

Design In Layers

200+

Products

95+

Lighthouse

2

Stores aggregated

IndustryLuxury E-commerce
LocationLondon, UK
Timeline6 weeks
Year2025
ServicesE-commerce, Website Development

01 / OVERVIEW

About the project

Forma Strata is a luxury rug and furniture brand specializing in handcrafted New Zealand wool rugs and curated vintage furniture. We built a complete e-commerce experience with Shopify headless commerce.

Results

Luxury commerce, headless performance

A refined digital storefront that communicates luxury through minimal design, rich typography, and curated imagery. The headless Shopify architecture delivers sub-2-second page loads while educational content blocks tell the brand story alongside the product catalog.

Highlights

01

200+

Products

02

95+

Lighthouse

03

2

Stores aggregated

Built with

FigmaSupabaseNext.jsGA4TypeScriptReactKlaviyoVercel

02 / THE STORY

The Problem: Two Stores, Two Currencies, One Brand

Displace Agency built KURA, a multi-store Shopify aggregator that unifies two distinct Shopify stores into a single customer experience. Forma Strata sells luxury rugs and furniture in USD, while Parure sells curated jewelry in GBP. KURA connects both stores through the Shopify Storefront API, presenting unified product browsing, cart management, and checkout across different currencies and catalogs.

This is not something Shopify handles natively. Shopify Markets can manage multiple currencies within a single store, but it cannot aggregate independent stores with separate inventories, separate fulfillment pipelines, and separate product catalogs into a unified frontend. We needed to build that layer ourselves.

Shopify has no native solution for aggregating independent stores into a unified shopping experience. We had to architect that layer from scratch.

By the numbers

2

Independent stores

USD + GBP

Currencies

99%+

Email delivery

1

Unified cart UX

Architecture: Next.js as the Aggregation Layer

We built KURA on Next.js with TypeScript, using the Shopify Storefront API to pull product data from both stores simultaneously. The frontend is a single application, but behind every product card is a query that knows which store to hit and which currency to display.

The Storefront API was the right choice over the Admin API because it is designed for customer-facing reads: products, collections, pricing, and availability. We created a unified product type that normalizes the differences between the two stores, so the frontend components do not need to know or care which store a product comes from.

Each store maintains its own checkout flow. When a customer adds a Forma Strata rug and a Parure necklace to their cart, the system manages two separate Shopify carts behind the scenes. The user sees a single cart interface with clear currency labels. At checkout, they are routed to the appropriate Shopify checkout for each store's items.

  • Storefront API queries to both stores in parallel
  • Unified product type normalizes cross-store differences
  • Separate cart management per store with unified UI
  • Currency-aware pricing displayed contextually
  • Collection pages that blend products from both catalogs

Currency Handling: More Than a Symbol Swap

Handling multiple currencies is deceptively complex. It is not just about showing a $ or a £ symbol. Customers need to understand what they are paying, in what currency, and whether there are any cross-border implications. Mixing this up erodes trust instantly.

We implemented currency handling at the data layer, not the presentation layer. Every product carries its native currency as part of the normalized type. The cart calculates subtotals per currency and displays them separately. There is no fake currency conversion , a GBP product stays in GBP, a USD product stays in USD. This is honest commerce, not a cosmetic trick.

The product cards show the currency code alongside the price, and filtering allows customers to browse by store or see everything together. Collection pages that blend both stores always maintain clear currency attribution so there is never ambiguity about what a price means.

Supabase: The Data Layer Behind the Storefront

While Shopify handles products and checkout, Supabase powers everything else. User profiles, wishlists, browsing preferences, and the invitation system all live in a PostgreSQL database managed through Supabase. Row-level security policies ensure users only access their own data.

We chose Supabase over building a custom backend for three reasons: real-time subscriptions for live inventory indicators, built-in authentication that could support the invitation flow, and a management API that let us iterate on the data model without writing migration scripts by hand.

The Supabase instance also serves as the bridge between the two Shopify stores and the KURA platform. Product metadata that does not live in Shopify , like cross-store recommendations, curated collection groupings, and editorial content , is stored and served from Supabase.

The Invitation System: Controlled Access with Resend

KURA is not a public-facing marketplace. Access is controlled through an invitation system. Existing members can invite new users, and each invitation is tracked, validated, and expires after a set period. This creates exclusivity, which aligns with the luxury positioning of both Forma Strata and Parure.

The invitation pipeline works like this: a member generates an invite through their dashboard. Supabase creates an invitation record with a unique token and expiration timestamp. Resend sends a branded email with the invitation link. When the recipient clicks through, the token is validated against Supabase, and if valid, they are guided through account creation.

We chose Resend over alternatives because it handles transactional email reliably without the configuration overhead of services like SendGrid. The invitation emails are HTML templates that match KURA's visual identity, sent from a custom domain. Delivery rates sit above 99%, and we track open and click events to help the client understand invitation conversion.

The invitation system is not just access control. It is a growth mechanism. Each existing member becomes a distribution channel for new customer acquisition.

  • Unique token generation with configurable expiration
  • Branded email templates via Resend with custom domain
  • 99%+ delivery rate with open and click tracking
  • Automatic token invalidation after use or expiry
  • Member dashboard showing invitation status and conversions

Figma as the Single Source of Truth

The design for KURA lived in a single Figma file that served as the source of truth for the entire project. Every component, every state, every responsive breakpoint was specced in Figma before we wrote a line of code. This is not how we work on every project, but for KURA's complexity, it was essential.

Having a comprehensive Figma file meant we could validate the multi-store UX patterns before building them. How does the cart look with items from two currencies? What happens when one store is out of stock but the other is not? How does the invitation flow feel from email to account creation? We answered all of these questions in design before committing to code.

Results and Lessons

KURA launched as a functional multi-store aggregator with invitation-based access, unified browsing across USD and GBP catalogs, and a backend that handles the complexity without exposing it to the customer.

The biggest lesson: do not underestimate the complexity of multi-currency commerce. What sounds simple , show products from two stores , touches checkout flows, cart management, pricing display, inventory sync, and customer expectations in ways that compound quickly. Starting with a clear data architecture in Supabase and Figma-driven design saved us from refactoring work that would have doubled the timeline.

  • Two Shopify stores aggregated into a single frontend
  • USD and GBP products displayed with native currency accuracy
  • Invitation system processing member referrals via Resend
  • Supabase backend handling profiles, wishlists, and cross-store data
  • Architecture designed for additional store integrations
Written by Santiago Lobo2026-01-22

03 / SCREENS

01 / 01
Forma Strata gallery 1
04/ WHAT'S NEXT

Build something similar

Want a luxury e-commerce platform like this?

We can build your version in 6 weeks. Same stack, same engineering, same documentation.

All work