bismigel

How this site is built

I write in Org, convert with pandoc, and build with Hugo. Here is the whole pipeline in one screen.

Writing

Every post is a file in org/{.verbatim}. This one starts like:

org
#+TITLE: How this site is built
#+DATE: 2026-10-02

Body text in Org.

Org gives me headings, tables, source blocks, footnotes, and export keywords. I never hand-write HTML.

Converting

A small script turns each Org file into Hugo Markdown with front matter:

shell
pandoc -s -f org -t markdown --wrap=none org/post.org \
  -o content/posts/post/index.md

Pandoc maps #+TITLE{.verbatim} and #+DATE{.verbatim} to YAML front matter. One extra step maps #+FILETAGS{.verbatim} to Hugo tags.

Building and shipping

shell
hugo --minify    # Org -> HTML into public/

CI runs the same steps on every push:

  1. convert Org to Markdown
  2. run hugo --minify{.verbatim}
  3. build a small nginx image that contains public/{.verbatim}
  4. push the image to GHCR and bump its tag

ArgoCD watches the manifest and rolls out the new image. I never deploy by hand.

Four jobs, four tools

Job Tool


writing Org and Emacs conversion pandoc build Hugo deploy GHCR and ArgoCD

Each tool does one thing, which means I can replace any of them without touching the rest.