Writing in Plain Files

Contents
  1. What a post is
  2. The bit that actually matters
  3. Drafts
  4. Things I deliberately left out
  5. On keeping at it

Every blogging platform I have abandoned, I abandoned for the same reason: the writing was somewhere I could not easily reach. Behind a login, inside a database, in a proprietary export I never got around to running.

So this one is a folder.

What a post is

A post is a file in src/content/posts/ that starts with a few lines of metadata:

---
title: 'Writing in Plain Files'
description: 'A one-line summary.'
pubDate: 2026-07-28
tags: ['writing', 'tools']
---

The post starts here.

That is the entire publishing interface. git push, and ninety seconds later it is live. There is no admin panel to log into, which means there is nothing to remember the password for, which means the friction between having a thought and publishing it is close to zero.

The bit that actually matters

Not the file format — the reversibility. Markdown in a git repository will outlive Astro, will outlive Cloudflare, and will outlive whatever I migrate to in five years. The site is a rendering of the content, not the container for it.

A format you can read with cat is a format you can still read in 2040.

Drafts

A post with draft: true is visible in the dev server and excluded from the build:

const posts = await getCollection('posts', ({ data }) =>
  import.meta.env.DEV ? true : data.draft !== true,
);

Half-finished pieces can sit in the repository indefinitely without any risk of leaking. I have several. That is fine — a draft that never ships still did its job if it clarified something.

Things I deliberately left out

Left out Why
Analytics I do not want to know, and readers should not have to be counted.
Comments on every post Enabled per-site, off by default. Silence is an acceptable response.
Dark mode One design, done properly, beats two done adequately.
Newsletter signup There is an RSS feed. That is what it is for.

Each of these is a thing that would need maintaining, and none of them make the writing better. The list of features a personal blog does not need is much longer than the list it does.

On keeping at it

The honest reason to make publishing this frictionless is that I do not reliably feel like writing. On the days I do, the setup must not be able to talk me out of it. A folder of text files never has.