Sports media manager — like Sonarr, but for sports.
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
John Sturgeon 4794d7dec6
All checks were successful
CI / lint-and-test (push) Successful in 23s
updated ci workflow
2026-08-02 19:31:31 +02:00
.forgejo/workflows updated ci workflow 2026-08-02 19:31:31 +02:00
ballarr added something 2026-08-01 19:39:45 +02:00
tests added something 2026-08-01 19:39:45 +02:00
.gitignore Initial commit, first iteration was to simply create a cli that would exercise the sports db API 2026-05-24 21:18:43 +02:00
.python-version Initial commit, first iteration was to simply create a cli that would exercise the sports db API 2026-05-24 21:18:43 +02:00
.woodpecker.yml Add Woodpecker CI pipeline replacing Forgejo Actions 2026-05-24 21:50:29 +02:00
CLAUDE.md added something 2026-08-01 19:39:45 +02:00
docker-compose.yml added something 2026-08-01 19:39:45 +02:00
openapi.yaml Initial commit, first iteration was to simply create a cli that would exercise the sports db API 2026-05-24 21:18:43 +02:00
pyproject.toml added something 2026-08-01 19:39:45 +02:00
README.md Add Pydantic models, expand test coverage, and enforce code style conventions 2026-05-25 09:23:57 +02:00
uv.lock added something 2026-08-01 19:39:45 +02:00

Ballarr

Sports media manager — like Sonarr, but for sports. Self-hosted, open-source, eventually offered as a hosted SaaS.

What it does

Ballarr lets you follow sports teams and track their schedules. Point it at a league, pick your teams, and it manages the rest — pulling upcoming games and recent results from TheSportsDB.

Requirements

  • Python 3.13+
  • uv
  • A TheSportsDB V2 API key

Setup

git clone <repo-url>
cd ballarr
uv sync
echo "THESPORTSDB_API_KEY=your_key_here" > .env

Usage

# List all teams in a league (default: NBA)
ballarr teams
ballarr teams --league-id 4387

# Upcoming games for a team
ballarr schedule warriors
ballarr schedule GSW

# Recent results
ballarr schedule lakers --previous

Team names are matched by case-insensitive substring or exact abbreviation.

Development

uv run pytest                          # run tests
uv run ruff check . && uv run ruff format .   # lint + format

Stack

  • Python 3.13+ — managed with uv
  • CLI — Click + Rich
  • HTTP client — httpx
  • Data models — Pydantic
  • Data source — TheSportsDB V2 API

Roadmap

  1. Pydantic models for API responses
  2. SQLModel + PostgreSQL for persistence (watched teams, tracked events)
  3. Scheduler/daemon layer — monitor watched teams, trigger on new content

Contributing

This project is written collaboratively with Claude Code. The design and all review decisions are made by the project author.

License

TBD