skip to content
Posts · February 2026

Writing with markdown


Posts live as .md files in src/content/post/. The filename becomes the URL slug. Frontmatter fields are validated by Zod — see src/content.config.ts for the schema.

Frontmatter shape

---
title: "Your post title"
publishDate: 2026-01-12
description: "One-sentence summary used in cards, social previews, and meta tags."
tags: [ tag-one, tag-two ]
# updatedDate: 2026-02-01 # optional — shown as "Updated …" on the post
# draft: true # excludes the post from production builds
# coverImage: # optional — appears between header and body
# src: ./_assets/cover.png
# alt: "Description for screen readers"
---

title, publishDate, and description are required.

What’s pre-wired

  • Headings auto-generate ids and a # anchor on hover/touch — click to copy a deep link.
  • Lazy images in the post body fade in when they enter the viewport.
  • Reading progress bar at the top tracks scroll position.
  • Drop cap on the first paragraph (large italic accent letter, like the one starting this post).
  • Share buttons at the foot: X, LinkedIn, copy-link.
  • Prev/next post navigation at the foot, ordered by publish date.

Tables

FeatureDefaultOverride
Code thememin-light / min-darkexpressiveCodeOptions.themes in site.config.ts
Body fontNewsreader--font-serif in global.css
Mono fontJetBrains Mono--font-mono in global.css

Custom containers

Three styled containers ship for asides: