zsty.us

Before / After · Case Study

Hive₂O — two Shopify storefronts to one compliant Next.js platform

  • Restaurants

David's beverage company ran two disconnected Shopify stores — hardhoney.com (6% ABV fermented honey) and hive20.com (zero-proof + waters) — with platform fees, locked-down theming, and no way to express the alcohol/non-alcohol split his distribution actually requires. Cloned both storefronts pixel-faithfully into one Next.js app: multi-host middleware serves each domain its own brand, a 21+ age gate and state-level DTC shipping rules guard the alcohol line, and the zero-proof line ships free of restrictions.

Same cinematic brand, zero platform tax — and the compliance split between 6% ABV and 0.0% is finally first-class.
🔒https://hive2o.vercel.app
jackiej.events — modern site

Receipts — measured

Numbers that moved.

2
Shopify stores collapsed into one codebase
was 2
0
Assets ripped + archived (videos, product images, pages)
was 0
0
States on the alcohol DTC ship allowlist
was 0
2
Monthly platform subscriptions
was 2
  • 2 Shopify stores → 1 Next.js codebase, per-host branding
  • 320 assets ripped + archived (6 hero videos, 71 product images, 60 pages)
  • State-level alcohol ship-gating enforced client + server side
  • Checkout persists to Neon; Square payment wiring staged

The pixel diff

Overview, then the walkthrough.

Left: everything the legacy site shipped — frozen in place. Right: an auto-scrolling tour of the rebuild, from hero to booking. No slider to fight with.

Before — the overview
🔒https://hardhoney.com
Before — the overview

This is everything the legacy site had to offer above the fold. No pricing, no calendar, no booking — the funnel ended at a mailto.

After — scroll through what shipped
🔒https://hive2o.vercel.app
After — scroll through what shipped

Auto-scrolls through the modern site so you can see the booking surface, the package grid, the pricing table, and the calendar inline — without leaving this page.

The four beats

Problem · Insight · Build · Outcome.

Scroll past the legacy frame. The four beats land in order. At the end, the modern site fades into the same window.

🔒https://hardhoney.com
Legacy
01 · Problem

Problem

Two Shopify stores for one brand family, double fees, and a hard compliance split — 6% ABV honey mead with state-by-state DTC rules next to a zero-proof line that ships anywhere.

02 · Insight

Insight

The split is routing, not infrastructure: one codebase, host-aware middleware, and compliance modeled as data — an allowlist the cart and the checkout API both enforce.

03 · Build

Build

Full Shopify rip (every page's HTML, all media, both catalogs) → faithful clones of both storefronts, age gate on the alcohol host only, orders persisting to Neon with attestation timestamps.

04 · Outcome

Outcome

Both brands live from one repo with the cinematic hero videos intact, zero platform fees, and an SEO/distribution agent feeding the next growth phase.

🔒https://hive2o.vercel.app
Modern

Architecture

One chain replaced by another. Receipts above.

Old stack
  • Shopify (hardhoney)
  • Shopify (hive20)
  • Widget apps
  • Shopify CDN
New stack
  • Next.js 16 multi-host
  • Neon + Drizzle
  • Repo-owned media
  • Vercel

What changed

Grouped by what kind of system shipped.

Each claim ships with concrete evidence — env vars, table names, cadence chips. No marketing fluff.

Design

One repo, two brands — the split is middleware, not infrastructure

hardhoney.com (6% ABV mead) and hive20.com (zero-proof) render from the same Next.js 16 codebase. Host-aware middleware picks the brand: its own palette, nav, catalog, and compliance posture per domain. The cinematic hero videos and product photography were ripped from both Shopify stores and are repo-owned — no Shopify CDN dependency left.

Before
Two Shopify stores, two themes, two bills, one brand family.
After
One codebase, host-routed branding, zero platform fees.
Retention

Alcohol compliance modeled as data, enforced on both sides

The 21+ age gate mounts only on the alcohol host, and the DTC ship allowlist is a state-level data table the cart UI and the checkout API both consult — a disallowed state can't check out even if the client is tampered with. Orders persist to Neon with attestation timestamps.

  • 37-state DTC allowlist checked client + server side
  • Age-gate attestation timestamp stored on the order
  • Zero-proof host ships free of restrictions — same codebase, different posture
Design

Stripe-primary checkout + Puck page editor + transactional accounts

The latest wave made the platform operator-editable and payment-real: Stripe as the primary checkout rail, Google one-click auth, transactional customer accounts, and a Puck visual editor so page changes don't require a deploy. A Sovos foundation is staged for alcohol tax compliance.

  • Stripe-primary checkout with order persistence to Neon
  • Puck editor for page-level content changes
  • Sovos tax-compliance foundation staged for the alcohol line
Agent backbone

A 320-asset rip that preserved the brand pixel-faithfully

Every page's HTML, all media, and both catalogs were pulled from Shopify before the clone began — 6 hero videos, 71 product images, 60 pages archived. The rebuild is a faithful clone, not a redesign: David's cinematic brand survives intact, minus the platform tax.

Before
Brand assets lived on Shopify's CDN, exportable only piecemeal.
After
320 assets archived and self-hosted; the clone is pixel-faithful.

← All rebuilds

Hive₂O — two Shopify storefronts to one compliant Next.js platform — zsty.us