Files
systemic-game-design-course/site/astro.config.mjs
T
Lucas WintherandClaude Opus 5.5 fb3d280be7 feat: playable SpellGrid page on the site (the highest TS reference, unmodified, in the browser)
The sync step copies the reference's engine, harness and content into
site/src/game/generated/ and replaces only content/index.ts (node:fs) with a
re-export of a browser content module (static imports of cards, words, seams,
levels). /play/ has a level picker, text-tile grid, keyboard and buttons, cards
then tiles, the chooser as buttons, rules, minions, the log tree, Undo by
replay and Restart. test:site plays l3 to the win under plain Node. Lessons
5, 10-13 and the home page link the page; lesson links to site pages go
through their source file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 14:22:50 +01:00

31 lines
1.1 KiB
JavaScript

import { defineConfig } from "astro/config";
import starlight from "@astrojs/starlight";
// The site is served at the root of its own subdomain. Set COURSE_HOST at build time
// (e.g. COURSE_HOST=course.example.com). Unset means a local run (http://localhost:4321);
// deploys must not rely on this: deploy/Dockerfile and docker-compose.yml require COURSE_HOST.
const host = process.env.COURSE_HOST;
export default defineConfig({
site: host ? `https://${host}` : "http://localhost:4321",
base: "/",
integrations: [
starlight({
title: "Systemic Design Course",
description: "A free, hands-on course on extensible systemic game design, in Rust and TypeScript.",
social: [
{
icon: "external",
label: "Source repository",
href: "https://gitea.lucaswinther.info/lucasw89/systemic-game-design-course",
},
],
sidebar: [
{ label: "Start here", items: ["disclaimer", "about"] },
{ label: "Modules", items: [{ autogenerate: { directory: "course" } }] },
{ label: "Play SpellGrid", link: "/play/" },
],
}),
],
});