Last updated: 2026-02-26 Β· 6 commits

Space God Corporation β€” Web

Static site for the collective. Built with Hugo, authored in Org-mode. Published at https://sgc1000.gitlab.io/


Authoring workflow

1. Write the article

Create a .org file under org/<section>/:

Section Directory
Fanzines org/fanzines/
Art Projects org/art-projects/
The Archive org/archive/

Every file needs these keywords at the top:

#+title:         Your Title Here
#+author:        jave
#+date:          2026-03-01
#+hugo_base_dir: ../../
#+hugo_section:  fanzines
#+hugo_draft:    false
#+description:   One-line summary shown in listings.

2. Add images (optional)

Media files live under static/media/<section>/<slug>/ and are served at /media/....

Directory convention:

static/
  media/
    fanzines/
      my-article/
        my-image.png
    art-projects/
      my-project/
        photo.jpg
    archive/
      artifact-001/
        scan.png

The <slug> matches the article filename without the .org extension.

Reference images in the org file:

#+caption: Caption text shown below the image
#+attr_html: :alt Alt text for screen readers :class center
[[/media/fanzines/my-article/my-image.png]]

Commit the image alongside the org file:

git add static/media/fanzines/my-article/my-image.png
git add org/fanzines/my-article.org
git commit -m "Add fanzine: My Article"
git push

3. Commit the org file and push

content/ is gitignored β€” only commit files under org/ and static/.

git add org/fanzines/my-article.org
git commit -m "Add fanzine: My Article"
git push

The CI pipeline converts org/ β†’ content/ β†’ public/ automatically.


Building locally

make export   # org/ β†’ content/  (Emacs container, run after editing .org files)
make          # content/ β†’ public/  (Hugo container)
make serve    # live dev server at http://localhost:1313
make clean    # remove public/

Requires Podman. No local Hugo or Emacs install needed.

content/, public/, and .cache/ are all gitignored β€” do not commit them.


CI/CD

On every push or merge to the default branch, GitLab CI runs two stages:

  1. export β€” Emacs converts org/ β†’ content/ (ox-hugo, cached between runs)
  2. pages β€” Hugo builds content/ β†’ public/ and publishes to GitLab Pages

Pipeline status: CI/CD β†’ Pipelines in the GitLab project.


Adding an author

Authors are free-form strings in #+author:. The byline template reads whatever is there. No registration needed.

Updating Hugo

Change HUGO_VERSION in Makefile and .gitlab-ci.yml to the same value. Available tags: https://github.com/gohugoio/hugo/pkgs/container/hugo

Updating Emacs / ox-hugo

Change EMACS_IMAGE in Makefile and the image: in the export-org CI job to the same value. Then delete .cache/ locally so ox-hugo is re-fetched. Available tags: https://hub.docker.com/r/silex/emacs/tags