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.
- Languages
- 2Code breakdown
- Documented components
- 2Explore modules
- Source documents
- 1Read the instructions
Repository languagesJavaScript 55.76%2
Shares calculated from GitHub Linguist bytes.
| Language | % | Bytes |
|---|---|---|
| JavaScript | 8,126 | |
| CSS | 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.
- 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
- Install the CLI with npm install -g resume-cli.
- Create and fill resume.json with resume init.
- Run npm install in the theme folder to get mustache, lodash and gravatar.
- Run resume serve --theme . and open http://localhost:4000.
- 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.
sudo npm install -g resume-clisudo npm installresume serve --theme .Preview: http://localhost:4000
Press ctrl-c to stop4. 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
4.2. Install npm packages
README.md
Configuration and usage
4.3. Usage
README.md
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.
Resume JSON
render data mapping
- From Resume JSON
- To Mustache template
Mustache template
HTML with screen or print CSS
- From Mustache template
Mermaid Interactive diagram
System overview of the components and connections verified in the repository.

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
| Module | Layer | Files | Types | Extensions |
|---|---|---|---|---|
(root) | Presentation | 3 | 0 | .css .js |
7.2. C4 model
From system context to code declarations. Each level reflects the available source evidence.
UML 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
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
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
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
index.jsentry filemainpackage exportindex.jspackage.json
7.4. Business logic
No classes were extracted, so these are the largest source files and their functions.
index.jsgetMonth, render
7.5. Stack and dependencies
Node.js package.json 3 runtime
External dependencies
3 declared packages (3 runtime, 0 development) in package.json.
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
- antoinebou12. (2026, November 5). jsonresume-theme-kendall. [Software repository] github.com.
- antoinebou12. (2026, November 5). jsonresume-theme-kendall: README. [Repository documentation] github.com.
- antoinebou12. (2026, November 5). index.js. [Source file] github.com.
- antoinebou12. (2026, November 5). resume.template. [Source file] github.com.
- antoinebou12. (2026, November 5). print.css. [Source file] github.com.
- 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.