Babile Sport
Full-stack football live-score platform with three integrated apps: a real-time API, an admin broadcast dashboard, and a cross-platform Flutter client.
// overview
Babile Sport is a full-stack football live-score and news platform for Babile Zone, Ethiopia, built as three integrated applications. The backend is a FastAPI service (Python 3.12, PostgreSQL, Redis) with a clean layered architecture — routers, services, repositories, models, and schemas — using SQLAlchemy 2.0 async, asyncpg, and Pydantic v2 validation, with JWT RBAC protecting all writes and public reads requiring no auth. A real-time pipeline publishes every create/update to Redis pub/sub and fans out instantly to clients over SSE, with broadcast failures never blocking data entry and offline event queuing with batch replay. The admin dashboard (Next.js 16 App Router, React 19, TypeScript, Tailwind) includes a live match control console for broadcasting scores, period shifts, and events (goals, cards, substitutions), plus full CRUD for clubs, teams, competitions, leagues, news, and players. The mobile client (Flutter/Dart) delivers a BeSoccer-style live-score experience across Android, iOS, Web, and Desktop from a single codebase, receiving real-time updates via SSE with configuration via --dart-define at build time.
