Real-time ATP & WTA Tennis Tracking for 2026
Your all-in-one tennis companion for live scores, rankings, tournament insights, player analytics, and smart notifications.
- Real-time ATP/WTA live scores with server/game-point context.
- Auto-refresh via SocketIO with polling fallback.
-
Lightweight match-form metric that reflects a player's recent results relative to expectations. Shows short-term hot/cold streaks alongside the official rating.
Formula (Elo-style update):
$$F = R + K \sum_{i=1}^n w_i (S_i - E_i)$$ where:
-
$R$ = current official rating -
$K$ = scaling constant (controls sensitivity) -
$w_i$ = time-decay weight for match$i$ (recent matches larger) -
$S_i$ = actual score for match$i$ (1 = win, 0.5 = draw, 0 = loss) -
$E_i = \dfrac{1}{1 + 10^{(O_i - R)/400}}$ is the expected score vs opponent rating$O_i$
Notes: choose
$K$ and$w_i$ to tune responsiveness; the value$F$ is shown alongside the official rating to indicate short-term form. -
- Recently finished matches with quick stat breakdowns.
- Upcoming matches (next 2 days) with H2H/prediction insights.
- ATP/WTA rankings with update status and refresh actions.
- Tournament calendar + bracket viewer with round points/prize context.
- ATP and WTA search + head-to-head comparison.
- Surface splits, trends, and radar-style metrics.
- Profile cards, country flags, image fallback, and stat summaries.
- Match-level details integrated with dashboard views.
- Dedicated ATP/WTA analysis workspace (
/analysis/atp,/analysis/wta). - Player Explorer, Tournament Explorer, and Records Book.
- Multi-rule alert engine with guided rule builder.
- Event types for upcoming/live/result/milestone-style triggers.
- Channels: Email + integrations, cooldowns, quiet hours, run-now testing.
- Launchable from main dashboard button (auto-start helper route).
Visit: tennis-tour-dashboard.onrender.com
macOS / Linux (bash):
./start.shWindows (PowerShell):
bash start.shBackend:
cd backend
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python app.pyFrontend (new terminal):
cd frontend
python3 no_cache_server.pyDefault local URLs:
- Frontend:
http://localhost:8085 - Backend:
http://localhost:5001 - Notification app:
http://localhost:5090
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/health |
Health check β |
GET |
/api/live-scores?tour=atp|wta|both |
Live match scores π΄ |
GET |
/api/recent-matches?tour=...&limit=... |
Recently completed matches π |
GET |
/api/upcoming-matches?tour=...&days=7 |
Upcoming matches π― |
GET |
/api/intro-gifs |
Intro GIF list πΌοΈ |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/rankings/<tour>?limit=... |
ATP/WTA rankings π |
GET |
/api/rankings/atp/status |
ATP rankings status β° |
POST |
/api/rankings/atp/refresh |
Refresh ATP rankings π |
GET |
/api/rankings/wta/status |
WTA rankings status β° |
POST |
/api/rankings/wta/refresh |
Refresh WTA rankings π |
GET |
/api/player/<id> |
Player profile π€ |
GET |
/api/player/<tour>/<player_id>/image |
Player image route πΈ |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/tournaments/<tour> |
Tournament calendar π |
GET |
/api/tournament/<id>/bracket?tour=... |
Tournament bracket π³ |
GET |
/api/categories |
Category list π·οΈ |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/h2h/atp/search?query=...&limit=... |
ATP player search π |
GET |
/api/h2h/wta/search?query=...&limit=... |
WTA player search π |
GET |
/api/h2h/atp?player1_id=...&player2_id=... |
ATP H2H βοΈ |
GET |
/api/h2h/wta?player1_id=...&player2_id=...&year=2026&meetings=5 |
WTA H2H βοΈ |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/system/analysis |
Update analysis summary π |
POST |
/api/system/update |
Trigger update pipeline π |
GET |
/api/system/update/status |
Update progress π |
GET |
/api/notifications/status |
Notification service status π |
POST |
/api/notifications/launch |
Launch notification service π |
GET |
/notifications/open |
Open notification page π |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/state |
State: settings/rules/history/config βοΈ |
POST |
/api/settings |
Save delivery settings π |
GET |
/api/options |
Player/tournament options π |
POST |
/api/rules |
Create rule β¨ |
PUT |
/api/rules/<rule_id> |
Update rule π§ |
DELETE |
/api/rules/<rule_id> |
Delete rule ποΈ |
POST |
/api/run-now |
Manual run π |
POST |
/api/test-email |
Send test email π§ |
POST |
/api/history/clear |
Clear run history π |
Tennis-Dashboard/
βββ backend/
β βββ app.py
β βββ tennis_api.py
β βββ config.py
β βββ requirements.txt
β βββ notification_system/
β βββ app.py
β βββ storage/subscriptions.json
β βββ templates/index.html
β βββ static/{app.js,styles.css,favicon.svg}
βββ frontend/
β βββ index.html
β βββ update.html
β βββ no_cache_server.py
β βββ css/
β βββ js/
β βββ vendor/
βββ data/
βββ data_analysis/
βββ scripts/
βββ Images/
βββ start.sh
βββ start_local.sh
βββ README.md
βββ LICENSE
βββ .gitignoreMIT License β see LICENSE.
β Star this repo if you find it useful! β
Made with πΎ and β | Β© 2026 Tennis Dashboard




















