jsonresume-express-handlebars
Express server-side rendering of JSON Resume, plus extra utilities for development powered by express-handlebars
.
It is required to include a JSON Resume theme module and specify its path.
For use with extra features exposed in @chrjl/jsonresume-theme-elementary
.
Features
Express APIs
Server-side rendering
/render/
: Retrieves HTML from jsonresume-theme
module
-
/render/publish
-
/render/development
Requests the development context from
jsonresume-theme
module (if supported).
Handlebars partials
/sections
: Uses features exposed by express-handlebars
module.
-
/sections/
Parses
resume.json
to return a list of all keys, cross-referencingExpressHandlebars.getPartials()
to describe which fields are supported by the theme. -
/sections/:sectionId
Returns rendered resume section with templates and layouts, using
ExpressHandlebars.renderView
. Falls back to returning JSON data if no usable template exists.
CSS
Paper-size formatting
Provides the following CSS (requires JSON Resume theme/layout link these files):
-
stylesheets/page.css
Formats the rendered HTML resume to specified paper width and margins (default US Letter with 0.25" margins), such that the webpage is wysiwyg ready to print or export to PDF. If exported in browser, set scale to
100%
and margins tonone
. -
stylesheets/development.css
Add a transparent overlaying HTML
<div>
in development mode to represent the first printed page.
Paper size and margins are set (and modifiable) using CSS variables in the :root
pseudo-class.
Basic usage
Ths package reads and parses environment variables using dotenv-expand
and starts an Express server on $PORT
(default 3000
).
The included reference docker compose
file uses the node:slim
image and starts the dev server using nodemon
. Variables used in the compose file can be defined in a .env
file
- This package mounted to the working directory (
/home/node/app
) -
$HOST_JSONRESUME_SOURCE
directory mounted to the default resume source path ($workdir/source/
) -
$HOST_JSONRESUME_THEME
directory mounted to the view directory ($JSONRESUME_THEME_DIR
)
Requirements
-
JSONRESUME_SOURCE
resume.json
file (defaultsource/resume.json
).Throws
404
error if file is not found, throws500
error if there is something wrong with the file (i.e. invalid JSON). -
JSONRESUME_THEME_DIR
JSON Resume theme module. As per JSON Resume initiative,
That module needs to export a function called
render
that takes aresume.json
and returns a plain HTML string.