This repository contains the contents of ijosh.com β a Hugo-based jamstack site, migrated from SquareSpace and deployed on Cloudflare Pages.
Pushes to the master branch are picked up by Cloudflare and deployed live. Develop on a
branch other than master, then merge when ready.
The site is built to be self-contained at runtime: fonts and social icons are served
from this domain (no Google Fonts / CDN calls on page load), favicons and the mark from
brand.ijosh.com (also ours, from jshvn/brand), CSS is bundled +
minified + fingerprinted, and security headers ship via static/_headers.
Requires Hugo (extended) and go-task.
task serve # live-reloading dev server (hugo server -D -w)
task build # production build β public/ (hugo --minify --gc)
task --list # all tasksCloudflare Pages settings (dashboard): build command
hugo --minify --gc(Hugo only minifies HTML with that flag; CSS/fonts are minified by the asset pipeline), and pin theHUGO_VERSIONenv var to the tested extended version (currently0.163.3; extended is required for WebP image processing).
- Fonts β self-hosted in
static/fonts/(latin + latin-ext subsets) with@font-faceinassets/css/fonts.css. Regenerate from Google Fonts only if the font set changes. - Icons β the social/meta icons are inlined as SVG at build time from
assets/icons/(sourced from Font Awesome Free 6.x). No icon font / CDN is loaded. - CSS β
assets/css/{fonts,split,style}.cssare concatenated, minified, and fingerprinted into one/css/bundle.<hash>.cssinlayouts/partials/head.html.
The page is meant to look identical across refactors, so the rendered pixels are locked to a
golden baseline. First run creates a .venv-visual/ (Pillow) and uses the machine's Chromium.
task visual:check # fail if the build drifts from the golden baseline
task visual:bless # re-capture the baseline (run after an intended UI change)
task visual:vs-live # compare the local content panel against the live ijosh.comGolden images live in tests/visual/golden/ (committed). Diff artifacts land in
tests/visual/out/ (gitignored). After any intentional visual change, re-run
task visual:bless and commit the updated baseline.
Adapted from the Hugo Split theme and merged with the color scheme of the older Squarespace site. A license was purchased so the theme attribution links can be removed.