cmd / blog

I edit this blog using a simple Go static site generator co-located with the articles at croaky/blog.

CLI

Install Go, then run:

go install ./...

This installs a blog command-line program:

usage:
  blog serve
  blog build

It expects a file layout like this:

.
├── articles
│   └── example.md
├── images
│   └── example.png
└-─ theme
    ├── public
    │   └── favicon.ico
    ├── article.html
    └── index.html

Write

Edit articles/example.md. It is a GitHub-Flavored Markdown file with no front matter.

The first line of the file is the article title. It must be an <h1> tag:

# Example Article

Preview at http://localhost:2000 with:

blog serve

Add images to the images directory. Refer to them in articles:

![alt text](/images/example.png)

Modify theme

All theme/public files are copied to public.

The theme/article.html file is parsed as a Go template. Syntax highlighting is generated at build time (no client-side JavaScript highlighting). theme/article.html accepts a data structure like this:

{
  Article: {
    ID:            "example-article",
    Title:         "Example Article",
    LastUpdatedOn: "April 15, 2018",
    Body:          "<p>Hello, world.</p>",
  }
}

The theme/index.html template is pure HTML. It is up to the author to decide how to lay out their index and link to their articles.

Cloudflare Pages

Create a static site on Cloudflare Pages:

Use the Cloudflare v2 build environment for the latest version of Go.

To deploy the site, commit and push to the main branch of the GitHub repo.

View deploy logs in the Cloudflare web interface.