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.#+author:drives the byline β usejaveorweipe.#+hugo_base_dir:must point back to the repo root (always../../from insideorg/<section>/).#+hugo_section:must match the directory name exactly (fanzines,art-projects,archive).
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]]- The path starts with
/media/(absolute, nostatic/prefix β Hugo strips it). #+caption:is optional but recommended.#+attr_html:is optional.:class centerapplies the themeβs centering style.
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 push3. 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 pushThe 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:
- export β Emacs converts
org/βcontent/(ox-hugo, cached between runs) - 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