Welcome to the blog

This is a statically generated blog. Posts are Markdown files, the build turns them into plain HTML, and publishing copies only the files that changed to an FTP server.

There is no database, no runtime, and no JavaScript required to read anything. Search is an optional enhancement: the browser downloads a pre-built index and matches against it locally.

What is here

  • Markdown posts with frontmatter
  • A reverse-chronological home page, grouped by year
  • Tag pages and a compact archive
  • Instant search with keyboard navigation
  • RSS, a sitemap, and sensible metadata
  • One command to publish over FTP or FTPS

Writing a post

Create a file in content/posts/:

---
title: A new post
date: 2026-11-08
description: One sentence shown in lists and search results.
tags: [notes, web]
---

The body starts here.

Then run:

npm run dev

The local server rebuilds when files change and reloads the browser. When it looks right:

npm run publish

About the design

The goal is a blog that feels quick because it is quick: one small stylesheet, no web fonts, no framework, and pages that are mostly text. Search is deferred until you actually ask for it, so the reading experience stays light.

For the details, see how search works without a server.

Search Robert Marin

↑↓ navigate Enter open Esc close