Cook Without a Recipe — a free course in cooking fundamentals. Published at https://justcook.besthappypanda.com
- HTML 45.5%
- CSS 43.5%
- JavaScript 7.8%
- Shell 3.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Every sibling now has a domain, so the sync script rewrites all of them to their real URLs instead of dropping the ones with nowhere to point. |
||
| public | ||
| tools | ||
| .gitignore | ||
| .pages | ||
| README.md | ||
Cook Without a Recipe
A free course in cooking fundamentals: the five dials, a heat ladder drawn to scale, salt and ratio calculators, and ten techniques in the order they build. Static HTML — no build step, no framework, no dependencies. Installs as an offline app.
Live at https://justcook.besthappypanda.com
Layout
.pages bovine-pages-server config (enables the site, sets the domain)
public/ everything that gets served
tools/ helper scripts, not published
Bovine serves the contents of public/ — nothing above it is web-visible.
Deployment
The dev folder is ~/Documents/knitting site/cooking, which also holds three
unrelated sites, so this repo is kept separate and public/ is rebuilt from it:
sh tools/sync-from-dev.sh
git add -A && git commit -m "Update site" && git push
Pushing to main is the deploy — bovine reads the default branch directly,
there is no build step.
Two things that fail silently
- Bump the service worker cache after any asset edit.
public/sw.jsserves assets cache-first, so an edited stylesheet or script stays invisible to anyone with the app installed untilconst CACHE = "cook-without-a-recipe-vN"changes. No error is produced. - The repo name must stay
Justcook.besthappypanda.com— capital J. Bovine verifies domain ownership against a DNS TXT record holdingsha256("owner/repository"), and the record for this domain was created from the capitalised form. The name is therefore load-bearing and case-sensitive even though the domain itself is not. Rename the repo and the custom domain silently 404s while the pages URL keeps returning 200. If it must be renamed, recomputeprintf '%s' "adam/NEWNAME" | shasum -a 256and update the TXT record to match, in that order.