Hello, world
This site is a folder of Markdown files. Each file in content/ becomes a
post, and the newest one is listed first. This post explains how to write one.
The file name
Name each post YYYY-MM-DD-slug.md, for example 2026-10-24-hello-world.md.
- The slug is the part after the date. It becomes the post's address:
this file is served at
/posts/hello-world. - Use lowercase letters, digits and hyphens only. A file with any other name is skipped.
- The date in the name is the post's date unless the header says otherwise.
The header block
A post can start with an optional header block (often called front matter)
between two --- lines. This post's header is:
---
title: Hello, world
summary: The first post, and a guide to writing one — file names, the header block, and what Markdown works.
---
Each line is key: value. Four keys are recognised:
| Key | What it does | If left out |
|---|---|---|
title |
The post's title, shown on the index page, at the top of the post and in the RSS feed | The first line of the post if it is a # Heading (that heading is then not repeated in the body); otherwise the slug |
date |
The post's date, as YYYY-MM-DD. Posts are listed newest first |
The date in the file name |
summary |
One line shown under the title on the index page and used as the RSS description | Nothing is shown |
draft |
Set to true to hide the post everywhere: index, post page and feed |
false |
Some details:
- The block must be the very first thing in the file, and it must be closed
with a second
---line. - Values can be wrapped in quotes, which are removed:
title: "Hello, world". - Lines starting with
#inside the block are comments. - Keys other than the four above are ignored.
- A post with a broken header, such as an unknown date format or a missing
closing
---, is skipped and the problem is logged. The rest of the site is unaffected.
The header is optional. This is a complete post:
# A short note
Just a paragraph.
Its title is "A short note" and its date comes from the file name.
Publishing
Posts are reviewed like code: add the file on a branch, open a pull request,
and the post goes live once it is merged and deployed. To hold a post back
after merging, set draft: true.
What Markdown works
- Bold, italic,
strikethroughandinline code - Links like https://posts.monoaf.com are linked automatically
- Headings, lists, quotes, images, tables, task lists and fenced code blocks
| Feature | Supported |
|---|---|
| Tables | yes |
| RSS | yes, at /feed.xml |
fmt.Println("hello, world")
Raw HTML in a post is left out, so posts can only contain Markdown.