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_HOSTis the public hostname; point its DNS record at the server first. It is used as the site URL at build time, asVIRTUAL_HOST, and asLETSENCRYPT_HOST.- The build fails if
COURSE_HOSTis 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.