Hello, world: writing with markdown
How this blog works — write a file, push, and you're published. Plus the performance budget it lives under.
1 min read …
- meta
- astro
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:
- Create
my-post.mdinsrc/content/blog/ - Fill in the frontmatter (title, description, date, tags)
- 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.
---
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.