How this blog works
10 tháng 6, 2026
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 atlocalhost:3000npm run build— export the whole site as static files intoout/
Upload the out/ folder to any static host — GitHub Pages, Netlify, nginx,
or an old laptop in a closet — and you are done.