Tom's Live Chess Viewer for CCRL Broadcasts on the web!
  • TypeScript 77.8%
  • SCSS 10.7%
  • EJS 10%
  • JavaScript 1.4%
Find a file
dependabot[bot] a8c8c5dd8c
chore(deps-dev): bump js-yaml from 4.3.0 to 4.3.1 (#206)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.3.0 to 4.3.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/4.3.1/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.3.0...4.3.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.3.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 08:24:19 -07:00
.github Update README screenshot 2023-07-08 11:37:32 -07:00
.husky feat: add pre-commit hook with husky and lint-staged 2026-03-05 10:11:01 -07:00
config feat: add Lichess dependency metrics + Grafana panels (#171) 2026-05-26 10:44:01 -07:00
docs docs: add production deploy guide and fix README setup instructions (#195) 2026-08-01 06:46:57 -07:00
pgns Store PGNs on FS and serve 2023-07-09 07:44:37 -07:00
public Refactor: Extract shared utilities and consolidate UI patterns (#201) 2026-08-03 17:09:15 -07:00
shared Refactor: Extract shared utilities and consolidate UI patterns (#201) 2026-08-03 17:09:15 -07:00
src Refactor state management and consolidate configuration (#200) 2026-08-03 16:47:32 -07:00
views Refactor: Extract shared utilities and consolidate UI patterns (#201) 2026-08-03 17:09:15 -07:00
webpack feat: dynamic custom themes (#160) 2026-05-24 07:23:34 -07:00
.browserslistrc Gulp to webpack (#59) 2023-07-16 11:40:15 -07:00
.dockerignore Setup for docker 2024-05-27 07:08:52 -07:00
.editorconfig Initial Commit 2021-08-10 07:23:06 -05:00
.env.example Refactor state management and consolidate configuration (#200) 2026-08-03 16:47:32 -07:00
.gitignore feat(games): add decisive-only filter checkbox (#197) 2026-08-02 13:35:13 -07:00
.prettierrc WebSockets 2021-08-17 20:51:57 -07:00
AGENTS.md refactor: replace CLAUDE.md with AGENTS.md via progressive disclosure (#189) 2026-07-26 06:24:53 -07:00
CONVENTIONS.md refactor: replace CLAUDE.md with AGENTS.md via progressive disclosure (#189) 2026-07-26 06:24:53 -07:00
Dockerfile Setup for docker 2024-05-27 07:08:52 -07:00
eslint.config.js fix: resolve npm audit vulnerabilities (brace-expansion, minimatch) (#191) 2026-07-29 05:21:09 -07:00
LICENSE Initial Commit 2021-08-10 07:23:06 -05:00
package-lock.json chore(deps-dev): bump js-yaml from 4.3.0 to 4.3.1 (#206) 2026-08-17 08:24:19 -07:00
package.json chore(deps): bump dompurify from 3.4.12 to 3.4.13 (#205) 2026-08-17 08:22:16 -07:00
README.md docs: add production deploy guide and fix README setup instructions (#195) 2026-08-01 06:46:57 -07:00
tsconfig.backend.json fix: resolve npm audit vulnerabilities (brace-expansion, minimatch) (#191) 2026-07-29 05:21:09 -07:00
tsconfig.base.json refactor: comprehensive codebase cleanup across 24 tasks 2026-03-08 13:58:32 -07:00
tsconfig.frontend.json refactor: comprehensive codebase cleanup across 24 tasks 2026-03-08 13:58:32 -07:00

Node TLCV

A server implementation of Tom's live chess viewer. Designed to work with Graham Bank's CCRL broadcasts. Watch live at https://ccrl.live!

screenshot

Running your own

Requirements

Setup

  • Modify config/config.json
    • connections is an array of "host:port" strings (or objects) for the initial broadcast ports you'd like to connect to. See docs/gotchas.md for the full entry format.
  • Create a .env file at the same level as this README from .env.example and specify a TLCV_PASSWORD
# .env
TLCV_PASSWORD=password

Other optional variables (PORT, CONFIG_DIR, PGNS_DIR, LOG_LEVEL, LICHESS_OAUTH_TOKEN) are documented in .env.example.

Compile

npm install && npm run build

Start the server

  • Launches on port 8080 by default (override with PORT in .env)
node build/src/main.js # runs in foreground
# or
pm2 start build/src/main.js # runs in background

Admin Panel

  • Admin panel can be accessed at /admin
    • Username is admin
    • Password is specified by the TLCV_PASSWORD environment variable (see above)