work about Ready to talk?
BOS - personalised whisky

Barrels of Scotch

Project Overview

Barrels of Scotch lets people own a single cask of Scotch whisky outright. Buyers can hold it as a maturing asset in a bonded Scottish warehouse, or turn it into a bespoke, privately labelled bottling when the time is right. It is a high-value, low-SKU proposition built entirely on trust: customers commit significant sums to something they cannot taste up front, for an experience that unfolds over years.

The brand arrived at Uncover Commerce as a new launch with no digital presence at all. There was nothing to migrate and nothing to inherit. The job was to build, from a blank page, a storefront that could introduce an unfamiliar idea, educate prospective buyers, guide them through a complex purchasing decision and keep reassuring them long after the sale.

The engagement had two distinct but tightly connected deliverables.

    A premium custom Shopify storefront, extended with a bespoke component library of around 45 sections, designed to move customers from brand introduction, through education, into configuration and purchase.A bespoke Shopify application, built in Node.js on a Supabase Postgres database, powering the interactive Bottle Builder at the centre of the experience and the post-purchase cask portal. It was deliberately architected as a separate service so the same logic can later drive a headless front end or native mobile apps.
uncovercommerce.com
HomepageCask product pageCask collection page

The Challenge

Selling a Complex, High-Trust Product Online

Cask ownership is not an impulse purchase. A customer is buying a full barrel, registered in their name, held in bond in Scotland, matured over years and eventually bottled to their own specification. Every cask carries its own distillery, region, age, cask type, volume, ABV, projected values and hold periods. Communicating all of that clearly, without overwhelming a first-time buyer, was the central design problem.

That single problem created a compounding set of requirements:

    Prospective buyers needed to understand an unfamiliar concept before they could reasonably be asked to commit thousands of poundsPricing and detailed cask data had to sit behind a login, a deliberate "inside/outside wall" separating public brand and educational content from gated commercial detailThe purchase involved many interdependent choices (cask, storage, bottling, sampling, insurance, additional services) that a standard product page could not accommodateThe experience had to feel unmistakably premium, because in a market where trust is fragile, a generic storefront would undermine the proposition entirely

Modelling What Shopify Does Not

Shopify is an excellent commerce engine, but it has no native concept of cask ownership, multi-step configuration with live pricing, or a post-purchase view of privately held maturing assets. Much of the domain logic the business depended on simply had no home in a standard theme.

The solution needed somewhere to store and process configuration options, pricing rules and ownership context, and to surface them securely to the right logged-in customer, without bending Shopify into something it was never designed to be.

Making a Bottle Feel Real Before It Exists

The hardest part of the Bottle Builder was not the form logic. It was showing a customer, with confidence, what their finished bottle would look like: a label they had named and personalised, wrapped around the bottle shape they had chosen, in one of seven label designs with its own typography and layout. The preview on screen had to match the print-ready artwork pixel for pixel, otherwise the one thing the customer was paying for would arrive looking different from what they had approved.

Building for a Future That Was Not Being Built Yet

Barrels of Scotch is Phase 1 of a longer roadmap. The business anticipates a richer customer portal, automated redemption workflows, maturation history and an eventual move to a headless architecture and native mobile apps. The Phase 1 build had to deliver a launch-ready store today while laying foundations that would not need to be torn up later.

Our Approach

Platform: Shopify Advanced with a Fully Custom Theme

Shopify Advanced was selected as the commerce engine for its higher API limits, advanced reporting, multiple staff accounts and the headroom a growing operation and third-party integrations will need. Rather than adapting a stock theme, the storefront was built as a fully custom theme extended with a bespoke Barrels of Scotch component library of around 45 sections.

This modular approach gave the client a flexible, reusable set of building blocks (hero storytelling, parallax sliders, editorial content, filterable cask grids and more) so pages can be composed and re-composed without developer involvement. The product structure was kept deliberately lightweight, optimised for a high-value, low-SKU catalogue where each cask is a considered purchase rather than one of thousands of similar items.

A Custom App for What the Theme Could Not Hold

At the heart of the technical solution is a bespoke Shopify app, built in Node.js and hosted independently of Shopify. Rather than forcing configuration logic into the theme, the app acts as a dedicated service: it houses the business rules, pricing logic and request records, and exposes them to the storefront through a private API and Shopify-authenticated app surfaces.

Its responsibilities include:

    Serving the multi-step Bottle Builder, cask selector and shipping gate into theme pages as authenticated Web Components, delivered through the Shopify App ProxyStoring configuration options, pricing rules, quotes and customer requests in a Supabase Postgres database, accessed through Prisma ORM with row-level security enabled on every tableHandling Shopify OAuth, Admin and Storefront API calls and webhook processing server-sideCompositing print-ready label artwork on the server and generating the correct Shopify line items when a configured bottling is added to cartPowering the private, login-gated post-purchase area where customers see the casks they ownProviding an embedded admin, built with Shopify Polaris, so staff manage records and settings from inside Shopify Admin

One principle shaped the data model: Shopify stays the source of truth. Cask ownership is derived live from Shopify orders and customers, product imagery lives in Shopify media, and the app stores Shopify IDs for context rather than duplicating cask metadata. That keeps the two systems from drifting apart and means the client never has to maintain the same fact in two places.

Education First, Then Configuration

The storefront is structured around a single low-friction journey: learn, explore, configure, purchase. Brand and storytelling pages introduce cask ownership through structured narrative, rich visuals and a consistent premium voice, before guiding visitors toward the available casks and the configurator.

The inside/outside wall is central to the design. Public visitors can browse the brand story, how-it-works content and the cask range, but price, detailed specifications and the configurator itself appear only once a customer is authenticated. It is a deliberate choice that reflects the relationship-driven, considered nature of the purchase and keeps the public experience clean and aspirational. Social login through Google and Meta lowers the barrier to that first account.

The Bottle Builder

The Bottle Builder is the centrepiece of the entire experience: the moment a customer stops reading about cask ownership and starts shaping something of their own. It is a guided wizard that turns a raw cask into a finished, personalised bottling, and the whole store is designed to lead people toward it.

Customers move through a clear sequence, cask first, then storage, then the bottle itself, working through bottling, sampling, insurance and additional services before personalising the finished product: bottle shape, label design, closure and the name that will sit on the label. Rather than a wall of options, the builder breaks a complex, interdependent decision into intuitive steps with live feedback, so buyers always know where they are and what each choice means.

What makes it work is the sense of control it gives. Pricing updates in real time as selections change, in the customer's own currency, so there is never any ambiguity about what is included, what is optional or how the total is reached. That is a critical reassurance when the sums involved are significant. A review step summarises the full specification before anything is committed, and the configured bottling is held in the basket for 72 hours with a clear deadline, after which it expires cleanly rather than lingering indefinitely.

The label preview is where the builder earns its keep. As the customer types their name and switches between the seven label designs, an offscreen canvas renders the flat label composite and Three.js wraps it around a partial cylinder matched to the chosen bottle, so they see their label curving around the glass. The same flat composite is reused as the print-ready artwork, and a shared text-fitting routine clamps and wraps the custom name identically in the browser and on the server. What the customer approves on screen is, pixel for pixel, what gets printed.

The builder is reachable from two routes: a "Bottle Now" path immediately after a cask purchase, and a redemption path from the customer portal for owners who decide to bottle later. Both share the same logic, rules and pricing in the app, so there is one configurator to maintain as the ruleset evolves.

A Reassuring Post-Purchase Experience

Ownership is only the beginning of the relationship, so the post-purchase experience was built to reassure. Built on Shopify's New Customer Accounts, the private portal shows customers the casks they own with key information such as type, volume, status and warehouse location. Embedded forms let them submit redemption requests, valuation requests and concierge or general enquiries, with the team notified automatically when a request comes in. There is no pressure to act, and a clear line to a human at every stage.

Technical

The solution is composed of distinct layers, each with a defined responsibility.

Presentation Layer

A custom Shopify theme extended with around 45 bespoke sections. It handles every customer-facing interaction: browsing, educational content, cart, checkout and account, plus the surfaces where the Bottle Builder and other app components are injected. The configurator components themselves are Web Components built with Preact and Vite, shipped as a single bundle so they can be dropped into any Shopify page, or any future front end, with one script tag.

Application Layer

A Node.js application hosting the core business logic for configuration, pricing, label compositing and cask management. It exposes a private API that powers the embedded configurator and portal, integrates with Shopify through the Admin and Storefront APIs, and renders print-ready label artwork server-side using the same layout configuration the browser preview uses.

Data Layer

Supabase Postgres accessed through Prisma ORM, storing configuration options, pricing rules, quotes and request records: the domain-specific data Shopify does not model natively. Row-level security is enabled across every table. Shopify remains the source of truth for products, orders and customers, and cask-specific attributes such as distillery, age, ABV and cask finish live as Shopify metafields that both the storefront and the label renderer read from.

Infrastructure

The application runs on a Hostinger KVM2 virtual private server (Ubuntu Linux, 2 vCPU, 8 GB RAM, 100 GB NVMe, 8 TB monthly bandwidth), providing dedicated, isolated resources for API requests, webhook processing and background jobs. Cloudflare sits in front as a global edge layer, handling DNS, SSL/TLS termination and bot protection, filtering malicious traffic, scraping and DDoS attempts before they reach the server.

For reliability, Sentry captures application errors and exceptions within the API, giving visibility into runtime issues and stack traces, while PM2 manages the process with automatic restarts so the service recovers gracefully from unexpected failures. The Hostinger VPS, Supabase and Cloudflare accounts are all held in Barrels of Scotch's own name, with access granted to Uncover, keeping the client in ownership of their infrastructure from day one.

Headless-Ready by Design

A deliberate architectural decision was to place all business logic in the application, behind a defined API, rather than in the theme. In Phase 1 the front end is the Shopify theme and embedded app surfaces; in future the same documented API, and the same Web Components, can power a fully decoupled headless front end (React or Next.js, for example) or native iOS and Android apps, displaying cask portfolios, running configurations and submitting requests without rebuilding the underlying logic.

Storefront Foundations

The store was built mobile-first and to AA accessibility standards as a baseline, with multi-currency support from launch, tracking and analytics wired in (GA4, Meta and Klaviyo among them) and email capture integrated. SEO was approached with both traditional search and AI-driven, intent-based discovery in mind: semantic HTML, structured data, a clean content hierarchy and clear internal linking, so the store is built to be found and referenced across both.

Third-Party Integrations

Integration Purpose
Shopify Advanced Commerce engine: products, cart, checkout, customer accounts, orders
Supabase (Postgres) Application database for configuration options, pricing rules, quotes and request records, accessed via Prisma ORM
Shopify App Proxy & App Bridge Securely serves the Bottle Builder and portal into the storefront and powers the embedded admin
Three.js Live 3D label preview wrapped around the chosen bottle
Cloudflare DNS, SSL/TLS termination, bot mitigation and DDoS protection at the edge
Hostinger KVM2 VPS Dedicated Ubuntu server for the application, API, webhooks and background jobs
Sentry Error and exception monitoring for the API
PM2 Process management with automatic restarts
GA4, Meta Pixel & Klaviyo Analytics, advertising pixels and email capture
Adobe Fonts Brand typography, loaded ahead of canvas rendering so labels preview and print identically
9:41
HomepageCask product pageCask collection page

Key Features Delivered

Storefront & UX

    Custom Shopify theme extended with around 45 bespoke sectionsModular, reusable section library enabling flexible page creation without developer involvementLearn, explore, configure, purchase journey with a consistent premium feelInside/outside wall: public brand and educational content, with pricing and cask detail gated behind loginStorytelling and brand-education pages introducing the cask-ownership conceptGoogle and Meta social login for frictionless account creationMulti-currency pricing from launchMobile-first, responsive design built to AA accessibility standardsSEO and AI-search-ready foundations (semantic HTML, structured data, clean hierarchy)Analytics and pixels (GA4, Meta, Klaviyo) and email capture integrated

Bottle Builder

    Guided multi-step wizard: cask, storage, bottling, sampling, insurance and additional servicesBottle personalisation including shape, one of seven label designs, closure and custom namingLive 3D label preview, with the flat label composite wrapped around the chosen bottle in Three.jsPixel-matched print artwork: the preview and the server-rendered 2000 x 2000 label share one layout configuration and text-fitting routineConfig-driven typography and positioning per label design, fed by Shopify metafields (distillery, age, ABV, cask finish, volume)Real-time pricing that updates as selections changeClear review step summarising the full specification before commitmentAdd-to-cart generating the correct Shopify line items, with a 72-hour basket hold and clean expiryTwo entry routes: "Bottle Now" after purchase and redemption from the customer portalLogic and pricing rules housed in the custom app, delivered as authenticated Web Components

Post-Purchase Cask Management

    Private, login-gated portal on Shopify New Customer Accounts displaying the customer's owned casksCask records showing type, volume, status and warehouse locationEmbedded forms for redemption, valuation and concierge or general enquiriesAutomatic team notifications when a request is submittedEmbedded Polaris admin for staff to manage records and settings from Shopify Admin

App, Data & Integration

    Node.js application hosting all configuration, pricing, compositing and cask-management logicSupabase Postgres data layer via Prisma ORM with row-level securityPrivate API powering embedded storefront experiences, designed for future headless and mobile front endsShopify OAuth, App Proxy, Admin and Storefront API integration and webhook processingHostinger KVM2 VPS with Cloudflare edge protection (DNS, SSL/TLS, bot mitigation)Sentry error monitoring and PM2 process management for stabilityInfrastructure accounts owned by the client, with a documented handover covering Supabase, GitHub, server and domain

Stakeholders & Collaboration

Stakeholder Role Contribution
Barrels of Scotch Client Defined the cask-ownership proposition, configurator rules, pricing structure and the ownership data behind the customer portal. Owns all infrastructure accounts from day one.
Uncover Commerce Design, Development & Architecture Designed and built the custom Shopify theme, the Node.js application, the Bottle Builder and the post-purchase cask portal, and defined the API that future headless and mobile front ends will use.

Considerations

Configurator Rules and Pricing Logic

The configurator depends on clearly defined steps, pricing structures and dependencies between options. These were captured and confirmed during the specification phase before build began. Where such rules evolve they carry additional development work, so early alignment was essential, and some scope was consciously trimmed to protect the launch: SMS one-time passcodes were descoped when no reliable off-the-shelf option existed, and social login was limited to the providers Shopify supports natively.

Ownership Data and Structure

The customer portal depends on a reliable source of ownership data. Anchoring ownership to Shopify orders avoided a second system of record, but it also means off-site sales agreed verbally need to be recorded in Shopify for the cask to appear in a buyer's account. Phase 1 provides lightweight tooling for this; bulk editing, document upload and audit logs are future enhancements.

Public vs Private Access

The inside/outside wall was defined as a clear permissions model early in the project, as additional rules about who sees what quickly increase complexity.

A Phased Roadmap

Certain capabilities were intentionally held back from Phase 1 to keep the launch focused and robust: a Total Cost of Ownership calculator, a fully bespoke headless storefront, native mobile apps, automated document generation, saved configurations, and advanced portal features such as real-time stock sync and valuation engines. The Phase 1 architecture was deliberately designed so these can be added on top of the existing API and data model rather than requiring a rebuild.

Summary

The Barrels of Scotch storefront gives a brand-new, high-trust venture a digital home that matches the premium nature of what it sells. By pairing a custom Shopify theme with a bespoke Node.js and Supabase application, Uncover Commerce delivered a store that educates first-time buyers and then hands them the Bottle Builder, an interactive, real-time tool that turns an intimidating, high-value decision into an engaging one, before reassuring them long after the sale through a private cask portal.

Crucially, the business logic lives in the application rather than the theme: behind a defined API, on infrastructure the client owns, protected at the edge and monitored for stability. That decision makes the Phase 1 store a launch-ready product today and a foundation for tomorrow. A headless front end, native apps and a richer customer portal can all be built on the same domain model without starting over.

A platform built not just for the venture Barrels of Scotch is launching today, but for the digital cask-ownership experience it is set to become.

Big plans for your Shopify store?
Let's talk.