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-12description: "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
| Feature | Default | Override |
|---|---|---|
| Code theme | min-light / min-dark | expressiveCodeOptions.themes in site.config.ts |
| Body font | Newsreader | --font-serif in global.css |
| Mono font | JetBrains Mono | --font-mono in global.css |
Custom containers
Three styled containers ship for asides: