I've been familiar with hugo before, but now I wanted something special, so I went with Zola and papermod.

To my slight surprise, the theme that I picked (papermod) didn't work out of the box. It's lovely to have something that gets me started, but this reminds me of how important it is to have well documented open source projects - thanks to this, I was able to make it into what I like to see.

Since I made quite a few changes in the theme, I decided to host it entirely as part of the same repository.

Workflows

GiTea is already running for a few years in my setup. I'll just make use of the relatively newly added "Actions", to build this static website and upload it to NeoCities.

Ideally I'd want something fast, to not install Zola each time on the Ubuntu container. As usual, I'ma make my own.

FROM alpine:3.22.4 AS base

FROM base AS build

RUN apk add --no-cache \
    curl

RUN curl -o /tmp/zola.tar.gz -sSL https://github.com/getzola/zola/releases/download/v0.22.1/zola-v0.22.1-x86_64-unknown-linux-musl.tar.gz && \
    tar -xvzf /tmp/zola.tar.gz

FROM base AS final

RUN apk add --no-cache \
    bash \
    libgcc \
    libstdc++

COPY --from=oven/bun:alpine /usr/local/bin/bun /usr/local/bin/bun
COPY --from=build /zola /usr/local/bin/zola
RUN ln -s /usr/local/bin/bun /usr/local/bin/node

Yay! I even got bun to work.

And the actions are fast

name: Build for live
run-name: ${{ gitea.actor }} is deploying on live
on:
  push:
    branches:
      - main

jobs:
  Build-and-upload:
    runs-on: alpine
    steps:
      - name: Check out repository code
        uses: actions/checkout@v6
      - run: |
          cd ${{ gitea.workspace }}
          zola build
      - name: List files in the repository
        run: |
          ls ${{ gitea.workspace }}/public
      - name: Deploy to Neocities
        env:
          NEOCITIES_API_KEY: ${{ secrets.NEOCITIES_API_KEY }}
        run: |
            cd ${{ gitea.workspace }}
            bun run scripts/deploy.js
      - run: echo "This job's status is ${{ job.status }}."

And with a bit of help from Gemini, the deployment script deploy.js via the API works great.

I could've just hosted it on some git, but I'm too lazy.

Wait

What's the Decimal Society?

Your guess is as good as mine. At the time when I wrote it, I was watching a true-crime video where a 911 operator failed to convert coordinates dictated in the Degrees/Seconds format, to decimal, which ended badly for the caller. I figured "Hey! We need the decimal system everywhere!", so here we are. Kinda random? Precisely the point.