Skip to main content

Python PyPi package Downloads Tests Codecov

TourBillon

TourBillon is free software (distributed under the LPG license) that helps you organize tournaments using the Swiss system, for teams of one or more player(s). It was originally built for the game of Billon, but can be used for any Swiss-system tournament.

With TourBillon you can:

  • register the teams and their players,
  • automatically pair teams round after round (draw),
  • enter the scores of each match,
  • follow the live ranking, including on a big screen in the room,
  • browse the history of past editions, player by player.

📦 Installation

TourBillon is published on PyPI under the name tourbillon-app. If you only want to run the application, install it with pip:

pip install tourbillon-app

Then start the application:

tourbillon

🚀 Getting started

Open your web browser. Three interfaces are available:

Interface Address What it is for
Admin http://localhost:8000/admin Register teams, run the draws, enter scores, view rankings.
Display http://localhost:8000/display Read-only live rankings and current round for the big screen (projector).
History http://localhost:8000/history Player statistics year after year, across every saved tournament.

🏆 A typical tournament

  1. Open the Admin interface and register every team and its players.
  2. Launch the first draw to pair the teams for round 1.
  3. Play the matches, then enter each score in the Admin interface.
  4. Launch the next draw, and repeat for every round (usually 5 to 6).
  5. Show the Display interface on the big screen so everyone can follow the live ranking and see who plays where.
  6. After the event, use the History interface to review player performances across the years.

Your tournaments are saved automatically and remain compatible with the files from previous editions.

📊 How the ranking works

Teams are paired with opponents who have a similar score, never play the same opponent twice, and are never eliminated. Teams are ranked first by the number of games won; in case of a tie, the total number of points decides. The winner is the team with the most games won (then the most points) across all rounds.

For 32 to 64 teams, it is recommended to play between 5 and 6 rounds.

🛠️ Developer mode

Developer mode needs Python, Poetry, Node.js, and npm. On macOS, you can install them step by step as follows.

📦 Installation

1. Install Python

TourBillon requires Python 3.10 or higher. Check whether it is already installed:

python3 --version

If it is missing or too old, install it with Homebrew:

brew install python

or download it from python.org.

2. Install Poetry

Poetry is used to install the Python dependencies and run the project from the source tree:

pip install poetry
poetry --version

3. Install Node.js and npm

Node.js (which bundles npm) is needed to build the web interface. Check if it is installed:

node --version
npm --version

If the command is not found, or reports a version below 18, install it using one of the options below.

Option A — Homebrew

# Install Homebrew if you don't have it yet
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Install Node.js (includes npm)
brew install node

# Verify the installation
node --version
npm --version

Option B — official installer

Download the macOS .pkg installer from nodejs.org (choose the LTS version) and follow the graphical installer. It installs both node and npm.

After installation, make sure node --version reports 18 or higher.

4. Install TourBillon from source

From the TourBillon folder, install the backend dependencies with Poetry:

poetry install

Then build the web interface:

cd tourbillon-ui
npm install
npm run build
cd ..

5. Start the application

poetry run tourbillon

🏗️ Build the packages

The frontend must be built once beforehand, then bundled into the Python package via a dedicated script, before running Poetry's build. This keeps the resulting wheel a portable py3-none-any package:

poetry run python scripts/build-ui.py
poetry build

To build the Windows executable locally (on Windows, with the build dependency group installed):

poetry install --with build
poetry run python scripts/build-ui.py
poetry run pyinstaller scripts/build-exe.spec --noconfirm

All packages are generated in the dist/ folder. To inspect the build artifacts before publishing, list that directory:

ls dist/

Publishing a new release

Publishing is automated: pushing a Git tag X.Y.Z triggers the publish.yml workflow, which builds the frontend, builds the package, and uploads it to PyPI using Trusted Publishing (OIDC, no token to manage). In parallel, it also builds a standalone Windows executable with PyInstaller (no Python installation required on the target machine). Both the PyPI artifacts (sdist + wheel) and the Windows executable are then attached to the matching GitHub release.

poetry version <X.Y.Z>
git add pyproject.toml
git commit -m "Bump version to $(poetry version -s)"
git tag "$(poetry version -s)"
git push && git push --tags

The workflow refuses to publish if the tag does not match the version in pyproject.toml.

v6.0.0

  • Make TourBillon compatible with Python >= 3.10
  • Full rework of the UI using Vue.js
  • Remove cli interface
  • Remove wxPython dependecy

Metadata

Release files for tourbillon-app 6.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tourbillon-app 6.0.0
File Size Uploaded
tourbillon_app-6.0.0.tar.gz 200.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tourbillon-app 6.0.0
File Interpreter ABI Platform
tourbillon_app-6.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 406.2 kB

Release files / tourbillon_app-6.0.0.tar.gz

Download URL tourbillon_app-6.0.0.tar.gz
Size 200.4 kB
Tags Source
SHA-256 checksum
How to use checksums
acb2c465a41cdea9d0c1267a48c33aeba4e4cbddec56da39b279dc248812cab7
BLAKE2b-256 checksum
How to use checksums
a20a072b196500170b0158e81d780a30eb64372a1ff878a146fb4c7f0608d595
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / tourbillon_app-6.0.0-py3-none-any.whl

Download URL tourbillon_app-6.0.0-py3-none-any.whl
Size 205.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d71fc4bf2e941998468a308f05bf11f865e4e829f653b23bc01bad3545f3842f
BLAKE2b-256 checksum
How to use checksums
b1af2c1ff4b9135ce4fb3f4c2bd65d6841f866d06c4425e5e42f7b0ebac30475
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

6.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page