This is a cross-platform desktop application for automatically uploading PGN files (chess game notation) from your local computer to a live Lichess Broadcast.
Some smart chess boards used in OTB (over the board) events can write PGN files to a folder on your computer. This application monitors that folder and uploads the PGN file in real-time using the Lichess API. In practice, this means anyone with internet access can follow the ongoing OTB games live and with minimal additional effort from tournament organisers. Lichess freely provides the infrastructure to show the tournament games to thousands of spectators, which would otherwise be a costly or technically challenging task for organizers.
This app is built with Tauri, a framework for building desktop apps with web technologies. It's written in Rust and TypeScript.
Contributions are welcome. Please read our Contributing guide if you're interested in helping with this or our other projects.
To download the latest version, go to the Releases and download the installer for your operating system.
- Follow steps for installing Rust + Tauri here: https://tauri.app/v1/guides/getting-started/prerequisites
- Install pnpm
npm install -g pnpm
pnpm install
pnpm tauri dev
pnpm format
pnpm tsc
pnpm test
# or
pnpm test:watch
- In the app, select a Round and start a folder watch.
- Run this to automatically write a bunch of PGN to the folder:
pnpm esrun sample-data/generate/index.ts games path/to/folder
Test errors by writing bad PGN files:
pnpm esrun sample-data/generate/index.ts errors path/to/folder
Given a source image file, generate the icon files for the app:
pnpm tauri icon public/lichess-favicon-1024.png
pnpm tauri build
Release artifacts are in src-tauri/target/release/bundle/
-
Tag the new version:
git checkout main npm version 0.x.x git push origin main --tags
-
Github workflow will build the app for each OS, create a release, and attach the artifacts.
The app will make a request to https://lichess-org.github.io/broadcaster/version.json (served by Github Pages) to see if a newer version is available. Update that file manually when ready to recommend the update.