A small standalone Go service that renders a CS2 surf records / stats site.
It reads the surf records the GameCTL CS2 server writes (the GameCtlSurfHUD
plugin appends completions to gamectl_surf_records.json / an attempts JSONL),
and serves leaderboards per map and per player.
It was previously vendored inside the GameCTL repo; it is now its own project.
It is unrelated to GameCTL's control-plane code — the only link is operational:
it runs in the gamectl namespace and mounts the CS2 data (read-only) so it can
read the records file the in-game plugin produces.
make run # builds and serves with GAMECTL_RECORDS_PATH=./sample-records.jsonEnvironment:
GAMECTL_RECORDS_PATH— path to the records JSON (default/data/gamectl_surf_records.json)GAMECTL_ATTEMPTS_PATH— path to the attempts JSONL (default/data/gamectl_surf_attempts.jsonl)
make image # docker build -> 192.168.1.182:5000/cs2-records
make deploy # build + push + apply k8s/cs2-records.yaml + roll the deploymentThe Kubernetes manifest lives in k8s/cs2-records.yaml.
It still deploys into the gamectl namespace and mounts the CS2 data volume —
that runtime coupling is intentional and unchanged by the repo split.