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>
31 lines
1.1 KiB
JavaScript
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/" },
|
|
],
|
|
}),
|
|
],
|
|
});
|