Why this site is one Go binary and a folder of AsciiDoc
This site has no JavaScript framework, no bundler, no node_modules, and no database. It is a single Go binary that reads a folder of AsciiDoc files and writes a static site, which is then served from Cloudflare's edge for free.
The whole pipeline
| Stage | Tool |
|---|---|
Authoring |
Any editor, plain |
Rendering |
~600 lines of Go, |
Templates |
Go |
Hosting |
Cloudflare Pages, free tier |
Publishing a post means dropping one file in content/posts/ and running one
command. The binary handles the rest: clean URLs, RSS, sitemap, Open Graph
tags, and JSON-LD structured data.
What AsciiDoc gives me that Markdown does not
-
Real document headers: title, revision, author, custom attributes
-
Tables, admonitions, callouts, and section cross-references
-
Built for technical writing, which is what lives here
A sample block, rendered by the same converter that renders this page:
// the entire publish loop
func Deploy(root string) error {
if err := Build(root, false); err != nil {
return err
}
return wrangler(root, "public") // direct upload to Pages
}|
Tip
|
Posts marked with the draft attribute are excluded from production
builds but visible while drafting locally. No draft branch juggling.
|
Why Cloudflare Pages
Direct Upload means the deploy is just an authenticated API push of the
public/ folder. The git repository stays private and is only a source of
truth for content, not a deploy trigger.
More on the Cloudflare Pages docs if you care. Meanwhile, there is an about page and a projects page.