Compare commits

..

15 Commits

Author SHA1 Message Date
valknar 16bf611780 refactor: streamline favicon/icon set to match roux convention
SVG + favicon-32.png + apple-touch-icon.png (180) + icon-192/512.png.
Removes favicon.ico and redundant 16/48/96/180px named files.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 17:00:41 +02:00
valknar ea7691b772 feat: generate PNG favicons and apple-touch-icon from SVG
Adds icon-16/32/48/96/180/192/512.png and favicon.ico (multi-size).
Updates site.webmanifest with 192/512 PNG entries and head.html with
apple-touch-icon and explicit PNG/ICO fallback links.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 16:52:22 +02:00
valknar 649ea4f56f fix: rename category "Coffee / Tea" to "Coffee" across recipes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 11:20:13 +02:00
valknar 5023752f58 fix: correct recipe count to 425, scope site count to recipes section
README had 426 (off by one due to _index.md). Homepage and footer now
use where .Site.RegularPages "Section" "recipes" to exclude non-recipe
pages like /imprint/ from the count.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 20:05:20 +02:00
valknar 5461b764f4 fix: remove background rect from favicon.svg for transparent bg
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 19:41:12 +02:00
valknar 0ae9846ce5 feat: define footer menu in hugo.toml, render dynamically in partial
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 19:34:44 +02:00
valknar 10212c75b7 fix: correct Goldschläger umlaut in recipe content
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 19:16:52 +02:00
valknar c4255c8490 fix: restrict hover styles to pointer devices via @custom-variant
Prevents hover state from sticking on touch screens by scoping
hover to actual hover-capable devices.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 19:13:37 +02:00
valknar b835b6247d Simplify footer bottom bar: Imprint | Pivoine
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 19:11:39 +02:00
valknar 1c529d6f20 Add imprint page with privacy/attribution info and footer link
Adds /imprint/ with operator contact, self-hosted Umami analytics
disclosure, content attribution, and disclaimer sections. Links
Imprint in the footer bottom bar next to the pivoine.art credit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 19:09:54 +02:00
valknar b216578289 fix: Jägermeister ingredient German Umlaut 2026-06-07 17:58:32 +02:00
valknar b6af965e48 Track pnpm-lock.yaml for reproducible Docker builds
Required by --frozen-lockfile in Dockerfile stage 1.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 12:57:56 +02:00
valknar 8bd0a9b7ad UX fixes: scroll to top on nav, recipe chip order, caption cleanup
- Disable HTMX scrollIntoViewOnBoost, scroll to true y=0 on afterSettle
  so breadcrumbs are never hidden under the sticky header
- Reorder recipe chips: Alcoholic → Category → Glass
- Remove "Photographed / House pour" caption below recipe image

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 12:50:41 +02:00
valknar 2a36431f85 Add AI-generated cocktail images (425 recipes)
Generated via FLUX.2 pro on Replicate. Each recipe bundle now includes
a cocktail.webp for Hugo's WebP srcset pipeline.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 12:41:30 +02:00
valknar 5ca68c1b04 Update scripts: move CSV to repo root, tune flux-2-pro params
- Point both generate scripts to final_cocktails.csv at repo root instead
  of prototype/uploads/final_cocktails.csv
- Add final_cocktails.csv to repo
- Switch flux-2-pro to input_images[], resolution "2 MP", output_quality 100
- Lower safety_tolerance from 6 → 2

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 12:04:00 +02:00
520 changed files with 2015 additions and 172 deletions
-1
View File
@@ -2,7 +2,6 @@ public/
resources/_gen/
.hugo_build.lock
node_modules/
pnpm-lock.yaml
.env
.env.local
*.DS_Store
+2 -2
View File
@@ -1,6 +1,6 @@
# Bar Pivoine
A moody, editorial cocktail recipe site. 426 recipes from the open cocktail dataset, served with AI-generated photography, client-side search, and a dark amber aesthetic.
A moody, editorial cocktail recipe site. 425 recipes from the open cocktail dataset, served with AI-generated photography, client-side search, and a dark amber aesthetic.
Live at **[bar.pivoine.art](https://bar.pivoine.art)**
@@ -40,7 +40,7 @@ bar/
│ ├── recipes/
│ │ ├── _index.md # Archive front matter
│ │ └── {slug}/
│ │ ├── index.md # Cocktail page (426 bundles)
│ │ ├── index.md # Cocktail page (425 bundles)
│ │ └── cocktail.webp # AI-generated image (optional)
├── layouts/
+2
View File
@@ -4,6 +4,8 @@
@source "../../content/**/*.md";
@source "../../assets/js/**/*.js";
@custom-variant hover (&:hover);
/* ── Design tokens ─────────────────────────────────────────────────────────── */
@theme {
/* Core palette — exact match to design */
+4
View File
@@ -180,3 +180,7 @@ document.addEventListener("htmx:afterSwap", () => {
void main.offsetHeight;
main.style.animation = "page-in 300ms ease-out";
});
document.addEventListener("htmx:afterSettle", () => {
window.scrollTo({ top: 0, behavior: "instant" });
});
+5
View File
@@ -0,0 +1,5 @@
---
title: "Imprint"
description: "Legal notice and privacy information for Bar Pivoine."
layout: "imprint"
---
Binary file not shown.

After

Width:  |  Height:  |  Size: 694 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 727 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 779 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 558 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 590 KiB

+2 -2
View File
@@ -2,9 +2,9 @@
title: "Afternoon"
date: "2026-01-01"
draft: false
description: "Afternoon: a Coffee / Tea served in a Collins Glass. Made with Kahlua, Baileys irish cream, Frangelico, Coffee and more."
description: "Afternoon: a Coffee served in a Collins Glass. Made with Kahlua, Baileys irish cream, Frangelico, Coffee and more."
alcoholic: "Alcoholic"
categories: ["Coffee / Tea"]
categories: ["Coffee"]
glasses: ["Collins Glass"]
ingredients: ["Kahlua", "Baileys irish cream", "Frangelico", "Coffee", "Cream"]
ingredientMeasures: ["1 cl ", "1 cl ", "1 1/2 ", "4 cl hot "]
Binary file not shown.

After

Width:  |  Height:  |  Size: 579 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 KiB

+2 -2
View File
@@ -2,9 +2,9 @@
title: "Apello"
date: "2026-01-01"
draft: false
description: "Apello: a Other / Unknown served in a Collins Glass. Made with Orange juice, Grapefruit juice, Apple juice, Maraschino cherry."
description: "Apello: a Other served in a Collins Glass. Made with Orange juice, Grapefruit juice, Apple juice, Maraschino cherry."
alcoholic: "Non alcoholic"
categories: ["Other / Unknown"]
categories: ["Other"]
glasses: ["Collins Glass"]
ingredients: ["Orange juice", "Grapefruit juice", "Apple juice", "Maraschino cherry"]
ingredientMeasures: ["4 cl ", "3 cl ", "1 cl ", "1 "]
Binary file not shown.

After

Width:  |  Height:  |  Size: 664 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 843 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 671 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 697 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 720 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 797 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 773 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 KiB

+2 -2
View File
@@ -2,9 +2,9 @@
title: "Bible Belt"
date: "2026-01-01"
draft: false
description: "Bible Belt: a Other / Unknown served in a Highball glass. Made with Southern Comfort, Triple sec, Lime, Sour mix."
description: "Bible Belt: a Other served in a Highball glass. Made with Southern Comfort, Triple sec, Lime, Sour mix."
alcoholic: "Alcoholic"
categories: ["Other / Unknown"]
categories: ["Other"]
glasses: ["Highball glass"]
ingredients: ["Southern Comfort", "Triple sec", "Lime", "Sour mix"]
ingredientMeasures: ["2 oz ", "1/2 oz ", "2 wedges ", "2 oz "]
Binary file not shown.

After

Width:  |  Height:  |  Size: 650 KiB

+2 -2
View File
@@ -2,11 +2,11 @@
title: "Big Red"
date: "2026-01-01"
draft: false
description: "Big Red: a Shot served in a Shot glass. Made with Irish cream, Goldschlager."
description: "Big Red: a Shot served in a Shot glass. Made with Irish cream, Goldschläger."
alcoholic: "Alcoholic"
categories: ["Shot"]
glasses: ["Shot glass"]
ingredients: ["Irish cream", "Goldschlager"]
ingredients: ["Irish cream", "Goldschläger"]
ingredientMeasures: ["1/2 oz ", "1/2 oz "]
drinkThumbnail: "https://www.thecocktaildb.com/images/media/drink/yqwuwu1441248116.jpg"
---
Binary file not shown.

After

Width:  |  Height:  |  Size: 650 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 625 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 711 KiB

+2 -2
View File
@@ -2,11 +2,11 @@
title: "Bob Marley"
date: "2026-01-01"
draft: false
description: "Bob Marley: a Shot served in a Shot glass. Made with Midori melon liqueur, Jägermeister, Goldschlager."
description: "Bob Marley: a Shot served in a Shot glass. Made with Midori melon liqueur, Jägermeister, Goldschläger."
alcoholic: "Alcoholic"
categories: ["Shot"]
glasses: ["Shot glass"]
ingredients: ["Midori melon liqueur", "Jägermeister", "Goldschlager"]
ingredients: ["Midori melon liqueur", "Jägermeister", "Goldschläger"]
ingredientMeasures: ["1/2 oz ", "1/2 oz ", "1/2 oz "]
drinkThumbnail: "https://www.thecocktaildb.com/images/media/drink/rrqrst1477140664.jpg"
---
Binary file not shown.

After

Width:  |  Height:  |  Size: 660 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 720 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 KiB

+2 -2
View File
@@ -2,9 +2,9 @@
title: "Brain Fart"
date: "2026-01-01"
draft: false
description: "Brain Fart: a Punch / Party Drink served in a Punch bowl. Made with Everclear, Vodka, Mountain Dew, Surge and more."
description: "Brain Fart: a Party Drink served in a Punch bowl. Made with Everclear, Vodka, Mountain Dew, Surge and more."
alcoholic: "Alcoholic"
categories: ["Punch / Party Drink"]
categories: ["Party Drink"]
glasses: ["Punch bowl"]
ingredients: ["Everclear", "Vodka", "Mountain Dew", "Surge", "Lemon juice", "Rum"]
ingredientMeasures: ["1 fifth ", "1 fifth Smirnoff red label ", "2 L ", "2 L ", "1 small bottle ", "1 pint "]
Binary file not shown.

After

Width:  |  Height:  |  Size: 768 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 752 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 646 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 758 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 KiB

+2 -2
View File
@@ -2,9 +2,9 @@
title: "Cafe Savoy"
date: "2026-01-01"
draft: false
description: "Cafe Savoy: a Coffee / Tea served in a Coffee mug. Made with Coffee, Milk, Triple sec, Brandy."
description: "Cafe Savoy: a Coffee served in a Coffee mug. Made with Coffee, Milk, Triple sec, Brandy."
alcoholic: "Alcoholic"
categories: ["Coffee / Tea"]
categories: ["Coffee"]
glasses: ["Coffee mug"]
ingredients: ["Coffee", "Milk", "Triple sec", "Brandy"]
ingredientMeasures: ["1/2 oz ", "1/2 oz "]
Binary file not shown.

After

Width:  |  Height:  |  Size: 674 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 749 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 750 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 666 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 709 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 617 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 678 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 719 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 568 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 775 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 757 KiB

+2 -2
View File
@@ -2,9 +2,9 @@
title: "Cranberry Punch"
date: "2026-01-01"
draft: false
description: "Cranberry Punch: a Punch / Party Drink served in a Punch Bowl. Made with Cranberry juice, Sugar, Pineapple juice, Almond flavoring and more."
description: "Cranberry Punch: a Party Drink served in a Punch Bowl. Made with Cranberry juice, Sugar, Pineapple juice, Almond flavoring and more."
alcoholic: "Non alcoholic"
categories: ["Punch / Party Drink"]
categories: ["Party Drink"]
glasses: ["Punch Bowl"]
ingredients: ["Cranberry juice", "Sugar", "Pineapple juice", "Almond flavoring", "Ginger ale"]
ingredientMeasures: ["4 cups ", "1 1/2 cup ", "4 cups ", "1 tblsp ", "2 qt "]
Binary file not shown.

After

Width:  |  Height:  |  Size: 671 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 831 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 KiB

+2 -2
View File
@@ -2,9 +2,9 @@
title: "Danbooka"
date: "2026-01-01"
draft: false
description: "Danbooka: a Coffee / Tea served in a Coffee Mug. Made with Coffee, Everclear."
description: "Danbooka: a Coffee served in a Coffee Mug. Made with Coffee, Everclear."
alcoholic: "Alcoholic"
categories: ["Coffee / Tea"]
categories: ["Coffee"]
glasses: ["Coffee Mug"]
ingredients: ["Coffee", "Everclear"]
ingredientMeasures: ["3 parts ", "1 part "]
Binary file not shown.

After

Width:  |  Height:  |  Size: 891 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 686 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 784 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 590 KiB

Some files were not shown because too many files have changed in this diff Show More