Categories restructured around the actual sales channel
Flower / rosin / extracts / trim / smalls / pharma (pending supply line). Each is its own surface, not a single 'Products' page.
Before / After · Case Study
Brand restart on a new domain. The legacy site was a static brochure; the rebuild restructures the catalog around the actual sales channel — flower, rosin, extracts, trim, smalls, plus a pharma category that ships when its supply line is ready. Wires Nabis (wholesale), Metrc (batch compliance), and OgLife.app (QR rewards) into one storefront.

The pixel diff
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.

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

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
Scroll past the legacy frame. The four beats land in order. At the end, the modern site fades into the same window.
The legacy site was a brochure. No wholesale integration, no batch-level compliance surface, no shared identity layer across the brand portfolio.
Flower, rosin, extracts, trim, smalls, and pharma (when ready) are real sales channels with different unit economics. The catalog reflects that.
Next.js 15 storefront, Medusa 2.x backend, Nabis wholesale ingestion, Metrc compliance, OgLife identity. Shared infrastructure where it makes sense (chat widget, payment rails); brand-specific structure where it matters (category tree, copy, photography).
Same stack as BMH and LGP means a new SKU added to Buck Mountain inherits the messaging infrastructure, the payment policy, the chat widget, and the QR rewards layer for free.

The legacy site was a brochure. No wholesale integration, no batch-level compliance surface, no shared identity layer across the brand portfolio.
Flower, rosin, extracts, trim, smalls, and pharma (when ready) are real sales channels with different unit economics. The catalog reflects that.
Next.js 15 storefront, Medusa 2.x backend, Nabis wholesale ingestion, Metrc compliance, OgLife identity. Shared infrastructure where it makes sense (chat widget, payment rails); brand-specific structure where it matters (category tree, copy, photography).
Same stack as BMH and LGP means a new SKU added to Buck Mountain inherits the messaging infrastructure, the payment policy, the chat widget, and the QR rewards layer for free.

What changed
Each claim ships with concrete evidence — env vars, table names, cadence chips. No marketing fluff.
Flower / rosin / extracts / trim / smalls / pharma (pending supply line). Each is its own surface, not a single 'Products' page.
Wholesale catalog comes from Nabis; batch-level compliance tracking is Metrc-backed; QR scans on packaging route through OgLife to a unified rewards layer that spans BMH and LGP.