Hello, world
This is where the writing goes. Posts live as Markdown files in
src/content/writing, one file per post, and the filename becomes the URL — so
this one is at /writing/hello-world. Nothing else to wire up: drop a file in,
and it shows up on the index, newest first.
This post exists to show what each element looks like once it is set in the site’s type. Replace it with something real whenever you like; deleting it will not break anything.
Frontmatter
Every post opens with a small block of frontmatter. Only two fields are required:
title— used for the page title, the index row, and the browser tab.date— an ISO date like2026-09-07. The index sorts on it, newest first.description— optional. Used for the meta description and social previews.draft— optional, defaults tofalse. Set it totrueand the post disappears from the index and never reaches the built site.
That last one is the useful one: a draft is a real file on disk that simply does not ship, so you can leave a half-finished thought in the folder without publishing it.
Code
Fenced blocks are highlighted, and they follow the light and dark theme along with everything else:
export function stamp(date) {
const y = date.getUTCFullYear();
const m = String(date.getUTCMonth() + 1).padStart(2, '0');
return `${y}.${m}`;
}
Inline code like npm run dev sits in the same mono face as the site’s meta
text, which is why it looks at home next to it.
Long-form text is set in the same grotesk as the name at the top of the page, not in the mono. The mono is kept for dates, labels, and code.
You can link out mid-sentence and the underline behaves the way it does everywhere else on the site: a translucent accent that goes solid when you point at it.