The app that runs WDCTT's league night.
Washington DC Table Tennis used to run league night by hand: pairing players, tracking every score, and keeping the ladder up to date on the fly. We built them an app that runs the whole night on its own, and you can watch the logic work right here on this page.
The challenge
On a busy night, someone had to pair every player, remember who beat whom, update the rankings, and keep the tables moving. It was manual, slow, and easy to get wrong.
WDCTT needed software that could run the night itself: sign players in, match them fairly, assign tables, score the games, and update the ladder the moment a match ends.
What we built
Everything an organizer needs to run the night, and everything a player wants to see.
Under the hood
Here is some of the logic that runs the night. Try it yourself.
Live ELO rankings
Every result runs through the same rating math the real app uses. Tap a winner and watch the ladder move.
Fair coin flip
Before each match, a fair coin flip decides the first serve. Tap to flip.
Built to be safe
Role-based access
Players, admins, and super admins each see only what they should.
Secure password handling
A reset issues a strong one-time password, signs the player out everywhere, and never shows or stores a readable password.
No privilege escalation
Only a super admin can reset another admin, never a regular one.
Isolated data + review
The database is isolated from every other system, and we ran a dedicated security review before release.
The technology
Built on a modern, dependable stack: a Python backend (FastAPI), an isolated PostgreSQL database, a timezone-aware scheduler that opens league night automatically at 7pm, and a mobile-first interface. It runs on Railway with automatic deploys, so improvements ship the same day.
It is live
This is not a concept. It runs real league nights every week at league.wdctt.com.
Visit the live appWant an app that runs your operation like this?
Tell us what you need and we will show you what is possible.