How This Site Works

2026-08-05

WHY

I wanted publishing to be easy, and I wanted this site to work from a terminal. You should be able to curl jayrup.me and read the whole thing as plain text — no browser needed.

This is the pipeline that makes that happen.

HOW

Everything lives in one git repo, hosted on meru, my server at home. That repo is the source of truth. My agents on archbook (my laptop) and voidlaptop (an old laptop I turned into a server) push to it — and a push to main is a deploy.

The repo is public, so the site and the code behind it are both out in the open.

STACK

SOURCE OF TRUTH

The repo is self-contained and public — browse the source or clone it:

blog/ holds these posts as flat .qmd files; blog/index.qmd is the listing page, newest first.

PUBLISHING

  1. Write blog/<slug>.qmd with a title and date
  2. Add an entry to blog/index.qmd
  3. Push to meru — the post-receive hook renders the site in a Docker container and rsyncs it to the VPS
  4. Verify: curl https://jayrup.me/blog/<slug> — you’ll get plain text, which is the point

WHY THIS WORKS

The deploy script finds every .qmd recursively, so new posts need zero script changes. Builds run from a git snapshot of the exact commit you pushed, so what goes live is always what’s in the repo. And each deploy stamps last-deploy.txt with the commit, so the site shows you what’s actually live.

That’s the whole pipeline: a repo, a render script, and nginx. The code is all in the repo if you want to poke at it.


BACK: curl jayrup.me/blog | curl jayrup.me