A single YAML source that builds both a static site and a PDF.
resume.yaml— the one source of truth for all content.pdf/resume.pdf— the PDF, for job applications.- GitHub Pages hosts the site and the PDF.
./build.shThe script creates .venv, installs requirements.txt, then runs render.py.
render.py writes:
resume.json— the content as the JSON Resume format (with custom fields).index.html— the static site, styled with the theme fromresume.yaml.pdf/resume.pdf— the same themed page printed to PDF (via WeasyPrint).
Re-run ./build.sh after each edit to resume.yaml.
- Python 3.
- Pango for WeasyPrint. Install it with
brew install pango.
.github/workflows/publish-site.yml builds and deploys the site on push.
Enable it once in the repo settings:
- Open Settings > Pages.
- Set Source to "GitHub Actions".
The page includes a Download PDF link pointing at pdf/resume.pdf.
resume.yaml— content and theme (single source of truth).resume.schema.json— schema for resume.yaml.render.py— generates resume.json, index.html, and the PDF.requirements.txt— Python dependencies.resume.json,index.html,pdf/— generated output.
Edit resume.yaml only. Do not edit the generated files.