Buttons are generated from CONFIG.circuits (not hand-written in index.html), so adding a circuit to the config still only takes one line — its filter button appears automatically. Uses accent color to match the circuit badges on the cards, same active/dimmed styling as Format/Scope. An event matches the circuit filter if it belongs to any active circuit (OR within the group), not all of them, since an event can legitimately carry more than one circuit tag. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SBzcNkW7JcYipnAX6HfgmK
gateway-gamers.net
Monorepo for the *.gateway-gamers.net static sites. Each site is an independent
Vite + Tailwind v4 + daisyUI project, deployed to its own subdomain, but they
share a header shell, footer, and hero-carousel images so a logo/photo swap
doesn't need to happen four times.
Layout
shared/
header.template.html # full header markup, nav swapped in at build time
footer.html # byte-identical across every site
images/ # logo + carousel photos, one copy
scripts/
render-header.mjs # shared/header.template.html + sites/<site>/nav.html -> sites/<site>/public/header.html
sites/
40k-rankings/
aos-rankings/
kingmaker/
scouting/
Each sites/<name>/ is a full Vite project (own package.json, vite.config.js,
src/, index.html). Two things are not duplicated per site:
public/footer.htmlandpublic/imagesare symlinks into../../../shared/.public/header.htmlis generated (gitignored) fromshared/header.template.htmlplus that site's ownnav.html(just its<li>nav entries) — run automatically via thepredev/prebuildnpm scripts, sonpm run dev/npm run buildalways regenerate it fresh. Nothing else about the header (carousel, logo, theme toggle) varies per site.
To add a new site's nav, edit sites/<name>/nav.html. To change the shared photos,
logo, footer copy, or header markup/structure, edit under shared/ once.
Commands (per site)
cd sites/<name>
npm install
npm run dev # http://localhost:5173, regenerates header.html first
npm run build # -> dist/
npm run preview
Deploy
.gitlab-ci.yml at the repo root builds/deploys each site independently
(path-scoped via rules: changes:), plus a deploy:shared job that syncs
shared/images/ and shared/footer.html to
/var/www/domains/gateway-gamers.net/shared/ on the webserver — the box
the GitLab Runner executes on. Every site's nginx server block points
/images/ and /footer.html at that shared directory via alias, so the
webserver only ever holds one copy of the ~25MB of images. See each
sites/<name>/<name>.gateway-gamers.net.conf for the live nginx reference
config (applied manually on the box — CI doesn't touch nginx).