Public marketing + documentation website for Gameplane — a Kubernetes-native game server control panel.
Live site: https://gameplane.net/
Built with Astro, Tailwind CSS 4, and self-hosted JetBrains Mono / Geist fonts. Fully static — no client framework.
This repo is mounted as the website/ git submodule of the main Gameplane repo. The visual source of truth is the Group/Public Website screens in the main repo's design.pen (Pencil); design changes happen there first, then get translated to code here.
| Command | Action |
|---|---|
npm install |
Install dependencies |
npm run dev |
Dev server at localhost:4321 |
npm run build |
Production build to dist/ |
npm run preview |
Preview the production build (served under the deploy base path) |
npm run check |
Type-check (astro check) |
npm run lint |
ESLint |
Pushes to main deploy to GitHub Pages via .github/workflows/deploy.yaml. Pull requests are gated by .github/workflows/ci.yaml (lint, type-check, build).
The site is served from the root of the custom domain gameplane.net (CUSTOM_DOMAIN in src/config.ts, public/CNAME). All internal links go through withBase() from src/lib/url.ts — never hardcode root-relative hrefs, so unsetting CUSTOM_DOMAIN (base path /website) keeps working.
- Set
CUSTOM_DOMAINinsrc/config.ts(the only code change). - Add a
public/CNAMEfile containing the domain. - Point the domain's DNS at GitHub Pages and set the custom domain in the repo's Pages settings.
AGPL-3.0-or-later, same as the main Gameplane repo.