A small Python-program to generate my CVs from a Markdown file.
Find a file
Konstantin Fickel a1a8ddf893
All checks were successful
Continuous Integration / Build Package (push) Successful in 1m31s
Continuous Integration / Lint, Check & Test (push) Successful in 1m36s
build: switch from devenv to nix flakes with uv2nix
- Replace devenv setup with pure nix flakes using uv2nix, pyproject-nix,
  pyproject-build-systems, and git-hooks.nix (adapted from hokusai)
- Add forgejo CI pipeline with lint/check/test and build jobs
- Wrap cv binary with LD_LIBRARY_PATH for weasyprint native dependencies
- Move basedpyright to dev dependency group, add pytest and ruff
- Fix package imports to use hatch source remapping (src/ layout)
- Update .envrc to use flake, expand .gitignore

BREAKING CHANGE: devenv is no longer used, run direnv allow to reload
2026-03-05 21:25:55 +01:00
.forgejo/workflows build: switch from devenv to nix flakes with uv2nix 2026-03-05 21:25:55 +01:00
example docs: add README with example renderings and license info 2026-03-05 21:08:54 +01:00
src/cv_generator feat: initial commit 2026-03-05 21:03:48 +01:00
.envrc build: switch from devenv to nix flakes with uv2nix 2026-03-05 21:25:55 +01:00
.gitignore build: switch from devenv to nix flakes with uv2nix 2026-03-05 21:25:55 +01:00
.python-version feat: initial commit 2026-03-05 21:03:48 +01:00
flake.lock build: switch from devenv to nix flakes with uv2nix 2026-03-05 21:25:55 +01:00
flake.nix build: switch from devenv to nix flakes with uv2nix 2026-03-05 21:25:55 +01:00
LICENSE.md docs: add MIT license 2026-03-05 21:07:23 +01:00
main.py build: switch from devenv to nix flakes with uv2nix 2026-03-05 21:25:55 +01:00
pyproject.toml build: switch from devenv to nix flakes with uv2nix 2026-03-05 21:25:55 +01:00
README.md docs: add README with example renderings and license info 2026-03-05 21:08:54 +01:00
uv.lock build: switch from devenv to nix flakes with uv2nix 2026-03-05 21:25:55 +01:00

CV Generator

Generate a polished PDF CV from a Markdown file with YAML frontmatter.

The CV data (work experience, education, skills, etc.) is defined as structured YAML frontmatter, while the cover letter is written as regular Markdown below it. The tool renders everything into a styled PDF using Jinja2 templates and WeasyPrint.

Example

The example/ directory contains a sample CV for Albert Einstein, applying to the Swiss Patent Office in 1902.

Cover Letter CV
Cover Letter CV

Usage

uv run cv path/to/your_cv.md

To specify a custom output path:

uv run cv path/to/your_cv.md -o output.pdf

Markdown File Format

The input file uses YAML frontmatter for structured data and Markdown for the cover letter body. See example/alberteinstein.md for a complete example.

Photo and signature paths are resolved relative to the Markdown file's location.

Third-Party Assets

The following bundled assets are licensed separately from this project:

License

This project is licensed under the MIT License.