Glicko DB

Glicko DB

Documentation: Español | English | Português

Glicko DB is a Flask and SQLite application for managing a Go community's players, ratings, matches, and tournaments. It provides public rankings and statistics, along with protected administrative screens for imports, rating configuration, backups, and tournament operations.

Table of contents

Features

User help

The interface guide is the reference for daily tasks. It is also available from the ? button in the top navigation or at /help?lang=en. On supported mobile browsers, you can add Glicko DB to your home screen as an app.

Requirements

Local run

Windows PowerShell:

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
$env:APP_SECRET_KEY = "replace-with-a-long-random-value"
$env:ADMIN_PASSWORD = "choose-a-strong-password"
python app.py

macOS or Linux:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
export APP_SECRET_KEY="replace-with-a-long-random-value"
export ADMIN_PASSWORD="choose-a-strong-password"
python app.py

Open http://127.0.0.1:5000 in the browser. The application creates the SQLite database at data/acg_ratings.db on first start.

Only for local sample data, define LOAD_SAMPLE_DATA=1 before startup. Do not use sample data in a production database.

Configuration

The default values are in config.py.

Project roadmap

The detailed roadmap is in FUTURE_FEATURES.md. Import reconciliation, typed OpenGotha payloads, per-account audit filters, player profile improvements, and explicit tournament deletion are implemented. Remaining product work includes improving the BesoGo dark theme.

Development

Regenerate the HTML guides after changing their Markdown sources:

python scripts/build_help_html.py

Run the regression suite from the project root:

pytest -q

Code organization

Administrative routes are split by domain across routes/admin_tournaments.py, routes/admin_matches.py, routes/admin_players.py, and routes/admin_users.py. Tournament logic is split by responsibility across services/tournament_gotha.py, services/tournament_participants.py, services/tournament_pairing.py, services/tournament_matches.py, and services/tournament_standings.py. Translations and language selection live in services/i18n.py, while pure rating-chart helpers live in services/chart_service.py; services/common.py retains compatibility exports for existing imports. services/tournament_service.py remains a compatibility facade. The current full regression suite passes 373 tests.

Linux hosting installation

Use Python 3.10 or later and create a new virtual environment before installing:

python3.11 -m venv .venv
.venv/bin/python -m pip install --upgrade pip
.venv/bin/python -m pip install --only-binary=Pillow -r requirements.txt

If this command reports that no compatible Pillow wheel exists, the Python version, architecture, or Linux distribution selected by the host is unsupported. Select Python 3.10+ x86_64 in the hosting panel; do not compile Pillow without the system development libraries for Python, JPEG, zlib, and freetype.

The tests cover ratings and charts, player filters, language support, backups, tournament migrations, pairing, standings, OpenGotha compatibility, result moderation, and public tournament pages.

SGF coverage includes metadata synchronization, missing-link repair, role permissions, deletion behavior, and backup restoration.

The consistent ordering, filtering, and search behavior is already shipped and validated across player, match, and tournament pages.

License and attribution

Glicko DB was originally developed for the Go community in Colombia by Juan Felipe Samper in 2026.

The Glicko-2 system was published by Mark Glickman in 2022 into the public domain. The Python implementation is © 2009 Ryan Kirkman, and BesoGo is © 2015-2018 Ye Wang. Both are distributed under the MIT license.

^