Skip to content
Table of contents

jsonresume-theme-kendall: A JSON document into a resume template

This fork of the Kendall JSON Resume theme turns structured resume data into HTML. The renderer prepares presentation fields before handing the result to a Mustache template and the accompanying screen and print styles.

Library Fork
  • Updated
  • JavaScript · 55.76%
  • MIT
Node.js Upstream credited
Documented components
2Explore modules
Source documents
1Read the instructions
Repository languagesJavaScript 55.76%2

Shares calculated from GitHub Linguist bytes.

JavaScript55.76%
55.76%8,126 bytes
CSS44.24%
44.24%6,448 bytes
Language%Bytes
JavaScript55.76%8,126
CSS44.24%6,448

1. Overview

1.1. Why it exists

Minimalist, print-perfect resume theme supporting schema.org semantic markup and clean layout.

1.2. Best fit

Automated resume compilation from structured JSON data.

2. Use cases

A JSON Resume theme that renders resume.json to a Bootstrap HTML page with Mustache and FontAwesome icons.

Use-case diagram for jsonresume-theme-kendall: Render resume.json to HTML; Preview the theme locally; Show a photo or Gravatar; Map profiles to icons; Print a clean copyjsonresume-theme-kendallRender resume.json to HTMLPreview the theme locallyShow a photo or GravatarMap profiles to iconsPrint a clean copyResume author«system»resume-cli«system»Gravatar
People on the left, external systems on the right; each oval is a use case backed by the files cited below.
Render resume.json to HTML
Resume authorresume-cli

index.js exports render(), which prepares the resume object and fills resume.template with Mustache, inlining style.css and print.css.

Preview the theme locally
Resume authorresume-cli

The README runs resume serve --theme . from the theme folder and opens the preview on http://localhost:4000.

Show a photo or Gravatar
Resume authorGravatar

When basics.image is missing, render() builds a Gravatar URL from basics.email with the gravatar package.

Map profiles to icons
Resume author

Each basics.profiles network is mapped to a FontAwesome class, with special cases such as stackoverflow, gitlab and keybase.

Print a clean copy
Resume author

print.css is injected as a media="print" style; it hides the photo and removes link URLs after anchors.

2.1. Scenario: Previewing a resume with the Kendall theme

  1. Install the CLI with npm install -g resume-cli.
  2. Create and fill resume.json with resume init.
  3. Run npm install in the theme folder to get mustache, lodash and gravatar.
  4. Run resume serve --theme . and open http://localhost:4000.
  5. Check that only filled sections (work, education, skills…) appear, then print from the browser.

Files readREADME.mdpackage.jsonindex.jsresume.templateprint.css

3. Getting started

These commands come from the repository documentation. They were not run during this review.

README.md · Install the command line
sudo npm install -g resume-cli
README.md · Install npm packages
sudo npm install
README.md · Serve theme
resume serve --theme .
README.md · Serve theme
Preview: http://localhost:4000
Press ctrl-c to stop
Tasks declared in manifests

3.1. package.json

test
echo "Error: no test specified" && exit 1

4. Repository references

Excerpts from the repository’s guides, in their original language. Links open the inspected source revision.

Prerequisites and first run

4.1. Install the command line

README.md

We’re going to use the official resume-cli to run our development server. Go ahead and install it:
Read the full instructions ↗

4.2. Install npm packages

README.md

We need to install the dependencies. cd into the theme folder we just downloaded and run: This will read the local package.json and install the packages listed under dependencies.
Read the full instructions ↗
Configuration and usage

4.3. Usage

README.md

To first get started with this JSONResume theme, you’ll need to have the JSONResume CLI installed. If you haven’t already install it with npm install -g resume-cli. If this doesn’t work, try sudo npm install -g resume-cli. After this, you can get your resume.json ready by typing resume init. After hitting enter, your resume will be initialized and you can edit it and fill in the neccessary fields. Check out the official resume-schema repository for more information on filling these fields. When you are finished with your resume, you may test it by yet again opening the command line and typing resume serve –theme kendall to see how it looks with this theme. You can replace the word kendall with other theme names too.
Read the full instructions ↗
Source documentation

1 documents read from 1 candidates.

5. Features and components 2

Presentation mapping
index.js maps network names to icon classes, formats work dates and derives flags for optional sections. It also chooses an explicit image or a Gravatar URL. This logic adapts data for the template.
Template and styles
resume.template contains the HTML layout, while style.css and print.css separate screen and print appearance. The data transformation and document layout can be inspected independently.

6. Architecture

Expand a component to follow its connections, or explore the full diagram.

System components Context
Mermaid Interactive diagram

System overview of the components and connections verified in the repository.

Static architecture view for jsonresume-theme-kendall
Static preview. The interactive diagram replaces it after Mermaid loads.
flowchart LR
  n0["Resume JSON"]
  n1["render data mapping"]
  n2["Mustache template"]
  n3["HTML with screen or print CSS"]
  n0 --> n1
  n1 --> n2
  n2 --> n3
Text version of the diagram
  • Resume JSON → render data mapping
  • render data mapping → Mustache template
  • Mustache template → HTML with screen or print CSS
Follow one path through the code

Follow a work startDate into the derived month and year fields. The renderer mutates fields on the supplied object, so callers reusing that object should account for the added presentation data.

7. Technical dossier

Built from the source at commit d1401ce (3 files). Each item comes from a pattern match in the code, so open the linked file before relying on it.

7.1. Layers and modules

Folders are sorted into layers by name, from the user interface down to data access. Because the sorting uses names only, the diagram says nothing about calls between layers.

Mermaid Layered view
flowchart TB
  subgraph L_presentation["Presentation"]
    direction TB
    presentation_0["(root)<br/>2 files"]
  end
  subgraph L_interface["Entry points and API"]
    direction TB
    interface_0["(root)<br/>1 file"]
  end
  L_presentation ~~~ L_interface
Modules and their main layer
ModuleLayerFilesTypesExtensions
(root)Presentation30.css .js

7.2. C4 model

From system context to code declarations. Each level reflects the available source evidence.

UML 1 · System context
1 · System context

The widest C4 view: who uses the project and which outside systems and data stores it relies on. Rendered with uml-mcp.

PlantUML source
@startuml
!include <C4/C4_Context>
LAYOUT_LEFT_RIGHT()
System(SYS, "jsonresume-theme-kendall", "This fork of the Kendall JSON Resume theme turns structured resume da…")
@enduml
UML 2 · Containers
2 · Containers

One level closer: the parts that run separately inside the project, their main language and how calls flow between them. Rendered with uml-mcp.

PlantUML source
@startuml
!include <C4/C4_Container>
LAYOUT_LEFT_RIGHT()
System_Boundary(SYS, "jsonresume-theme-kendall") {
  Container(APP, "jsonresume-theme-kendall", "JavaScript")
}
@enduml
UML 3 · Components and layers
3 · Components and layers

Modules grouped by source-layer classification. Boundaries show organization, not runtime isolation or call relationships. Rendered with uml-mcp.

PlantUML source
@startuml
!include <C4/C4_Component>
LAYOUT_TOP_DOWN()
System_Boundary(SYS, "jsonresume-theme-kendall") {
Boundary(L0, "Presentation", "layer") {
Component(M0_0, "(root)", ".css", "2 files")
}
Boundary(L1, "Entry points and API", "layer") {
Component(M1_0, "(root)", "JavaScript", "1 files")
}
}
@enduml
UML 4 · Code
4 · Code

Selected declarations, fields and methods grouped by source file. No inheritance or call edges are inferred. Rendered with uml-mcp.

PlantUML source
@startuml
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundCorner 10
skinparam defaultFontName Arial
skinparam defaultFontSize 13
skinparam ArrowColor #4e6070
skinparam ArrowFontColor #3d4f5f
skinparam titleFontSize 14
skinparam actorBorderColor #006a62
skinparam actorBackgroundColor #e9f3f4
skinparam usecaseBorderColor #006a62
skinparam usecaseBackgroundColor #e9f3f4
skinparam componentBorderColor #006a62
skinparam componentBackgroundColor #e9f3f4
skinparam interfaceBorderColor #006a62
skinparam interfaceBackgroundColor #ffffff
skinparam nodeBorderColor #4e6070
skinparam nodeBackgroundColor #f4f8fb
skinparam databaseBorderColor #006a62
skinparam databaseBackgroundColor #ffffff
skinparam cloudBorderColor #4e6070
skinparam cloudBackgroundColor #f0f5fa
skinparam artifactBorderColor #006a62
skinparam artifactBackgroundColor #ffffff
skinparam rectangleBorderColor #b0c2d3
skinparam activityBorderColor #006a62
skinparam activityBackgroundColor #e9f3f4
skinparam partitionBorderColor #b0c2d3
skinparam stereotypeCBackgroundColor #ffffff
top to bottom direction
hide empty members
package "jsonresume-theme-kendall" {
object "index.js" as FN0 {
  getMonth()
  render()
}
}
@enduml

7.3. Public interface

Outside code can use everything listed here. The project also declares 0 public types.

Entry points

7.4. Business logic

No classes were extracted, so these are the largest source files and their functions.

index.js
getMonth, render

7.5. Stack and dependencies

Node.js package.json 3 runtime

Open the manifest

External dependencies

3 declared packages (3 runtime, 0 development) in package.json.

Package table 3
External dependencies
PackageVersionScopePurposeRegistry
gravatar^1.0.6runtimeGravatar Node.js librarynpmjs.com
lodash^4.17.20runtimeLodash modular utilities.npmjs.com
mustache^2.2.1runtimeTemplatesnpmjs.com

7.6. CI/CD pipeline

No CI/CD pipeline in the repository. The code is built and run by hand, as described above.

7.7. Deployment

Mermaid Deployment diagram
flowchart LR
  repo[("GitHub repository")]
  local["Local machine<br/>Node.js"]
  repo -->|"clone and run"| local

The repository has no Dockerfile, Compose file or hosting configuration, so the code runs on the machine that clones it.

7.8. Security

Supply chain

The available sources do not document the remaining sections.

8. Reference

3 / 3 eligible files read (9 in the tree); 0 oversized, 0 failed reads and 0 syntax diagnostics.

What the scan covers

Known dependency/build folders, credential files and binaries are excluded. The scan covers READMEs, recognized manifests and parser-supported source files.

Linguist statistics cover the whole repository and may include other languages.

10. Files to read 3

11. Glossary

Repository

The versioned source files, configuration, and history of a project.

README

The repository’s entry document, usually covering its purpose and initial setup.

Dependency

A library, tool, or service that another component needs to build or run.

Published port

A host port mapped to a service’s container port. Publishing a port can expose that service beyond its container network.

CLI

A text interface in which commands and arguments select operations. Exit codes let scripts detect success or failure.

Build

The steps that turn source files and dependencies into a runnable program or distributable artifact.

GPU

A processor designed for parallel workloads, including graphics rendering and many numerical operations.

Fork

A separate repository derived from another project. A change in a fork is not automatically a change in the upstream project.

12. References

  1. antoinebou12. (2026, November 5). jsonresume-theme-kendall. [Software repository] github.com.
  2. antoinebou12. (2026, November 5). jsonresume-theme-kendall: README. [Repository documentation] github.com.
  3. antoinebou12. (2026, November 5). index.js. [Source file] github.com.
  4. antoinebou12. (2026, November 5). resume.template. [Source file] github.com.
  5. antoinebou12. (2026, November 5). print.css. [Source file] github.com.
  6. Boucher, A. (2026, October 23). jsonresume-theme-kendall: A JSON document into a resume template. [Project article] antoineboucher.info.

Sources without a publication date show the date they were last checked, November 5, 2026. File links retain the inspected revision where available.