This is an HTML/PDF resume built with a templating engine and deployed to a server using GitHub Actions. It uses Tailwind CSS for styling, Playwright for PDF generation and EJS templating in Node.js to generate the HTML.
The resume data is stored in ./src/resume-data.yml
and is rendered to HTML
first, before invoking Playwright to generate the PDF from the markup. GitHub
Actions are used to deploy the resulting HTML and PDF files to a web server
using scp
.
I find that HTML/CSS is a simpler and more approachable way to build a resume for most developers. If you like LaTeX, great! There are plenty of those examples floating around out there.
Have a simple developer-friendly way of updating my resume while keeping both the HTML and PDF versions in sync with each other.
- Clone this repository
- Install the dependencies with
npm install
- Install Playwright browsers with
npx playwright install --with-deps
- Edit the
resume-data.yml
file to add your own information - Run
npm run build
to generate the resume - Commit your changes and push to your repository
- Go to your repository's GitHub Actions page and ensure the "Secure Copy Deployment" workflow is not disabled
- Setup the requisite secrets in your repository's settings (see below)
- Trigger the workflow manually or push a change to the
main
/master
branch - Your resume should be live at
<SSH_HOST>
at the path<DEPLOY_DIR>
This assumes that you've already configured the target deployment server to for SSH access and have the requisite SSH keys in place (e.g. public key in target server's authorized_keys file and private key in this repository's secrets).
This repository contains one workflow:
deploy.yml
: This workflow is triggered on pushes to themain
ormaster
branches. It builds the resume and deploys it to the server specified in theSSH_HOST
variable (see below).
The following repository secrets are used in the deploy workflow:
DEPLOY_DIR
: The directory on the server where the resume should be deployedRESUME_DATA
: (optional) The YAML containing the resume data to use during HTML and PDF rendering. If not provided, the default./src/resume-data.yml
data will be used.SSH_DEPLOY_KEY
: The private key for the SSH serverSSH_USERNAME
: The username for the SSH server
The following not-secret variables are used in the deploy:
SSH_HOST
: The hostname of the server where the resume should be deployed
I'm primarily a backend engineer, so if you focus more on the frontend you'll likely find ways to improve the styling and/or layout. I'm trying not to let perfect be the enemy of good-enough here. Your expertise and contributions are welcomed! :)