J. Rieger & Co:
Private Stock Whiskey
A 1927 court ruling, a quarterly release cycle, and a page that knows what day it is. (2026)
The problem
J. Rieger & Co. was relaunching 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 fixed, and the entire SPIRITS navigation was rebuilt around it.
Private Stock isn't a product that sits 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. The 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. The access tiers, the release cadence, and how long a release should stay "current" all got clarified mid-build. I was designing behavior I couldn't fully spec up front, against a date that wasn't moving.
Goals
Build a page that maintains itself: no status field to flip, no quarterly checklist. Distinguish the release series from Private Stock Society, the existing membership program, while keeping the connection clear. Give the name's history a home. And design the data so a future archive of past releases can run off the same source.
Methods
I started with information architecture. 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 scale.
I split it into two pages: a hub for the current release cycle, and a History of Private Stock sub-page. The Prohibition-era story behind the name didn't exist on the main Private Stock page or anywhere else on the site. It deserved its own space rather than being compressed into an intro paragraph. The URLs nest as static pages under static pages:
URL: Private Stock Whiskey
URL: History Of Private Stock
That multi-level nesting isn't well documented in classic Wix Editor, so I confirmed it worked before committing the information 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 one 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 the page should show can be derived from release dates alone. So I dropped the idea of a Current / Upcoming / Archived status field and drove everything from releaseDate compared against right now. Adding a 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 triggered by a business rule getting clearer, not by code cleanup. The biggest shift came when Current needed to persist through the whole quarter instead of flipping off the day after release, which moved its query from the release date to the start of next month.
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 are mutually exclusive.
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 – 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. All three sections load collapsed and only expand once the query confirms they should. A failed or slow query falls into an empty state, with a fallback to Coming Soon, instead of showing contradictory sections.
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 repeater in code instead. Only the next release shows its title; everything after displays "TBA" by position, keeping future drops a surprise while the cadence stays visible.
Model what's always true. Proof is calculated from ABV rather than stored, so the two can't drift. Spirit type is free text because JRC 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 home during Prohibition. A specific attributed quote would have made a better pull-quote, but I couldn't verify one. The page uses the paraphrase.
Solution + 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 has to flip a status or hide a section. And the Private Stock name now carries a documented origin story that didn't exist anywhere on the site before: a name earned in federal court, not assigned as a tier label.
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.
Smaller details carry the polish. The ABV / Proof / Format line is one generated string so it stays centered as content changes, pairing Gotham Black labels with Gotham Book values for contrast. Prices always render to two decimals. Optional sections like Distiller's Notes collapse with their headers, so no heading is ever left orphaned.
Takeaways
The hardest part wasn't a layout. It was behavior that couldn't be known up front. The right answer came from walking concrete dates, and each business clarification reshaped the logic rather than just the copy.
Modeling the data around what's always true is what let the logic absorb five revisions without a schema rebuild. And a page that runs itself has to fail gracefully when something goes wrong, which is why every section starts hidden and only appears once the data says it should.