Files

Deploying the course site

The site (site/, Astro Starlight) is built into static files and served by nginx:alpine. It is meant to run behind a jwilder/nginx-proxy container with acme-companion (Let's Encrypt), which routes by the VIRTUAL_HOST variable.

Deploy

git clone https://gitea.lucaswinther.info/lucasw89/systemic-game-design-course.git
cd systemic-game-design-course/deploy
cp .env.example .env      # set COURSE_HOST (and PROXY_NETWORK if yours differs)
docker compose up -d --build
  • COURSE_HOST is the public hostname; point its DNS record at the server first. It is used as the site URL at build time, as VIRTUAL_HOST, and as LETSENCRYPT_HOST.
  • The build fails if COURSE_HOST is unset, so the placeholder URL never ships.
  • The container joins the external Docker network ${PROXY_NETWORK:-nginx-proxy}; it must be the network your nginx-proxy container is on.
  • To update: git pull && docker compose up -d --build.

Manual build: docker build -f deploy/Dockerfile --build-arg COURSE_HOST=course.example.com . (run from the repository root).

CI

.gitea/workflows/ci.yml runs on Gitea Actions (needs a runner with the ubuntu-latest label):

Job Runs
tools npm run test:tools, npm run check (sync-check), npm run test:site
verify-references node tools/verify-references.mjs: every module's reference, Rust and TS, with cumulative tests (needs network for npm install; Rust pinned to 1.85.1)
coupling-audit tools/coupling-audit.mjs on every course/*/reference/*
site npm --prefix site ci && npm --prefix site run build with a dummy COURSE_HOST
naive-engine Module 0's engine: cargo test, npm test, npm run typecheck. The whirlwind-order test is expected to fail and is marked should_panic / test.fails, so the suite passes

There is no clippy step.