diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..60ce653 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,178 @@ +stages: + - build + - deploy + - refresh + +.build_script: &build_script + - cd sites/${SITE} + - npm ci + - npm run build + +# --------------------------------------------------------------------------- +# shared assets (images + footer.html) — deployed once to a shared dir that +# every site's nginx server block points at via `alias`, so a photo/logo +# update only has to land in one place instead of four. +# --------------------------------------------------------------------------- + +deploy:shared: + stage: deploy + script: + - rsync -avz --delete shared/images/ /var/www/domains/gateway-gamers.net/shared/images/ + - rsync -avz shared/footer.html /var/www/domains/gateway-gamers.net/shared/footer.html + rules: + - if: '$CI_COMMIT_BRANCH == "main"' + changes: + - shared/**/* + environment: + name: production/shared + +# --------------------------------------------------------------------------- +# 40k-rankings +# --------------------------------------------------------------------------- + +build:40k-rankings: + stage: build + variables: + SITE: 40k-rankings + script: *build_script + artifacts: + paths: + - sites/40k-rankings/dist/ + expire_in: 1 hour + rules: + - if: '$CI_COMMIT_BRANCH == "main"' + changes: + - sites/40k-rankings/**/* + - shared/**/* + +deploy:40k-rankings: + stage: deploy + needs: ["build:40k-rankings"] + script: + - rsync -avz --delete --exclude images --exclude footer.html sites/40k-rankings/dist/ /var/www/domains/gateway-gamers.net/40k-rankings/ + rules: + - if: '$CI_COMMIT_BRANCH == "main"' + changes: + - sites/40k-rankings/**/* + - shared/**/* + environment: + name: production + url: https://40k-rankings.gateway-gamers.net + +refresh-elo: + stage: refresh + image: python:3.12-slim + variables: + GIT_STRATEGY: clone + script: + - cd sites/40k-rankings/statcheck-elo-scraper && python refresh_elo.py && cd ../../.. + - git config user.email "gitlab-ci@gateway-gamers.net" + - git config user.name "GitLab CI" + - git remote set-url origin "https://oauth2:${GITLAB_ACCESS_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git" + - git add sites/40k-rankings/public/elo-data.json + - | + if ! git diff --cached --quiet; then + git commit -m "data: refresh stat-check ELO rankings" + git push origin HEAD:main + fi + only: + - schedules + +# --------------------------------------------------------------------------- +# aos-rankings +# --------------------------------------------------------------------------- + +build:aos-rankings: + stage: build + variables: + SITE: aos-rankings + script: *build_script + artifacts: + paths: + - sites/aos-rankings/dist/ + expire_in: 1 hour + rules: + - if: '$CI_COMMIT_BRANCH == "main"' + changes: + - sites/aos-rankings/**/* + - shared/**/* + +deploy:aos-rankings: + stage: deploy + needs: ["build:aos-rankings"] + script: + - rsync -avz --delete --exclude images --exclude footer.html sites/aos-rankings/dist/ /var/www/domains/gateway-gamers.net/aos-rankings/ + rules: + - if: '$CI_COMMIT_BRANCH == "main"' + changes: + - sites/aos-rankings/**/* + - shared/**/* + environment: + name: production + url: https://aos-rankings.gateway-gamers.net + +# --------------------------------------------------------------------------- +# kingmaker +# --------------------------------------------------------------------------- + +build:kingmaker: + stage: build + variables: + SITE: kingmaker + script: *build_script + artifacts: + paths: + - sites/kingmaker/dist/ + expire_in: 1 hour + rules: + - if: '$CI_COMMIT_BRANCH == "main"' + changes: + - sites/kingmaker/**/* + - shared/**/* + +deploy:kingmaker: + stage: deploy + needs: ["build:kingmaker"] + script: + - rsync -avz --delete --exclude images --exclude footer.html sites/kingmaker/dist/ /var/www/domains/gateway-gamers.net/kingmaker/ + rules: + - if: '$CI_COMMIT_BRANCH == "main"' + changes: + - sites/kingmaker/**/* + - shared/**/* + environment: + name: production + url: https://kingmaker.gateway-gamers.net + +# --------------------------------------------------------------------------- +# scouting +# --------------------------------------------------------------------------- + +build:scouting: + stage: build + variables: + SITE: scouting + script: *build_script + artifacts: + paths: + - sites/scouting/dist/ + expire_in: 1 hour + rules: + - if: '$CI_COMMIT_BRANCH == "main"' + changes: + - sites/scouting/**/* + - shared/**/* + +deploy:scouting: + stage: deploy + needs: ["build:scouting"] + script: + - rsync -avz --delete --exclude images --exclude footer.html sites/scouting/dist/ /var/www/domains/gateway-gamers.net/scouting/ + rules: + - if: '$CI_COMMIT_BRANCH == "main"' + changes: + - sites/scouting/**/* + - shared/**/* + environment: + name: production + url: https://scouting.gateway-gamers.net diff --git a/README.md b/README.md new file mode 100644 index 0000000..9443766 --- /dev/null +++ b/README.md @@ -0,0 +1,57 @@ +# 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//nav.html -> sites//public/header.html +sites/ + 40k-rankings/ + aos-rankings/ + kingmaker/ + scouting/ +``` + +Each `sites//` is a full Vite project (own `package.json`, `vite.config.js`, +`src/`, `index.html`). Two things are *not* duplicated per site: + +- `public/footer.html` and `public/images` are symlinks into `../../../shared/`. +- `public/header.html` is generated (gitignored) from `shared/header.template.html` + plus that site's own `nav.html` (just its `
  • ` nav entries) — run automatically + via the `predev`/`prebuild` npm scripts, so `npm run dev` / `npm run build` always + regenerate it fresh. Nothing else about the header (carousel, logo, theme toggle) + varies per site. + +To add a new site's nav, edit `sites//nav.html`. To change the shared photos, +logo, footer copy, or header markup/structure, edit under `shared/` once. + +## Commands (per site) + +```bash +cd sites/ +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//.gateway-gamers.net.conf` for the live nginx reference +config (applied manually on the box — CI doesn't touch nginx). diff --git a/scripts/render-header.mjs b/scripts/render-header.mjs new file mode 100644 index 0000000..dec5c6a --- /dev/null +++ b/scripts/render-header.mjs @@ -0,0 +1,33 @@ +#!/usr/bin/env node +// Assembles sites//public/header.html from shared/header.template.html +// + sites//nav.html. Run automatically via each site's predev/prebuild. +import { readFileSync, writeFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import path from 'node:path'; + +const site = process.argv[2]; +if (!site) { + console.error('usage: render-header.mjs '); + process.exit(1); +} + +const root = path.resolve(fileURLToPath(import.meta.url), '../..'); +const templatePath = path.join(root, 'shared/header.template.html'); +const navPath = path.join(root, 'sites', site, 'nav.html'); +const outPath = path.join(root, 'sites', site, 'public/header.html'); + +const template = readFileSync(templatePath, 'utf8'); +const nav = readFileSync(navPath, 'utf8').trimEnd(); + +const placeholder = ''; +const parts = template.split(placeholder); +if (parts.length !== 3) { + console.error(`expected exactly 2 occurrences of ${placeholder} in ${templatePath}, found ${parts.length - 1}`); + process.exit(1); +} + +const indent = (block, spaces) => + block.split('\n').map(line => ' '.repeat(spaces) + line).join('\n'); + +const rendered = parts[0] + indent(nav, 8) + parts[1] + indent(nav, 10) + parts[2]; +writeFileSync(outPath, rendered); diff --git a/shared/footer.html b/shared/footer.html new file mode 100644 index 0000000..35977fb --- /dev/null +++ b/shared/footer.html @@ -0,0 +1,3 @@ +
    +

    © 2026 Gateway Gamers. All rights reserved.

    +
    diff --git a/sites/scouting/public/header.html b/shared/header.template.html similarity index 96% rename from sites/scouting/public/header.html rename to shared/header.template.html index c4923b7..d4159c8 100644 --- a/sites/scouting/public/header.html +++ b/shared/header.template.html @@ -28,7 +28,7 @@ diff --git a/sites/40k-rankings/public/images/logo.png b/shared/images/logo.png similarity index 100% rename from sites/40k-rankings/public/images/logo.png rename to shared/images/logo.png diff --git a/sites/40k-rankings/public/images/photo1.jpg b/shared/images/photo1.jpg similarity index 100% rename from sites/40k-rankings/public/images/photo1.jpg rename to shared/images/photo1.jpg diff --git a/sites/40k-rankings/public/images/photo2.jpg b/shared/images/photo2.jpg similarity index 100% rename from sites/40k-rankings/public/images/photo2.jpg rename to shared/images/photo2.jpg diff --git a/sites/40k-rankings/public/images/photo3.jpg b/shared/images/photo3.jpg similarity index 100% rename from sites/40k-rankings/public/images/photo3.jpg rename to shared/images/photo3.jpg diff --git a/sites/40k-rankings/public/images/photo4.jpg b/shared/images/photo4.jpg similarity index 100% rename from sites/40k-rankings/public/images/photo4.jpg rename to shared/images/photo4.jpg diff --git a/sites/40k-rankings/public/images/photo5.jpg b/shared/images/photo5.jpg similarity index 100% rename from sites/40k-rankings/public/images/photo5.jpg rename to shared/images/photo5.jpg diff --git a/sites/40k-rankings/.gitignore b/sites/40k-rankings/.gitignore index dafa699..800a23d 100644 --- a/sites/40k-rankings/.gitignore +++ b/sites/40k-rankings/.gitignore @@ -2,3 +2,6 @@ node_modules/ dist/ .env .env.local + +# generated from shared/header.template.html — see scripts/render-header.mjs +public/header.html diff --git a/sites/40k-rankings/.gitlab-ci.yml b/sites/40k-rankings/.gitlab-ci.yml deleted file mode 100644 index 813fa3d..0000000 --- a/sites/40k-rankings/.gitlab-ci.yml +++ /dev/null @@ -1,49 +0,0 @@ -stages: - - build - - deploy - - refresh - -build: - stage: build - script: - - npm ci - - npm run build - artifacts: - paths: - - dist/ - expire_in: 1 hour - only: - - main - except: - - schedules - -deploy: - stage: deploy - script: - - rsync -avz --delete dist/ /var/www/domains/gateway-gamers.net/40k-rankings/ - only: - - main - except: - - schedules - environment: - name: production - url: https://40k-rankings.gateway-gamers.net - -refresh-elo: - stage: refresh - image: python:3.12-slim - variables: - GIT_STRATEGY: clone - script: - - cd statcheck-elo-scraper && python refresh_elo.py && cd .. - - git config user.email "gitlab-ci@gateway-gamers.net" - - git config user.name "GitLab CI" - - git remote set-url origin "https://oauth2:${GITLAB_ACCESS_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git" - - git add public/elo-data.json - - | - if ! git diff --cached --quiet; then - git commit -m "data: refresh stat-check ELO rankings" - git push origin HEAD:main - fi - only: - - schedules diff --git a/sites/40k-rankings/40k-rankings.gateway-gamers.net.conf b/sites/40k-rankings/40k-rankings.gateway-gamers.net.conf index 0002bb9..2a57242 100644 --- a/sites/40k-rankings/40k-rankings.gateway-gamers.net.conf +++ b/sites/40k-rankings/40k-rankings.gateway-gamers.net.conf @@ -30,6 +30,16 @@ server { add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always; add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; connect-src 'self' https://newprod-api.bestcoastpairings.com; img-src 'self' data:;" always; + # Shared assets (images + footer) — single on-disk copy under shared/, + # deployed once and aliased by every gateway-gamers.net site. + location /images/ { + alias /var/www/domains/gateway-gamers.net/shared/images/; + } + + location = /footer.html { + alias /var/www/domains/gateway-gamers.net/shared/footer.html; + } + location / { try_files $uri $uri/ =404; } diff --git a/sites/40k-rankings/nav.html b/sites/40k-rankings/nav.html new file mode 100644 index 0000000..a87a184 --- /dev/null +++ b/sites/40k-rankings/nav.html @@ -0,0 +1,2 @@ +
  • 40K Rankings
  • +
  • AOS Rankings
  • diff --git a/sites/40k-rankings/package.json b/sites/40k-rankings/package.json index d8a6d10..e22986e 100644 --- a/sites/40k-rankings/package.json +++ b/sites/40k-rankings/package.json @@ -4,7 +4,9 @@ "private": true, "type": "module", "scripts": { + "predev": "node ../../scripts/render-header.mjs 40k-rankings", "dev": "vite", + "prebuild": "node ../../scripts/render-header.mjs 40k-rankings", "build": "vite build", "preview": "vite preview" }, diff --git a/sites/40k-rankings/public/footer.html b/sites/40k-rankings/public/footer.html deleted file mode 100644 index 35977fb..0000000 --- a/sites/40k-rankings/public/footer.html +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    © 2026 Gateway Gamers. All rights reserved.

    -
    diff --git a/sites/40k-rankings/public/footer.html b/sites/40k-rankings/public/footer.html new file mode 120000 index 0000000..f9e4b6b --- /dev/null +++ b/sites/40k-rankings/public/footer.html @@ -0,0 +1 @@ +../../../shared/footer.html \ No newline at end of file diff --git a/sites/40k-rankings/public/header.html b/sites/40k-rankings/public/header.html deleted file mode 100644 index ff6ea8d..0000000 --- a/sites/40k-rankings/public/header.html +++ /dev/null @@ -1,59 +0,0 @@ -
    - - -
    - - - - - -
    - - -
    - - Gateway Gamers - -
    - -
    - - - - -
    diff --git a/sites/40k-rankings/public/images b/sites/40k-rankings/public/images new file mode 120000 index 0000000..c7406c1 --- /dev/null +++ b/sites/40k-rankings/public/images @@ -0,0 +1 @@ +../../../shared/images \ No newline at end of file diff --git a/sites/aos-rankings/.gitignore b/sites/aos-rankings/.gitignore index dafa699..800a23d 100644 --- a/sites/aos-rankings/.gitignore +++ b/sites/aos-rankings/.gitignore @@ -2,3 +2,6 @@ node_modules/ dist/ .env .env.local + +# generated from shared/header.template.html — see scripts/render-header.mjs +public/header.html diff --git a/sites/aos-rankings/.gitlab-ci.yml b/sites/aos-rankings/.gitlab-ci.yml deleted file mode 100644 index 2638b85..0000000 --- a/sites/aos-rankings/.gitlab-ci.yml +++ /dev/null @@ -1,25 +0,0 @@ -stages: - - build - - deploy - -build: - stage: build - script: - - npm ci - - npm run build - artifacts: - paths: - - dist/ - expire_in: 1 hour - only: - - main - -deploy: - stage: deploy - script: - - rsync -avz --delete dist/ /var/www/domains/gateway-gamers.net/aos-rankings/ - only: - - main - environment: - name: production - url: https://aos-rankings.gateway-gamers.net diff --git a/sites/aos-rankings/aos-rankings.gateway-gamers.net.conf b/sites/aos-rankings/aos-rankings.gateway-gamers.net.conf index f52e308..e9470e9 100644 --- a/sites/aos-rankings/aos-rankings.gateway-gamers.net.conf +++ b/sites/aos-rankings/aos-rankings.gateway-gamers.net.conf @@ -30,6 +30,16 @@ server { add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always; add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; connect-src 'self' https://newprod-api.bestcoastpairings.com; img-src 'self' data:;" always; + # Shared assets (images + footer) — single on-disk copy under shared/, + # deployed once and aliased by every gateway-gamers.net site. + location /images/ { + alias /var/www/domains/gateway-gamers.net/shared/images/; + } + + location = /footer.html { + alias /var/www/domains/gateway-gamers.net/shared/footer.html; + } + location / { try_files $uri $uri/ =404; } diff --git a/sites/aos-rankings/nav.html b/sites/aos-rankings/nav.html new file mode 100644 index 0000000..97f4072 --- /dev/null +++ b/sites/aos-rankings/nav.html @@ -0,0 +1,2 @@ +
  • 40K Rankings
  • +
  • AOS Rankings
  • diff --git a/sites/aos-rankings/package.json b/sites/aos-rankings/package.json index 15852fd..80e1a54 100644 --- a/sites/aos-rankings/package.json +++ b/sites/aos-rankings/package.json @@ -4,7 +4,9 @@ "private": true, "type": "module", "scripts": { + "predev": "node ../../scripts/render-header.mjs aos-rankings", "dev": "vite", + "prebuild": "node ../../scripts/render-header.mjs aos-rankings", "build": "vite build", "preview": "vite preview" }, diff --git a/sites/aos-rankings/public/footer.html b/sites/aos-rankings/public/footer.html deleted file mode 100644 index 35977fb..0000000 --- a/sites/aos-rankings/public/footer.html +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    © 2026 Gateway Gamers. All rights reserved.

    -
    diff --git a/sites/aos-rankings/public/footer.html b/sites/aos-rankings/public/footer.html new file mode 120000 index 0000000..f9e4b6b --- /dev/null +++ b/sites/aos-rankings/public/footer.html @@ -0,0 +1 @@ +../../../shared/footer.html \ No newline at end of file diff --git a/sites/aos-rankings/public/header.html b/sites/aos-rankings/public/header.html deleted file mode 100644 index 983cf7b..0000000 --- a/sites/aos-rankings/public/header.html +++ /dev/null @@ -1,59 +0,0 @@ -
    - - -
    - - - - - -
    - - -
    - - Gateway Gamers - -
    - -
    - - - - -
    diff --git a/sites/aos-rankings/public/images b/sites/aos-rankings/public/images new file mode 120000 index 0000000..c7406c1 --- /dev/null +++ b/sites/aos-rankings/public/images @@ -0,0 +1 @@ +../../../shared/images \ No newline at end of file diff --git a/sites/aos-rankings/public/images/logo.png b/sites/aos-rankings/public/images/logo.png deleted file mode 100644 index 0ea6f7e..0000000 Binary files a/sites/aos-rankings/public/images/logo.png and /dev/null differ diff --git a/sites/aos-rankings/public/images/photo1.jpg b/sites/aos-rankings/public/images/photo1.jpg deleted file mode 100644 index 1bc8791..0000000 Binary files a/sites/aos-rankings/public/images/photo1.jpg and /dev/null differ diff --git a/sites/aos-rankings/public/images/photo2.jpg b/sites/aos-rankings/public/images/photo2.jpg deleted file mode 100644 index 6484be1..0000000 Binary files a/sites/aos-rankings/public/images/photo2.jpg and /dev/null differ diff --git a/sites/aos-rankings/public/images/photo3.jpg b/sites/aos-rankings/public/images/photo3.jpg deleted file mode 100644 index 152560f..0000000 Binary files a/sites/aos-rankings/public/images/photo3.jpg and /dev/null differ diff --git a/sites/aos-rankings/public/images/photo4.jpg b/sites/aos-rankings/public/images/photo4.jpg deleted file mode 100644 index 3bf4a4f..0000000 Binary files a/sites/aos-rankings/public/images/photo4.jpg and /dev/null differ diff --git a/sites/aos-rankings/public/images/photo5.jpg b/sites/aos-rankings/public/images/photo5.jpg deleted file mode 100644 index 5c4807a..0000000 Binary files a/sites/aos-rankings/public/images/photo5.jpg and /dev/null differ diff --git a/sites/kingmaker/.gitignore b/sites/kingmaker/.gitignore index dafa699..800a23d 100644 --- a/sites/kingmaker/.gitignore +++ b/sites/kingmaker/.gitignore @@ -2,3 +2,6 @@ node_modules/ dist/ .env .env.local + +# generated from shared/header.template.html — see scripts/render-header.mjs +public/header.html diff --git a/sites/kingmaker/.gitlab-ci.yml b/sites/kingmaker/.gitlab-ci.yml deleted file mode 100644 index 53b7319..0000000 --- a/sites/kingmaker/.gitlab-ci.yml +++ /dev/null @@ -1,25 +0,0 @@ -stages: - - build - - deploy - -build: - stage: build - script: - - npm ci - - npm run build - artifacts: - paths: - - dist/ - expire_in: 1 hour - only: - - main - -deploy: - stage: deploy - script: - - rsync -avz --delete dist/ /var/www/domains/gateway-gamers.net/kingmaker/ - only: - - main - environment: - name: production - url: https://kingmaker.gateway-gamers.net diff --git a/sites/kingmaker/kingmaker.gateway-gamers.net.conf b/sites/kingmaker/kingmaker.gateway-gamers.net.conf index 5717f4d..839e3f7 100644 --- a/sites/kingmaker/kingmaker.gateway-gamers.net.conf +++ b/sites/kingmaker/kingmaker.gateway-gamers.net.conf @@ -30,6 +30,16 @@ server { add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always; add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; frame-src https://docs.google.com; img-src 'self' data:;" always; + # Shared assets (images + footer) — single on-disk copy under shared/, + # deployed once and aliased by every gateway-gamers.net site. + location /images/ { + alias /var/www/domains/gateway-gamers.net/shared/images/; + } + + location = /footer.html { + alias /var/www/domains/gateway-gamers.net/shared/footer.html; + } + location / { try_files $uri $uri/ =404; } diff --git a/sites/kingmaker/nav.html b/sites/kingmaker/nav.html new file mode 100644 index 0000000..ff25d34 --- /dev/null +++ b/sites/kingmaker/nav.html @@ -0,0 +1,4 @@ +
  • Home
  • +
  • Sign-ups
  • +
  • Game Reporting
  • +
  • Standings
  • diff --git a/sites/kingmaker/package.json b/sites/kingmaker/package.json index 43abef7..414e38e 100644 --- a/sites/kingmaker/package.json +++ b/sites/kingmaker/package.json @@ -4,7 +4,9 @@ "private": true, "type": "module", "scripts": { + "predev": "node ../../scripts/render-header.mjs kingmaker", "dev": "vite", + "prebuild": "node ../../scripts/render-header.mjs kingmaker", "build": "vite build", "preview": "vite preview" }, diff --git a/sites/kingmaker/public/footer.html b/sites/kingmaker/public/footer.html deleted file mode 100644 index 35977fb..0000000 --- a/sites/kingmaker/public/footer.html +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    © 2026 Gateway Gamers. All rights reserved.

    -
    diff --git a/sites/kingmaker/public/footer.html b/sites/kingmaker/public/footer.html new file mode 120000 index 0000000..f9e4b6b --- /dev/null +++ b/sites/kingmaker/public/footer.html @@ -0,0 +1 @@ +../../../shared/footer.html \ No newline at end of file diff --git a/sites/kingmaker/public/header.html b/sites/kingmaker/public/header.html deleted file mode 100644 index 8bea7c7..0000000 --- a/sites/kingmaker/public/header.html +++ /dev/null @@ -1,63 +0,0 @@ -
    - - -
    - - - - - -
    - - -
    - - Gateway Gamers - -
    - -
    - - - - -
    diff --git a/sites/kingmaker/public/images b/sites/kingmaker/public/images new file mode 120000 index 0000000..c7406c1 --- /dev/null +++ b/sites/kingmaker/public/images @@ -0,0 +1 @@ +../../../shared/images \ No newline at end of file diff --git a/sites/kingmaker/public/images/logo.png b/sites/kingmaker/public/images/logo.png deleted file mode 100644 index 0ea6f7e..0000000 Binary files a/sites/kingmaker/public/images/logo.png and /dev/null differ diff --git a/sites/kingmaker/public/images/photo1.jpg b/sites/kingmaker/public/images/photo1.jpg deleted file mode 100644 index 1bc8791..0000000 Binary files a/sites/kingmaker/public/images/photo1.jpg and /dev/null differ diff --git a/sites/kingmaker/public/images/photo2.jpg b/sites/kingmaker/public/images/photo2.jpg deleted file mode 100644 index 6484be1..0000000 Binary files a/sites/kingmaker/public/images/photo2.jpg and /dev/null differ diff --git a/sites/kingmaker/public/images/photo3.jpg b/sites/kingmaker/public/images/photo3.jpg deleted file mode 100644 index 152560f..0000000 Binary files a/sites/kingmaker/public/images/photo3.jpg and /dev/null differ diff --git a/sites/kingmaker/public/images/photo4.jpg b/sites/kingmaker/public/images/photo4.jpg deleted file mode 100644 index 3bf4a4f..0000000 Binary files a/sites/kingmaker/public/images/photo4.jpg and /dev/null differ diff --git a/sites/kingmaker/public/images/photo5.jpg b/sites/kingmaker/public/images/photo5.jpg deleted file mode 100644 index 5c4807a..0000000 Binary files a/sites/kingmaker/public/images/photo5.jpg and /dev/null differ diff --git a/sites/scouting/.gitignore b/sites/scouting/.gitignore index 66fe16c..4fcdf22 100644 --- a/sites/scouting/.gitignore +++ b/sites/scouting/.gitignore @@ -3,3 +3,6 @@ dist/ .env .env.local .claude/settings.local.json + +# generated from shared/header.template.html — see scripts/render-header.mjs +public/header.html diff --git a/sites/scouting/.gitlab-ci.yml b/sites/scouting/.gitlab-ci.yml deleted file mode 100644 index 1aaf4a1..0000000 --- a/sites/scouting/.gitlab-ci.yml +++ /dev/null @@ -1,29 +0,0 @@ -stages: - - build - - deploy - -build: - stage: build - script: - - npm ci - - npm run build - artifacts: - paths: - - dist/ - expire_in: 1 hour - only: - - main - except: - - schedules - -deploy: - stage: deploy - script: - - rsync -avz --delete dist/ /var/www/domains/gateway-gamers.net/scouting/ - only: - - main - except: - - schedules - environment: - name: production - url: https://scouting.gateway-gamers.net diff --git a/sites/scouting/nav.html b/sites/scouting/nav.html new file mode 100644 index 0000000..b6a5a68 --- /dev/null +++ b/sites/scouting/nav.html @@ -0,0 +1 @@ +
  • Scouting
  • diff --git a/sites/scouting/package.json b/sites/scouting/package.json index f0d0720..9a1047a 100644 --- a/sites/scouting/package.json +++ b/sites/scouting/package.json @@ -4,7 +4,9 @@ "private": true, "type": "module", "scripts": { + "predev": "node ../../scripts/render-header.mjs scouting", "dev": "vite", + "prebuild": "node ../../scripts/render-header.mjs scouting", "build": "vite build", "preview": "vite preview" }, diff --git a/sites/scouting/public/footer.html b/sites/scouting/public/footer.html deleted file mode 100644 index 35977fb..0000000 --- a/sites/scouting/public/footer.html +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/sites/scouting/public/footer.html b/sites/scouting/public/footer.html new file mode 120000 index 0000000..f9e4b6b --- /dev/null +++ b/sites/scouting/public/footer.html @@ -0,0 +1 @@ +../../../shared/footer.html \ No newline at end of file diff --git a/sites/scouting/public/images b/sites/scouting/public/images new file mode 120000 index 0000000..c7406c1 --- /dev/null +++ b/sites/scouting/public/images @@ -0,0 +1 @@ +../../../shared/images \ No newline at end of file diff --git a/sites/scouting/public/images/logo.png b/sites/scouting/public/images/logo.png deleted file mode 100644 index 0ea6f7e..0000000 Binary files a/sites/scouting/public/images/logo.png and /dev/null differ diff --git a/sites/scouting/public/images/photo1.jpg b/sites/scouting/public/images/photo1.jpg deleted file mode 100644 index 1bc8791..0000000 Binary files a/sites/scouting/public/images/photo1.jpg and /dev/null differ diff --git a/sites/scouting/public/images/photo2.jpg b/sites/scouting/public/images/photo2.jpg deleted file mode 100644 index 6484be1..0000000 Binary files a/sites/scouting/public/images/photo2.jpg and /dev/null differ diff --git a/sites/scouting/public/images/photo3.jpg b/sites/scouting/public/images/photo3.jpg deleted file mode 100644 index 152560f..0000000 Binary files a/sites/scouting/public/images/photo3.jpg and /dev/null differ diff --git a/sites/scouting/public/images/photo4.jpg b/sites/scouting/public/images/photo4.jpg deleted file mode 100644 index 3bf4a4f..0000000 Binary files a/sites/scouting/public/images/photo4.jpg and /dev/null differ diff --git a/sites/scouting/public/images/photo5.jpg b/sites/scouting/public/images/photo5.jpg deleted file mode 100644 index 5c4807a..0000000 Binary files a/sites/scouting/public/images/photo5.jpg and /dev/null differ diff --git a/sites/scouting/scouting.gateway-gamers.net.conf b/sites/scouting/scouting.gateway-gamers.net.conf index 924daf5..9a8acce 100644 --- a/sites/scouting/scouting.gateway-gamers.net.conf +++ b/sites/scouting/scouting.gateway-gamers.net.conf @@ -35,6 +35,16 @@ server { # style attribute). add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self' https://newprod-api.bestcoastpairings.com; img-src 'self' data:;" always; + # Shared assets (images + footer) — single on-disk copy under shared/, + # deployed once and aliased by every gateway-gamers.net site. + location /images/ { + alias /var/www/domains/gateway-gamers.net/shared/images/; + } + + location = /footer.html { + alias /var/www/domains/gateway-gamers.net/shared/footer.html; + } + location / { try_files $uri $uri/ =404; }