A little project about resume in HTML or PDF.
Most of the work is leveraged by hacksalot/HackMyResume and adrienrn/resume, kudos to them.
This project is orientated as a .json file (FRESH resume) to aggrement with tools for developing and releasing:
- Dockerized HackMyResume
- Custom FRESH theme, called
henlo
- Puppeteer to generate the PDFs -- see below why
- BrowserSync to serve the HTML/CSS and live reload
- Gulp, Express, nodemon to watch files and rebuild, refresh while developing
It is a must to have following requisites installed in your machine/computer for modifying this resume.
- NPM
- Docker
For more installation info, see document NPM and Docker.
Once you have done the instructment above, do install dependencies
~$ npm i
The first time, you probably just want to start the container.
~$ cd to_clone_dict
~$ docker-compose up
Any change to .json
, .html
, .hbs
or .css
, will trigger a rebuild of both the base.html and base.pdf output files (see dist/
folder). Simple but realy handy while working on your content or design.
Note: You can check the output file from http://localhost:9000/
(local in this case) or http://172.19.0.2:9000
(extern for example). The default wathching file is dist/resume.html
, you can custom to what you want (see Gulpfile.js
and server.js
). Enjoy it!
~$ docker-compose run node /bin/bash -c 'yarn run hackmyresume:dist'
This will generate the final files:
/dist/resume.html
/dist/resume.pdf
Any files named private-*.json
in the src/
will be included in this type of build. I use it to have my contact informations private and not committed to this repository.
Yes, HackMyResume can generate PDF resume. However:
- Features like Flexbox, CSS multi-columns layout and CSS Grid are not supported by the vrsion of QtWebkit used by wkhtmltopdf and PhantomJS
- WeasyPrint is awesome though, the only thing missing was CSS Grid support that is still a work in progress, really cool project.
- Puppeteer in the other hand uses a headless chromium and has support for (all?) a lot of the latest CSS features!
You can find the a script, provision.sh, to install those 3 tools and test them. This should definitely go into the dockerfile but since I do not use them, I didn't include them in the container, yet.
I didn't have a Dockerfile before needing Puppeteer, and I was using a default node image.
However the documentation is great (error messages are nice too!) and everything is explained there: