How this blog works

Every post on this site is a plain markdown file in the content/ folder. There is no backend and no database — the whole site is pre-rendered to static HTML at build time.

Adding a post

Create a new .md file in content/. The file name becomes the URL slug, so my-first-post.md is served at /posts/my-first-post/.

Start the file with a small frontmatter block:

---
title: "My first post"
date: "2026-06-10"
description: "Optional one-line summary shown on the home page."
---

Everything after the frontmatter is regular markdown. Posts are listed on the home page newest-first by date.

Pages

On devices with JavaScript, each post is paginated to the screen like an e-book: a page shows exactly what fits without scrolling, and the buttons at the bottom (or a swipe, or the arrow keys) flip between pages. Without JavaScript the post is a normal scrollable page. To force a page break at an exact spot, put <!-- page --> on its own line between two paragraphs.

Publishing

  • npm run dev — write with live reload at localhost:3000
  • npm run build — export the whole site as static files into out/

Upload the out/ folder to any static host — GitHub Pages, Netlify, nginx, or an old laptop in a closet — and you are done.