Skip to content

Contributing

Everything in assets/ and tokens/ is generated. Change the scripts, run the build, and commit what comes out. Hand-edit a PNG and the next build will quietly undo your work, which is the most passive-aggressive code review there is.

You need Node 24 (there’s an .nvmrc). From the repository root:

Terminal window
npm ci
npm run build

The build wipes assets/ and tokens/ and makes them again. It takes a few seconds. CI runs the same build and fails if anything changed, so a pull request with stale files won’t pass.

File What it holds
scripts/brand.mjs The organisation, every template, every colour scale. Start here.
scripts/geometry.mjs The rings: radii, gaps and where each ring is cut.
scripts/colours.mjs Which shade goes on which ring, and the spectrum arrangement.
scripts/logo.mjs Turns geometry and colours into an SVG, with or without a frame.
scripts/social.mjs The social template layout.
scripts/text.mjs Turns text into outlines with the bundled fonts, so SVGs look the same everywhere.
scripts/tokens.mjs Writes the token files and Starlight themes.
scripts/build.mjs Decides which files to make, at which sizes.
fonts/ The three typefaces, under the SIL Open Font Licence.
  1. Add it to templates in scripts/brand.mjs, with a hue nobody else is using. If it’s one of the reserved ones, fill in the repo, package and what fields and drop reserved: true.
  2. Run npm run build. You get its logos, web icons, social preview and Starlight accent.
  3. Add a section for it on Logo files and a row on Quick downloads.

A brand new hue needs a full 50 to 900 scale in scales. Check it against the others on the Templates page before you commit to it: two neighbours that look alike in a row of marks are the thing to avoid.

The site lives in website/ and copies the generated files in when it starts:

Terminal window
cd website
npm ci
npm run dev

Pushes to main publish it to GitHub Pages.