---
title: "Hello, world: writing with markdown"
description: "How this blog works — write a file, push, and you're published. Plus the performance budget it lives under."
date: 2026-09-15
url: /posts/hello-world
---
## Why this exists

This blog is a stack of plain files. Each post is one Markdown file in `src/content/blog/`. There is no database, no CMS, no client-side framework.

Publishing is:

1. Create `my-post.md` in `src/content/blog/`
2. Fill in the frontmatter (title, description, date, tags)
3. Push to GitHub — Vercel builds and deploys a static page

## The budget

- **JavaScript:** 0kb by default, under 15kb if a page ever needs an island.
- **Images:** optimized at build time with sharp (AVIF + WebP), lazy-loaded below the fold.
- **Fonts:** system stack, self-hosted — zero external requests.

## Markdown and MDX

Posts support standard Markdown. Rename a file to `.mdx` if you need to embed an Astro component inside a post.

```md
---
title: "My post"
description: "One-line summary, max 200 chars."
date: 2026-09-16
tags: ["notes"]
---

Your content here.
```

## Views

Each post counts reads with a tiny edge function backed by Vercel KV. Repeat visits from the same browser within 24 hours are not counted.
