Source for jmap.io, the website for the JSON Meta Application Protocol (JMAP).
Install docker and run the local-build script:
_bin/local-buildThis will launch a Jekyll dev server with the --livereload flag.
Note
The LightningCSS and esbuild post-write hooks only run for
non-development builds. When JEKYLL_ENV=development (the default for
jekyll serve), CSS and JS are emitted as-is from the bundled module/
sources.
Generating a full build of the site can be done locally via:
_bin/full-buildThis will update RFC pages, generate new OG images, and process JS/CSS assets.
The files in pages/generated-rfc/ are derived from upstream IETF XML and
should not be edited by hand. The pages can be updated by running:
_bin/generate-rfcsThe pipeline is two steps:
node scripts/fetch-rfc-xml.js # fetches RFC and draft XMLs into _tmp/rfc-xml/
node scripts/generate-rfc-templates.js # runs xml2rfc and writes Liquid templates + ToC includesThe list of source documents (RFCs and active drafts) lives at the top of
scripts/fetch-rfc-xml.js — update it there when a new RFC or draft revision is
published.
_bin/generate-og-imagesThis uses Playwright to screenshot scripts/og-image.html for each page in
pages/ and writes the results to images/og/.
Requires Node 24.
npm ci
npm run lint-prettier
npm run lint-stylelint- Pushes to
mastertrigger.github/workflows/deploy.yml, which builds withJEKYLL_ENV=productionand publishes to GitHub Pages at jmap.io. - Pushes to any other branch trigger
.github/workflows/preview.yml, which builds with the/jmapio.github.iobaseurl and removes the CNAME so the preview is served from the*.github.iodomain instead.