Powered by wtfjoke/setup-tectonic
A modern, automated system for maintaining both web and PDF versions of your professional resume from a single YAML source.
This project uses a single YAML data source to generate both a professional LaTeX PDF resume and an HTML website version. The LaTeX is compiled and rendered automatically via the setup-tectonic GitHub action, and deployed to the web via Vercel, hosted at cv.felipecustodio.dev.
The system also supports Overleaf git sync, allowing use of the Overleaf editor while syncing changes to the git repository.
- Single Source of Truth: Manage your resume data in one YAML file
- Dual Output Formats:
- Professional PDF resume (LaTeX)
- Modern HTML website
- Automated Workflow:
- Update resume by simply editing the YAML file
- Tests automatically run to validate changes
- PDF and HTML outputs generated automatically
- CI/CD pipeline for deployment
- Extensible Design: Easily customize HTML and LaTeX templates
├── index.html # HTML template/output
├── main.tex # LaTeX template/output
├── resume.yaml # Source data (edit this file!)
├── resume.pdf # Generated PDF output
├── assets/ # Static assets for website
└── tests/ # Testing suite
├── test_update_resume.py
├── test_integration.py
└── test_regex_patterns.py
- Python 3.6+
- LaTeX environment (for local PDF generation)
- Git
-
Clone this repository:
git clone https://github.com/yourusername/cv.git cd cv -
Install Python dependencies:
pip install -r requirements-dev.txt
- Edit the
resume.yamlfile with updated information - Run the update script:
python .github/scripts/update_resume.py
- Your updates will be reflected in both
index.htmlandmain.tex
To generate the PDF locally:
tectonic main.texThis project uses two main GitHub Actions workflows:
-
Validate Resume Generation:
- Triggered on pull requests that affect resume sources, templates, generator, or tests
- Runs tests and regeneration checks
- Fails if generated
index.htmlandmain.texare out of sync with committed files
-
Update Resume from YAML:
- Triggered when
resume.yamlis changed - Runs tests to validate changes
- Updates HTML and LaTeX files
- Commits changes back to the repository
- Triggered when
-
Build PDF Resume:
- Builds after the update workflow completes successfully
- Compiles LaTeX to PDF
- Makes PDF available as an artifact
Run all tests:
python -m unittest discover tests/The website is automatically deployed to Vercel when changes are pushed to the main branch.
Edit the index.html file, maintaining the comment markers that serve as placeholders for dynamically generated content.
Edit the main.tex file, maintaining the section markers that serve as placeholders for dynamically generated content.
- wtfjoke/setup-tectonic for LaTeX compilation
- Vercel for website hosting
