Palmshed

Colophon

How this site is built

A static site that documents engineering work. The details below are part of the craft, so they get written down like everything else.

Framework

Next.js 16 with the App Router, React 19, and TypeScript. Every page is statically generated at build time: the content is read from the repo and rendered to plain HTML, so there is no runtime server and nothing to maintain after deploy.

Typography

  • Inter for body text.
  • IBM Plex Sans for headings and display.
  • IBM Plex Mono for code.

All fonts are self-hosted through next/font. No third-party requests, no layout shift.

Color palette

  • Dark canvas #111110, light text #e6e6e3, muted surface #1a1a18.
  • Secondary ink #8a8a87, hairline borders #262623.
  • A single green accent, #3fb950 (dark) / #1f883d (light). If it's green, it's interactive.
  • Dark is the default. Light mode is an override, not the base.

Layout uses a 4px spacing scale.

Markdown pipeline

Content lives in docs/ as Markdown with YAML front matter, version-controlled alongside the code. At build time the files are read with gray-matter, rendered with react-markdown, remark-gfm, and rehype-highlight, and statically generated into pages. Editing the site is editing Markdown files in a pull request.

A build-time index is written to /search-index.json and searched entirely in the browser. No server, no third-party service, no telemetry.

RSS

An Atom feed at /feed.xml, generated at build time from the articles and posts. Readers get new writing without depending on any platform.

Diagrams

All diagrams are hand-authored inline SVG, drawn in the same style as the site as text files so they can be reviewed and changed in a diff.

Logo animation

The palm mark is an SVG that draws itself on page load using stroke-dasharray and stroke-dashoffset. It re-animates on every route change by remounting when the pathname shifts. On hover it drifts slightly, a subtle cue that the element is alive.

Hosting

The build produces a static export, deployable to any static host. There is no application server and no database.

Why static

A static site is durable. It costs nothing to run, cannot break at runtime, and the content is version-controlled like the software it documents. The point of this site is to let the work stay the main event. A site that needs constant maintenance would compete with the work instead of documenting it.