From 46499f4cb95241decc4649c8b4460982e8a5a982 Mon Sep 17 00:00:00 2001 From: derekc Date: Tue, 24 Mar 2026 22:14:24 -0700 Subject: [PATCH] Add about page, update login redirect, and hero button tweaks - Add about.html explaining infinity bottles, why to track, how to start - Hero shows "What is it?" + "Track Your Bottle" when logged out; hides about button when logged in - Redirect after login goes to index (community page) instead of dashboard - redirectIfLoggedIn also sends to index Co-Authored-By: Claude Sonnet 4.6 --- frontend/about.html | 82 +++++++++++++++++++++++++++++++++++++++++++++ frontend/index.html | 6 +++- frontend/js/auth.js | 2 +- frontend/login.html | 2 +- 4 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 frontend/about.html diff --git a/frontend/about.html b/frontend/about.html new file mode 100644 index 0000000..6243271 --- /dev/null +++ b/frontend/about.html @@ -0,0 +1,82 @@ + + + + + + What is an Infinity Bottle? — Bourbonacci + + + + + + + +
+ +

What is an Infinity Bottle?

+ +
+
The Concept
+

+ An infinity bottle — sometimes called a solera bottle or a blending bottle — is a single vessel that you add small pours from other bottles into over time. Every time you open a new bourbon, you contribute a shot or two to the blend. The bottle is never fully emptied; you drink from it while continuing to add to it, so the blend is always evolving. +

+

+ The result is a completely unique whiskey that exists nowhere else in the world — a living record of every bottle you've ever opened, layered together into something greater than the sum of its parts. +

+
+ +
+
Why Track It?
+

+ As your blend grows, it becomes harder to remember what's in it. Tracking each addition lets you see the full history of your bottle — every bourbon that contributed, how much proof went in, and how the estimated proof of the blend has shifted over time. +

+

+ Bourbonacci keeps a running weighted-average proof based on how many shots of each bourbon you added, so you always have a rough idea of what you're drinking. +

+
+ +
+
How to Get Started
+
    +
  1. Find an empty bottle — a 750ml bottle is the classic choice, giving you roughly 25 shots of capacity.
  2. +
  3. Open a bourbon you enjoy and pour 1–2 shots into your infinity bottle.
  4. +
  5. Log the addition in Bourbonacci — name, proof, and how many shots.
  6. +
  7. Repeat with every new bourbon you open. You can add as little as half a shot or as many as you like.
  8. +
  9. Whenever you want to drink from the blend, pour from the infinity bottle and log a removal.
  10. +
  11. Never fully empty it — leaving some in the bottle keeps continuity in the blend.
  12. +
+
+ +
+
Tips for a Great Blend
+
    +
  • Stick to a style — all bourbons, or all ryes, or a mix. Wild departures can throw off the balance.
  • +
  • Higher proof additions will nudge the blend up; lower proof will mellow it.
  • +
  • Don't overthink it. The whole point is that it's always changing.
  • +
  • Label your bottle with the date you started it.
  • +
  • Share the experience — pour a dram for friends and watch their reaction when you tell them what's in it.
  • +
+
+ +
+ Start Tracking Your Bottle + Back to Community Bottles +
+ +
+ + + + + + diff --git a/frontend/index.html b/frontend/index.html index 6f71524..71c375c 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -21,7 +21,10 @@

The Infinity Bottle

One pour from every bottle. An ever-evolving blend that grows richer with every addition.

- Track Your Bottle +
+ What is it? + Track Your Bottle +
@@ -56,6 +59,7 @@ document.addEventListener('DOMContentLoaded', async () => { if (Auth.isLoggedIn()) { document.getElementById('hero-cta').textContent = 'Go to My Bottle'; document.getElementById('hero-cta').href = '/dashboard.html'; + document.getElementById('hero-about').style.display = 'none'; } const container = document.getElementById('user-cards'); diff --git a/frontend/js/auth.js b/frontend/js/auth.js index cf35caf..bc08f89 100644 --- a/frontend/js/auth.js +++ b/frontend/js/auth.js @@ -37,7 +37,7 @@ const Auth = (() => { } function redirectIfLoggedIn() { - if (isLoggedIn()) window.location.href = '/dashboard.html'; + if (isLoggedIn()) window.location.href = '/index.html'; } async function renderNav(activePage) { diff --git a/frontend/login.html b/frontend/login.html index 6a244fa..cf88a2c 100644 --- a/frontend/login.html +++ b/frontend/login.html @@ -70,7 +70,7 @@ document.addEventListener('DOMContentLoaded', () => { const user = await API.users.me(); Auth.saveUser(user); - window.location.href = '/dashboard.html'; + window.location.href = '/index.html'; } catch (err) { alert.innerHTML = `
${err.message}
`; btn.disabled = false;