Source & hosting
The source for this site is on GitHub and published under a dual license: workflow and infrastructure are CC0 (public domain); blog content is CC BY-NC-ND 4.0.
The site is built with Hugo using the PaperMod theme, and deployed via Cloudflare Pages.
ATproto & standard.site
Every post on this site is also published as a record on the ATproto network — the open protocol that powers Bluesky. ATproto isn’t just a social network; it’s a decentralized data layer where any application can store and exchange structured records.
standard.site is an open protocol built on ATproto for
publishing websites and blog posts. Each post gets a site.standard.document record
written to my Personal Data Server (PDS), making it a first-class citizen on the open
social web — discoverable and linkable from Bluesky and any ATproto-aware client.
Sequoia handles the publishing: it reads Hugo posts, writes the
ATproto records, and injects a canonical <link> tag into the built HTML so the
connection between the website and the ATproto record is machine-readable.
The net result: each post exists at https://joe.dev/posts/... and as a verifiable,
portable record on the open social web — no platform lock-in.
Browse my ATproto records directly at pdsls.dev.
Branding & theme
The visual design uses a warm off-white palette with teal accents, with a near-black dark mode.
Typefaces
Colors
| Role | Light | Dark |
|---|---|---|
| Page background | #F5F1EB | #181511 |
| Teal accent | #0A7A70 | #2DD4BF |
| Primary text | #1F1F1F | #C4C4C5 |
| Secondary text | #6C6C6C | #9B9C9D |
| Border | #E8E4DE | #3C362C |
| Inline code | #E6F2F0 | #1E2C2A |
| Code block bg | #2A2620 | #2A2620 |
Favicon
White J (Cormorant Semi Bold) on deep teal #0F766E, rounded square with ~12% corner radius and +7% optical lift.
Cover images
Each post has a 1200×630 cover image used for og:image social previews and as the
thumbnail in Bluesky’s enhanced link cards.

The images are generated by a Node.js script (graphics-gen/src/cover.mjs) using
Satori and the same brand fonts as the site. The layout:
post title in Cormorant at the largest size that fits in three lines, a teal rule, an
optional description in Nunito, and a signature block — the site icon at 128 px with
joe.dev / Joe Beda stacked below — anchored to the bottom-right corner, all on the
same warm parchment background as the site.
Each generated image is accompanied by a .cover.json sidecar that records the title,
description, and spec version used to produce it. When the branding changes, running
task covers-regen rebuilds every cover from its sidecar without having to touch the
post files.