Live · Web App

TENNIS
LOGIC

A full-fledged tennis club and tournament management platform. Clubs run singles and doubles events with auto-seeded knockout draws, players score matches live and confirm results, and everyone earns an ELO-style strength index — with rankings, head-to-head history, and in-app messaging. Backed by a FastAPI backend with JWT auth and a MySQL database.

Open the App → See Features
What it does

Run the whole club,
not just the leaderboard.

From tournament sign-up to the final point, Tennis Logic manages the full lifecycle — events, draws, live scoring, confirmation, and rankings, all in one place.

Tournaments & Draws

Create singles and doubles events with sign-up, partner invitations, and automatic single-elimination draws. Entrants are seeded by strength index, byes go to the top seeds, and brackets are pannable and zoomable as results come in.

Live Match Scoring

Start a match and score it point-by-point in real time. Supports multiple formats — single set, pro set to 8, best of 3, and best of 5 — with a live scoreboard others can follow.

Result Confirmation

Recorded scores aren't final until the opponent confirms them, keeping the strength index honest. Per-match chat and typing indicators let both players sort out any discrepancies.

ELO Strength Index

Every confirmed match feeds a live ELO-style strength index. Beat a higher-ranked opponent and your rating climbs faster; the platform recomputes ratings and rankings automatically.

Clubs, Players & History

Organise players into clubs and groups with role-based admin. Each player has a profile with full match history, win/loss record, and head-to-head breakdown — and can claim their own account.

Messaging & Notifications

Built-in direct messaging keeps players and organisers connected, with encrypted message bodies and scheduled email notifications for event invitations and draw announcements.

Under the hood

A production-grade
full-stack platform.

Built to run self-hosted with Docker Compose — no managed services, no cloud lock-in.

01

React Frontend

Built with React 18, React Router, and MUI — a responsive SPA with chart-based player stats (Chart.js), pan-and-zoom tournament brackets, live scoreboards, and a mobile-friendly layout.

02

FastAPI Backend

A Python FastAPI REST API covering players, events, draws, matches, clubs, and rankings. JWT auth, bcrypt hashing, encrypted messaging, and an APScheduler-driven job runner for rating recomputes and event emails.

03

MySQL Database

Relational schema covering players, events, draws, match results (singles + doubles), confirmations, messaging, club membership, and computed strength-index scores — versioned with incremental SQL migrations.

04

Docker Compose Deployment

Three-service compose stack (frontend, backend, MySQL) with health-checked startup ordering, persistent volumes, and environment-based config for JWT secrets and SMTP credentials.

React 18 FastAPI MySQL JWT Auth MUI Chart.js APScheduler Docker Compose Python

Run your club. Run your tournament.

Set up your club, launch an event, and let Tennis Logic handle the draw, the live scoring, and the rankings — every result confirmed and counted.

Launch Tennis Logic →