JSON Resume Hugo module

Maybe some of you know JSON Resume:

The open source initiative to create a JSON-based standard for resumes.

I initially included everything in a theme that I’ve been developing the past couple of months but decided to move the functionality into a separate module to make it reusable.


You can find a demo at: CV :: hugo-theme-gruvbox — Theme Demo

The theme uses this module. I will showcase the theme here, too, as soon as it’s ready, and publish it to the official Hugo theme showcase.

Data Structure

The module reads JSON Resume data from Hugo’s data/ directory:

├─ json_resume/
    ├─ de.json
    ├─ en.json

Each file must adhere to the JSON Resume schema specification.

Partials and Shortcodes

Use the json-resume shortcode in markdown files:

title: "CV"
draft: false

## Experience

{{< json-resume "work" >}}

## Education

{{< json-resume "education" >}}

Or use the partials in your layout files:

<div class="sidebar">
  <aside class="bio">{{ partial "json-resume/basics.html" . }}</aside>


You can style the existing templates by using the pre-defined classes. There are generic classes prefixed with jr__ like jr__item or jr__date-range that apply to any template.

Classes specific to resume sections are prefixed with jr-<section>__<section-field>, like jr-work__description or jr-basics__name.

You can find more info in the GitHub README.

Any feedback is appreciated. It’s my first Hugo module.

1 Like

It would be great to generate a [better] printable version … consolidate to one page (could be localizable) and format appropriately. kudos if it is pdf.

Converting it to PDF is actually possible with jsonresume/resume-cli which features many themes. I would say that this is out of scope for the Hugo module.

As for making it “printable”, is this something that is done in CSS? I decorated the HTML with CSS classes to make the rendered markup stylable to suit your needs.

In the coming weeks I intend to implement the following “flow”: create a private GitHub repo that contains my unredacted, sensitive resume data like my address. When committing, GitHub Actions does something like this:

  1. Convert the data to PDF and release it in the private repo which only I can see and download
  2. Create a redacted version by removing sensitive data with jq
  3. Commit the redacted version of JSON (for display) and PDF (for download) to the Hugo repository