Hello, World — and How This Blog Works
A tour of a minimal, dark-mode Astro blog you can read in your browser or straight from your terminal.
This is the first post on a blog built to be quiet, fast, and a little bit hacker-friendly. No pop-ups, no tracking, no newsletter guilt-trips — just text on a dark page, set in Geist with room to breathe.
If you’re reading this in a browser, lovely. But you can also read it without one.
Read any post with curl#
Every post here speaks two languages. Browsers get HTML; terminals get raw Markdown. The same URL serves both — no flags, no headers to remember:
curl https://example.com/posts/hello-world
You’ll get the Markdown source back, ready to pipe into a pretty-printer:
curl https://example.com/posts/hello-world | glow -
Prefer to be explicit? Append .md to any post URL and you’ll get the same
thing from any client:
curl https://example.com/posts/hello-world.md
How it’s put together#
The whole thing is a static Astro build. There’s exactly one server-side flourish: a tiny Bun process that inspects each request and decides whether you want HTML or Markdown back. Everything else is pre-rendered files.
The stack, briefly#
- Astro for the static site and content collections.
- React islands for the search palette, the reading-progress bar, and the copy-code buttons — and nothing else ships JavaScript.
- Bun as the runtime: package manager, build tool, and production server.
- Docker to ship it to a DigitalOcean droplet.
Things you might notice#
There’s a reading-time estimate up top, a table of contents that follows along
as you scroll, and tags you can sort by. Hover a heading and a # anchor
appears. Hover a code block and a copy button slides in. Press / anywhere to
search.
The goal was restraint: every feature has to earn its place, and nothing should get between you and the words.
What’s next#
More writing, mostly. If you want to follow along, there’s an RSS feed. And if you ever want the source of a post, you already know the trick.
Thanks for reading.