LandingPage
J. Rieger & Co.
A Page That Knows
What Day It Is
A quarterly, distillery-exclusive whiskey release needed a home that could keep pace with the calendar on its own. The answer was a page driven by release dates, not by someone remembering to update it.

The Problem
J. Rieger & Co. was bringing back the Private Stock name for Bourbon Heritage Month. The first release, September 19, was the first 10-year age-stated bourbon in the distillery's history. That date was locked, and the entire SPIRITS navigation was being rebuilt around it.
Private Stock doesn't sit on a shelf. It's a quarterly, distillery-exclusive, while-supplies-last drop. A standard product page would be wrong within weeks unless someone remembered to update it every quarter, forever. This page had to represent time: what's available now, what's next, and what to say when there's nothing to announce.
Challenge
The business rules weren't finished when the build started. Access tiers, release cadence, and how long a release should stay "current" all got clarified mid-build. I was designing behavior that couldn't be fully specced up front, against a date that wasn't moving.
The Goal
A page that maintains itself. No status field to flip, no quarterly checklist. Separate the release series from Private Stock Society, the existing membership program, without losing the connection between them. Give the name's history a home. And structure the data so a future archive of past releases can run off the same source.
Methods
Information architecture came first. Private Stock was originally scoped as a subsection of an existing page. I pushed for a standalone page under SPIRITS, because a recurring release series needs room to grow.
Then I split it in two: a hub for the current release cycle, and a History of Private Stock sub-page. The Prohibition-era story behind the name didn't live anywhere on the site. It earned its own space rather than getting squeezed into an intro paragraph. Nesting static pages under static pages isn't well documented in classic Wix Editor, so I confirmed it worked before committing the architecture to it.
A third page, a timeline of past releases, was scoped and deliberately deferred. A timeline with one entry looks broken.
Everything runs off a single CMS collection, built to drive both the hub and the eventual archive.

Insight
The page's state is a function of the calendar. On any given day, what it should show can be derived from release dates alone. So I dropped the Current / Upcoming / Archived status field entirely and drove everything from the release date compared against today. Adding one CMS record is the entire quarterly update.
Design Process
The hub has three sections: Current Release, Upcoming Release, and Coming Soon. Deciding which ones show took five rounds of logic revision, each one triggered by a business rule getting clearer, not by code cleanup. The biggest shift came when Current needed to hold through the whole quarter instead of switching off the day after release.
Where it landed:
- Current shows the most recent release dated before the start of next month. It holds from the 1st of its release month until the next release's month begins.
- Upcoming shows the next release in line, except in the gap between a release's month starting and its release date passing.
- Coming Soon shows whenever Upcoming doesn't. The two never appear together.
Ideation & Prototyping
I didn't solve the logic in the abstract. I walked a real calendar and asked what the page should say on specific days.
| Date | Current | Upcoming | Coming Soon |
|---|---|---|---|
| Aug 31 | · | Sept 19 | · |
| Sept 1 to 19 | Sept 19 | · | |
| After Sept 19 release | Sept 19 | Dec 19 | · |
| Dec 1 | Dec 19 | · |
Tracing those moments by hand caught boundary conflicts a written spec would have missed.

Key Decisions
Fail safe. Every section loads collapsed and only expands once the query confirms it should. A slow or failed query falls back to Coming Soon instead of showing sections that contradict each other.
Leave the no-code path when it runs out. Wix's dataset filter only accepts fixed values, so it couldn't express "on or after today." I populated the upcoming release dates in code instead. Only the next release shows its name. Everything after it reads "TBA," keeping future drops a surprise while the cadence stays visible.
Model what's always true. Proof is calculated from ABV, not stored, so the two can't drift. Spirit type is free text because the distillery invents categories as it goes. Sold Out is the one manual override, since no date can predict a same-morning sellout.
Don't put words in a real judge's mouth. The name traces to a 1927 federal ruling that let the Rieger family keep their whiskey during Prohibition. An attributed quote would have made a better pull-quote, but I couldn't verify one. The page uses the paraphrase.
Final Design
Both pages are live. The hub leads with the current release, then the quarterly cadence, framed around the only two ways to guarantee a bottle: Private Stock Society or the First Pour Event. The Saturday walk-in is presented honestly as first-come, first-served.
The polish lives in the small details. The ABV / Proof / Format line is one generated string, so it stays centered as content changes, pairing Gotham Black labels with Gotham Book values. Prices always render to two decimals. Optional sections like Distiller's Notes collapse along with their headers, so no heading is ever left orphaned.

URL: jriegerco.com/our-spirits/private-stock-whiskey
URL: History of Private Stock
Impact
The page launched on schedule for the September 19 release, alongside a rebuilt SPIRITS navigation. The quarterly update is now a single CMS entry. Nobody flips a status or hides a section. And the Private Stock name now carries a documented origin story it never had on the site before: a name earned in federal court, not assigned as a tier label.
Takeaways
The hardest part wasn't a layout. It was behavior nobody could fully define up front. The right answer came from walking concrete dates, and each business clarification reshaped the logic, not just the copy.
Modeling the data around what's always true is what let that logic absorb five revisions without a schema rebuild. And a page that runs itself has to fail gracefully, which is why every section starts hidden until the data says otherwise.
Let's Build Something