Files
gateway-gamers.net/sites/scouting/README.md
T
mandaloreandClaude Opus 5.5 95a54e9ec2 Add per-site READMEs describing what each site serves
Covers pages, data sources, config knobs, files and deploy target for
40k-rankings, aos-rankings, events, kingmaker and scouting. Also lists
events in the root README layout and points to the per-site docs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-22 16:46:40 -05:00

85 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# scouting.gateway-gamers.net
**BCP Roster Scout**: paste a Best Coast Pairings (BCP) event link and get
instant roster stats for that event. For team events, it can also generate a
pre-filled Google Sheets matchup matrix for each opposing team.
## What it serves
A single page (`index.html`). Enter an event URL or ID (it's also read from
`?event=<id>`, so scouted events can be linked) and the page shows:
- **Summary**: event name and dates, player and team counts, checked-in rate,
lists submitted.
- **Insights and faction distribution**: faction spread, with each faction's
most-used dispositions (Purge the Foe, Take and Hold and so on).
- **Roster**, with ITC rank (Warhammer Global Rankings 2026) and career win %
for every player:
- team events: grouped by team, with a search box
- singles events: a flat player table
- **Generate Matrix** (team events): pick your team and the page:
1. copies the team's Google Sheets matchup-matrix template once per opposing
team
2. fills in each opponent's name, faction and career win %, plus their army
list cleaned up by the vendored 40k Compactor
3. links you to the new spreadsheet
## Data sources
| Data | Source |
| --- | --- |
| Event, roster, team players | BCP `events/{id}` and related endpoints |
| ITC rank | BCP `placings` for the ITC league and region |
| Career WLT | BCP `placings?userId=…` for each player |
| Army lists | BCP `armylists/{id}` (needs a subscriber token) |
| Matrix | Google Drive and Sheets APIs, as the signed-in viewer |
All requests come from the viewer's browser. There's no backend and nothing is
stored on the server.
### Optional BCP token
BCP often leaves faction or disposition blank on the roster. A viewer with a
BCP subscription can paste their BCP auth token; the page then fetches each
submitted list and pulls the missing faction and disposition out of it.
Disposition names are fuzzy-matched so typos don't create duplicate entries.
The same token is used to fetch lists for the matrix.
The token is kept only in that browser's `localStorage` (`bcp_auth_token`) and
only sent to BCP's own API. The page includes step-by-step instructions for
finding it. BCP tokens expire after about an hour.
### Google sign-in (matrix only)
Google Identity Services opens an OAuth popup and the viewer signs in with
their own account. It requests these scopes:
- `drive.readonly`: read the template so it can be copied
- `drive.file`: create the copies
- `spreadsheets`: write into the copies
The OAuth client ID and template file ID are constants at the top of
`src/matrix.js`.
## Files
- `index.html`, `src/main.js`, `src/style.css`: the page, BCP data loading,
stats and rendering
- `src/matrix.js`: Google sign-in, template copying and list cleaning for
**Generate Matrix**
- `src/vendor/40k-compactor/`: vendored copy of Desjani's 40k Compactor
(MIT), used to reformat army lists. It isn't on npm. See its `NOTICE.md`
for where it came from, the license and how to update it.
- `nav.html`: this site's header nav entries (see the root README)
- `scouting.gateway-gamers.net.conf`: reference nginx config for the live
server block. Its Content-Security-Policy allows BCP's API and Google's auth,
Drive and Sheets hosts. Calling a new external host from the page means
adding it there too.
## Deploy
`.gitea/workflows/deploy-scouting.yml` builds the site and rsyncs `dist/` to
`/var/www/domains/gateway-gamers.net/scouting/` on every push to `main` that
touches `sites/scouting/` or `shared/`. See the root README for local dev
commands and the shared header, footer and images.