Resume Generator with Python and a few json files

Resume Generator with Python and a few json files

Have you ever wanted a tool that could effortlessly generate your resume in multiple formats while being easily maintainable? Look no further! I created a script to create the ultimate resume generator using Python, HTML, Word, and occasionally, PDF.

Why Create a Resume Generator?

The motivation behind this project was simple: a friend asked me if I could build a script so his resume would look exactly the same in HTML, MS Word, and PDF formats, and it needed to be easily maintainable. With LinkedIn and the Chrome plugin “JSON Resume Exporter,” you can easily extract all the necessary information from your LinkedIn profile. With some minor adjustments, you can import your resume files (per language) into this script and create a beautiful webpage, Word document, and PDF.

Tools and Technologies Used

- Python: The core programming language used for the script.

- Jinja2: A templating engine for Python to create HTML templates.

- Docx MailMerge: A Python library to handle Word document templating.

- CloudConvert API: (Optional) For converting Word documents to PDF.

- Font Awesome: For adding icons to the HTML template.

- GitHub Pages: For hosting the HTML resume.

- LinkedIn: For exporting resume data using the JSON Resume Exporter plugin.

- Pixi: A package manager for managing dependencies.

Getting Started

First, you need to clone the GitHub repository:

git clone git@github.com:tvdsluijs/resume-generator-python-html-word.git

Prerequisites

- Python 3.x

- Pip or Pixi for package management

Install the required packages:

pip install -r requirements.txt

or if you're using Pixi:

pixi install

Directory Structure

Here's a quick overview of the project's directory structure:

Root/

── components/

│   ├── json_utils.py

│   ├── template_utils.py

│   ├── structured_data.py

│   ├── word_resume.py

│   ├── downloads.py

│   ├── pdf_resume.py

│   ├── read_config.py

│   └── cloudconvert_to_pdf.py

── output/

│   ├── icons/

│   ├── images/

│   ├── fonts/

│   ├── flags/

│   └── style.css

── resume_json_files/

│   └── resume_en.json

── test/

│   └── (empty for now, but you can add your tests here)

── templates/

│   ├── resume_template.html

│   └── resume_template.docx

── translations/

│   └── en.json

── main.py

── pixi.toml

Generating Resumes

To generate the resumes, run:

python main.py

This will create HTML and Word documents for each resume JSON file in the resume_json_files directory. If needed, you can also generate PDFs (not currently supported on Mac OS M1/M2/M3 CPUs).

Customizing Templates

Want to give your resume a personal touch? Here's how you can customize your templates:

- HTML Templates: Modify the resume_template.html file in the templates directory. You can use Jinja2 templating to include dynamic data.

- Word Templates: Customize the Word template (`resume_template.docx`) in the templates directory. Ensure the placeholders match the data fields in your JSON files.

Hosting on GitHub Pages

Hosting your generated HTML resumes on GitHub Pages is a breeze. Simply push your output directory to a GitHub repository and enable GitHub Pages in the repository settings.

Contributing to the GitHub Repository

Interested in contributing? Here's how you can help:

1. Fork the Repository:

- Click the "Fork" button at the top-right corner of the repo page.

2. Create a Branch:

git checkout -b feature/YourFeatureName

3. Make Your Changes:

- Add new features, fix bugs, or improve documentation.

4. Commit Your Changes:

git commit -m 'Add some feature'

5. Push to Your Branch:

git push origin feature/YourFeatureName

6. Create a Pull Request:

- Open a pull request on the original repository with a description of your changes.

Conclusion

This resume generator is free, easily customizable, and perfect for creating professional resumes in multiple formats.

Check out the GitHub repository and the demo site to see it in action.

Happy resume building!

Did you find this article valuable?

Support Theo van der Sluijs by becoming a sponsor. Any amount is appreciated!