Colophon
This blog is a static website generated by a small Elixir program that lives in the same repository as its content. The source is plain markdown; everything else is built from it on demand.
Build
-
Elixir and
Erlang/OTP run the build.
Mix tasks
blog.build,blog.serveandblog.publishdrive it end to end. -
nimble_publisher
parses the markdown files in
priv/posts/into post structs at compile time. - makeup_elixir and makeup_erlang provide syntax highlighting for fenced code blocks.
- Phoenix LiveView's component and HEEx compiler are used — at build time only — to render the page templates to HTML. There is no server at runtime.
Design
- Typography and layout are inspired by Daring Fireball. Body text is set in Verdana, titles in Gill Sans, code in SF Mono.
- The colour palette is shifted away from the canonical Elixir purple into a slightly warmer violet. All body-text pairings meet WCAG AAA (≥ 7:1).
-
Light and dark themes are switched by a small inline script that
reads
localStorageandprefers-color-scheme. There is no JavaScript framework.
Accessibility
- Semantic HTML landmarks, a skip-to-content link, and visible focus outlines.
- Theme toggle is a real button with
aria-pressed. prefers-reduced-motiondisables all transitions.- Colour contrast verified with the Color library's WCAG helpers.
Hosting
The generated site is uploaded to a
Cloudflare R2
bucket using an ElixirLocalize.Publisher module that signs
requests with AWS Signature V4 via
aws_signature
and transports them with Req.
The publisher diffs the local tree against the remote manifest so
subsequent syncs only upload what has changed.
Source
The blog's source — including this page — lives alongside Localize itself on GitHub. Fixes and typos are welcome as pull requests.