A simple solution to keep a personal website and PDF updated using a single resume.json
file.
Both the website and generated PDF are based on Gayle Laakmann McDowell's awesome resume format. A Microsoft Word template is also available if that is all you're looking for.
Website
This project was bootstrapped with Create React App and uses Chakra-UI's component library. good-software-engineer-resume.com is deployed using Netlify.
LaTeX to PDF Resume Generation
Huge shout-out to the dnl-blkv/mcdowell-cv repo for laying the groundwork for LaTeX to PDF resume generation!
- Ensure yarn and netlify-cli are installed globally. If you're planning on deploying your site with Netlify that is... If you go with something else, be sure to update the
yarn deploy-dev
andyarn deploy-prod
scripts and remove any mention of "netlify" from the project.).
npm install -g yarn
npm install -g netlify-cli
- Clone and cd into this repository
git clone https://github.com/KrammerJake/good-software-engineer-resume my_awesome_resume
cd my_awesome_resume
- Run the website in dev mode
yarn && yarn start
Key Binding | Description |
---|---|
T | Toggle light/dark mode |
- Make sure lualatex is installed on your machine and is available at
~/bin/lualatex
. I installed it on my Mac by downloading MiKTeX. You may be prompted to install various LaTeX libraries before the PDF will successfully generate. - Update
/src/resume.json
to include your info. - Once you're finished updating
resume.json
, runyarn validate:json
to ensure there are no validation errors. - If the JSON is valid, you can now generate the
resume.tex
file by runninggenerate:tex
. - Once the
resume.tex
file has been created, you can now rungenerate:pdf
to create aresume.pdf
file that will be saved to the/public
directory. This will make it accessible viayour-site.com/resume.pdf
once you deploy it. NOTE: Thegenerate:pdf
command relies onlualatex
existing at~/bin/lualatex
. Be sure to update thegenerate:pdf
command if yourlualatex
exists at a different location.
You can view the full list of the available scripts from your terminal by running yarn scripts
in the project directory.
NOTE: The yarn scripts
command requires jq to be installed.
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"generate:tex": "node ./scripts/validateResumeJSON.js && node ./scripts/generateTexFromJSON.js",
"generate:pdf": "~/bin/lualatex --output-directory=./public/ --aux-directory=./pdf_generator/ ./pdf_generator/resume.tex",
"update-resume": "yarn generate:tex && yarn generate:pdf",
"deploy-dev": "yarn build && netlify deploy --dir=build",
"deploy-prod": "yarn build && netlify deploy --dir=build --prod",
"yellowlight": "yarn update-resume && yarn deploy-dev",
"greenlight": "yarn update-resume && yarn deploy-prod",
"validate:json": "node ./scripts/validateResumeJSON.js",
"scripts": "cat package.json | jq .scripts"
}
Any and all contributions are welcome!
// TODO: Add a CONTRIBUTING.md specifying steps to contribute to the project
Since I have only tested this project on Mac, it would be great if others are able to test out the project on additional platforms and report any setup/documentation issues you encounter.
Additionally, the resume.json
format could probably be more flexible to allow for additional/optional sections rather than the arbitrary keys I chose and am validating against in validateResumeJSON.js
.