Source and build tooling for brfid.github.io. Hugo renders the site, blog, and resume. A VAX and PDP-11 pipeline renders the landing-page bio before deployment.
Install these prerequisites:
- Git
- Python 3.11 or newer
- Hugo extended 0.156.0 or newer
- Docker, only for the vintage pipeline
Initialize the checkout and its local Python environment:
git submodule update --init
python3 -m venv .venv
.venv/bin/python -m pip install -e '.[dev]'
.venv/bin/python -m playwright install chromium
make check_envThe repository vendors PaperMod as a Git submodule and serves self-hosted Newsreader and IBM Plex Mono fonts. It has no front-end package install or build step.
make previewOpen http://localhost:1313/. The command clears deployment-only provenance inputs, builds the public resume page and phone-free site/resume.pdf, then starts Hugo with live reload. Restart it after changing resume.yaml, or after changing resume layout or print CSS.
Use make preview-drafts to include draft posts. Set PREVIEW_PORT to change the port:
make preview PREVIEW_PORT=1314- Copy
resume.private.example.yamlto the gitignoredresume.private.yaml. - Replace the example
basics.phonevalue. - Run
make resume-pdf-application.
The command leaves a complete phone-free public build under site/ and writes the private PDF to local/bradley-fidler-resume.pdf. It rejects a missing or invalid private overlay and any private PDF destination inside the public site tree.
make check
make verify-sitemake check runs Ruff, formatting checks, mypy, pytest, Pylint, and Vulture. make verify-site clears deployment-only provenance inputs, builds Hugo in a clean directory, and checks routes, feeds, linked artifacts, structured data, navigation state, and the site-wide indexing policy. CI runs both commands.
Use make test to run pytest without the other checks. Use make help to list all supported targets.
make hugo-buildThe command clears deployment-only provenance inputs, syncs the public YAML inputs, and writes a clean build to site/. Use make resume-pdf to add the public PDF. Deployment uses the separate resume-pdf-public target, which fails unless the vintage bio, build log, and pipeline status have all been staged.
Every rendered HTML page contains noindex, nofollow, noarchive, nosnippet, noimageindex. Hugo emits no sitemap. robots.txt leaves HTML crawlable so crawlers can read the page-level directive and blocks the PDF, feeds, and pipeline status.
Create a draft page bundle:
make new-post POST_SLUG=maintenance-windowEdit hugo/content/posts/maintenance-window/index.md and place referenced assets beside it. Production publishes the post only after its front matter sets draft: false.
Working drafts stay outside this public repository. Add only approved copy and public assets.
The pipeline transforms three public strings into the landing bio:
site.yaml name and headline plus resume.yamlbasics.summary -> VAX troff -> PDP-11 nroff -> brad.bio.txt -> Hugo data
For local execution, validation, implementation, and image promotion, see the vintage pipeline operations guide.
A push to main runs the vintage pipeline, builds Hugo and the public PDF, verifies the published contracts, and deploys to GitHub Pages. Add [nopublish] to the commit message to skip deployment. Run the Publish site workflow manually to repeat a deployment without a new commit.
Production accepts only the immutable VAX and PDP-11 image digests pinned in scripts/vintage-runner.sh. It does not build fallback images.
| Path | Function |
|---|---|
site.yaml | Public name, headline, and profile links |
resume.yaml | Public resume data and shared bio summary |
resume.private.yaml | Optional local phone overlay; gitignored |
hugo/ | Site content, templates, configuration, styles, and fonts |
resume_generator/ | Bio, build-log, vintage-contract, and PDF generators |
scripts/ | Site verifier and SIMH orchestration |
STATUS.md | Current operational state and queue |
docs/integration/INDEX.md | Vintage pipeline operations |
docs/archive/ | Retired-path registry; not operating guidance |