Giter VIP home page Giter VIP logo

broadcaster's Introduction

Lichess Broadcaster

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.

image

About

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.

Download

To download the latest version, go to the Releases and download the installer for your operating system.

Code signing policy

This program uses free code signing provided by SignPath.io and a certificate by the SignPath Foundation

Privacy Policy

This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it. See the Lichess Privacy Policy.

Development Setup

Prerequisites

  1. Follow steps for installing Rust + Tauri here: https://tauri.app/v1/guides/getting-started/prerequisites
  2. Install pnpm
     npm install -g pnpm

Run

pnpm install
pnpm tauri dev

Formatting / Linting / Tests

pnpm format
pnpm tsc

pnpm test
# or
pnpm test:watch

PGN Testing

Simulate boards writing PGN to a folder:

  1. In the app, select a Round and start a folder watch.
  2. 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

Icon Generation

Given a source image file, generate the icon files for the app:

convert src/assets/app-icon.png -size 702x702 xc:none -fill white -draw "roundrectangle 0,0,702,702,351,351" src/assets/mask.png
convert src/assets/app-icon.png \( src/assets/mask-1.png -alpha off \) -compose copy_opacity -composite src/assets/rounded.png
pnpm tauri icon src/assets/rounded.png

Test Release Build

pnpm tauri build

Release artifacts are in src-tauri/target/release/bundle/

Release (for maintainers)

  1. Tag the new version:

    ./scripts/release
  2. Github workflow will build the app for each OS, create a release, and attach the artifacts.

  3. Update the "Check for Updates" endpoint

    When ready to recommend the update, change version.json

broadcaster's People

Contributors

fitztrev avatar schlawg avatar tbestlittlehelper avatar carbrex avatar

Stargazers

Thanh Le avatar  avatar tors42 avatar Nate avatar  avatar Sérgio Glórias avatar Victor Rodolfo Gonzalez Galeano avatar Thibault Duplessis avatar

Watchers

Thibault Duplessis avatar Lakin Wecker avatar  avatar Niklas Fiekas avatar  avatar Nate avatar  avatar

broadcaster's Issues

need version check

both at launch, and probably on every push as multi-day tournaments could overlap server updates and new code.

this can be rolled as an int into existing communications, or a separate endpoint. your call.

Upload existing PGN files in a folder

When a folder is selected, the app currently only uploads files when they get modified. If there are files in that folder already, they won't get uploaded until they have changes.

In cases where the Broadcaster app was not running when the tournament started or if the app needed to be restarted, it should do an initial upload of all the existing PGN files.

Improve design of oauth redirect response

Just returns a text string now.

image

Also needs to handle case where user clicks "Cancel" on the authorization page, where the redirected URL will be like this:

http://localhost:45773/?error=access_denied&error_description=user+cancelled+authorization&state=ehl2JNIbAl_M5jQyUMUU7Q

Improve OAUTH success text

"Success! You may now close this window and return to the app.".to_string(),

Just thinking we maybe want to say " Lichess Broadcaster app" and what the "Success " is? You have "logged in" or " authorized the app"?

Maybe even something even simpler? " Lichess Broadcaster is ready to be used! You can close this window and return to the application. For help with getting started read [ link ] or join Discord

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.