https://github.com/rafageist/cv
Personal CV built from Markdown, rendered to PDF via Pandoc and GitHub Actions
https://github.com/rafageist/cv
ci-cd curriculum-vitae cv documentation github-actions html-to-pdf markdown pandoc pdf-generation personal
Last synced: 4 months ago
JSON representation
Personal CV built from Markdown, rendered to PDF via Pandoc and GitHub Actions
- Host: GitHub
- URL: https://github.com/rafageist/cv
- Owner: rafageist
- Created: 2026-01-09T15:15:10.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2026-01-10T20:46:24.000Z (6 months ago)
- Last Synced: 2026-01-11T04:12:35.815Z (6 months ago)
- Topics: ci-cd, curriculum-vitae, cv, documentation, github-actions, html-to-pdf, markdown, pandoc, pdf-generation, personal
- Language: Python
- Homepage: https://rafageist.com
- Size: 1.3 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CV PDF Build
This repo builds a one-page PDF CV from Markdown using Pandoc and a PDF renderer.
## Structure
- `sections/left.md` - photo, name, bio, contact, QR
- `sections/middle.md` - work experience, education, events, languages
- `sections/right.md` - skills and last updated placeholder
- `styles/cv.css` - layout and typography
- `assets/` - images (profile, QR)
- `manifest.yaml` - manual version used in the PDF file name
- `scripts/build_cv.py` - build pipeline
## Build
Requirements:
- Pandoc
- Python 3.11+
Linux (GitHub Actions uses this path):
```bash
python scripts/build_cv.py
```
Windows:
```powershell
python scripts/build_cv.py
```
Notes:
- On Windows, the script prefers WeasyPrint if available (and GTK is configured).
If WeasyPrint fails, it falls back to Edge/Chrome, then Playwright if installed.
- To use WeasyPrint on Windows, set `GTK_PATH` to your GTK root and install
WeasyPrint (`pip install weasyprint`).
## Output
The PDF is created in `build/` with this name:
`Rafael_Rodriguez_Senior_Software_Engineer_.pdf`
The version comes from `manifest.yaml`:
```yaml
version: "2026.01"
```
## Updating content
- Edit Markdown in `sections/`.
- Update styles in `styles/cv.css`.
- Replace images in `assets/`.
- Update `manifest.yaml` when you want a new output filename.
The "Last updated" date is set dynamically at build time.
## GitHub Actions
Workflow: `.github/workflows/build-cv.yml`
- Builds on push to `main` and on manual run.
- Uploads the PDF as an artifact.
- If a tag starts with `v`, it creates a GitHub Release with the PDF attached.