The Ultimate Fusion of Live Football Analytics & Short-Form Video Entertainment
Tech Stack
·
Setup Guide
·
Features
SportHub redefines the football companion app experience. In an era where fans constantly switch between score apps and social media, SportHub bridges the gap. It provides a unified platform where deep statistical analysis meets the addictive engagement of short-form video content.
Built with a "Dark Mode First" design philosophy, the application offers a cinematic and distraction-free environment for users to track their favorite teams (Premier League, La Liga, UCL, UPL) while consuming highlights, fan reactions, and tactical breakdowns in a seamless vertical feed.
- Zero-Latency Data: Real-time synchronization of scores, match events, and league tables.
- Immersive Media: A high-performance video engine powered by Media3 ExoPlayer, optimized for instant playback and smooth scrolling (TikTok-style).
- Resilient Architecture: Built to handle network instability and API rate limits gracefully with intelligent error handling.
- Global Timezone Intelligence: Automatically adapts match schedules to the user's local time (defaulting to Kyiv/EET for precision).
SportHub is engineered using modern Android development standards, focusing on scalability, clean code, and performance.
| Category | Technologies Used |
|---|---|
| Language | Kotlin (100% Native) |
| UI Framework | Jetpack Compose (Material Design 3) |
| Architecture | MVVM (Model-View-ViewModel) + Clean Architecture |
| Concurrency | Coroutines & Flow |
| Network | Retrofit 2 + OkHttp 3 (Custom Interceptors) |
| Media Streaming | AndroidX Media3 (ExoPlayer) |
| Image Loading | Coil (Async Coroutine Image Loading) |
| Backend | Firebase Firestore & Firebase Auth |
| Data Provider | API-Football v3 (RESTful API) |
The core of SportHub is its robust match tracking system.
- Smart Calendar Strip: A custom-built horizontal calendar that supports a wide date range (-14 to +14 days), formatted strictly for API compatibility (
yyyy-MM-dd) while displaying user-friendly dates. - Live Updates: Matches update in real-time, displaying status (HT, FT, Live Minute) and scores.
Clicking a match reveals a comprehensive dashboard:
- Timeline: A minute-by-minute breakdown of goals, cards, and substitutions.
- Visual Lineups: A rendered football pitch showing player formations and starting XI.
- H2H & Form: Historical data analysis to provide context before the kick-off.
- Dynamic Tables: League standings that intelligently fetch data based on the match season.
A vertical video feed designed for high engagement.
- Optimized Buffering: Videos preload intelligently to ensure instant playback.
- Interactive UI: Overlays for author details, likes, and descriptions.
- Playback Control: Automatic pause/play management when scrolling.
To run SportHub locally, follow these steps:
- Android Studio Hedgehog (2023.1.1) or newer.
- JDK 17.
- An active account at API-Football.
-
Clone the Repo
git clone [https://github.com/your-username/SportHub.git](https://github.com/your-username/SportHub.git)
-
Configure API Key The app requires an API key to fetch data.
- Navigate to:
app/src/main/java/com/example/sporthub/RetrofitInstance.kt - Replace the placeholder with your key:
.addHeader("x-apisports-key", "YOUR_SECRET_KEY_HERE")
- Navigate to:
-
Firebase Configuration
- Go to the Firebase Console.
- Create a new project.
- Download the
google-services.jsonfile. - Place it in the
/approot directory.
-
Build & Run
- Sync Gradle files.
- Select your emulator or physical device.
- Run the application.
We are constantly improving SportHub. Here is the vision for future updates:
- Push Notification Engine: Server-side implementation for goal alerts via FCM.
- User Content Creation: Tools for users to trim, upload, and tag their own football clips.
- Social Graph: Follow system, comment threads, and algorithmic feed personalization.
- Offline Mode: Room Database caching to view stats without an internet connection.
Contributions make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request





