A tool that uses pandoc to generate a good looking CV in .pdf and .html formats from a vanilla markdown file.
You can see a real-world CV built with the tool HERE.
Supports working with multiple markdown files at the same time (if, for example, you need your CV in multiple languages), and doesn't depend on jekyll nor LaTeX.
Absolutely no dependencies if you use GitHub CI to build the resulting files!. Just put your resume markdown file under src/
, commit and push. You'll find a zip file with the output files in the CI workflow summary page.
Create a markdown file under src/
- on build it will be used to generate the corresponding .pdf and .html files under output/
You can use src/sample.md
for reference and output/sample.pdf
to see what it generates. Most of it should be self-explanatory. Other than that:
- The
title
variable from the frontmatter gets set as the firsth1
in the content - The
style
variable in the front matter chooses the style to use (from thestyles/
directory) - Some markdown elements might have a special function in a given style (like the
h4
->code
used for time periods in the default style). Again, consult the samples to see how it fits together.
You'll need to install pandoc
and wkhtmltopdf
, optionally lmodern
to use the default font. Afterwards just run make
!
on Linux:
sudo apt install pandoc lmodern wkhtmltopdf
make
open output/sample.pdf
To have the output files automatically regenerated when you edit the source files:
sudo apt install pandoc lmodern wkhtmltopdf inotify-tools
make watch
The latter is Linux only, to use the same workflow on Mac, use the Docker workflow below.
If you have docker installed, you can run
make docker
While the docker container is running, the src/
and the output/
directories are mounted to it and pdfs will be re-generated whenever the markdown files are edited.
- Markdown and css structure based on a Eliseo Papa's markdown-cv jekyll workflow
- Default theme based on Kamil Wójcicki's LaTex template I've been using for about 15 years
- The trick for fetching front matter variables in bash from u/cr0sh
Contributions welcome! Especially new styles and tweaks to the default style.
Create a directory under styles/
- the name of the directory will be the style name.
Any css files put in the directory will be included, in alphabetical order, in a resume compiled with that style.
- list out prereqs for the script to work locally
- dockerfile for local compilation
- CI with tests, compilation and output download
- working style selection
- multiple css files in a style (for vendored stuff)
- fontAwesome icons in the default styles
- default style tweaks (link colors?)
- add sample input / output files to the repo and gitignore
- credit the projects that inspired this one
- add pdf metadata using exiftool?
Why did you put a pdf with your resume in the root directory?
It's the reason I created the project and I wanted to share the end result I was aiming for :)
Also, I'm available for contract work! If you have a project you think I could help you with, get in touch via the email in the resume, I'd love to hear from you.
Why is there a hidden .Makefile
in the root directory?
I left it as a reminder to never try to use hand-written Makefiles for anything non-trivial - it's not worth it.