"Two friends, two brews, one podcast, many topics."
All content © 2021–2026 by Friends with Brews
Pour a cold one (or two) or a hot one (or two) and enjoy!!!
Split license — see LICENSE for the exact boundaries:
- Code (templates, build scripts,
migrate/tooling, site CSS/JS): MIT. - Content (episodes, transcripts, show notes, artwork, brew photos, and the episode/brew data files): © Friends with Brews, all rights reserved. It's in the repo because the site is built from it, not as an invitation to republish it or train on it.
Static site built with Zola (migrated from Astro 2026-08-14 — see
ZOLA-MIGRATION.md for the full story). No npm, no Node, no JS build step.
./dev.sh— writing mode: live reload at http://127.0.0.1:1111; edits undersrc/are auto-converted as you save. (/search needs a pagefind index from a prior build; /explore only works in production.)./preview.sh— full production build served at http://127.0.0.1:1818../build.sh— build only (convert → zola → postbuild → pagefind →dist/)../deploy.sh— build + rsync to production (also ships the vector DB).
One-time setup on a fresh clone:
brew install zola
uv venv .venv && uv pip install --python .venv/bin/python "pagefind[extended]"src/content/,src/data/— the authoring tree, written by the episode pipeline in~/Scripts/Sites/fwb/(and by hand for fixes).content/,data/— generated bymigrate/convert.pyon every build; don't edit generated files (the converter owns and prunes them;_index.mdfiles andcontent/pages/are the hand-maintained exceptions, marked as such in their comments).templates/— Zola/Tera templates;templates/icons.htmlis generated bymigrate/gen-icons.py.static/— served as-is (CSS, fonts, images, .htaccess).migrate/— the permanent build steps (convert/postbuild) plus the parity tooling from the migration.
PNGs must be 8-bit (rgb24/rgba). Zola's webp encoder fails on 16-bit
PNGs (Astro's sharp used to tolerate them). Retrobatch already writes 8-bit;
before adding a photo by hand, check with file photo.png — if it says
16-bit, normalize it:
ffmpeg -i in.png -pix_fmt rgb24 out.png # no transparency
ffmpeg -i in.png -pix_fmt rgba out.png # has transparency (keeps alpha)Photos go in src/assets/images/brews/ (resized at build) and
static/images/brews/ (full-size click-through originals).