Real-Time Basketball Match Tracker & Team Management Platform
Built with Flutter Β· Powered by Firebase Β· Designed with Material 3
- Overview
- Key Features
- Screenshots
- Architecture
- Tech Stack
- Project Structure
- Getting Started
- Firebase Cloud Functions
- Theming & Design System
- Authentication Flow
- State Management
- Supported Platforms
- Environment Variables & Security
- Contributing
- Roadmap
- License
- Contact
SlamView is a feature-rich, cross-platform basketball match tracking application that delivers real-time live scores, comprehensive team management, and push notification alerts β all wrapped in a premium Material 3 user interface with full dark/light theme support.
Whether you're following a college tournament, tracking a friendly pickup game, or managing rosters, SlamView provides a seamless, courtside-like experience right from your device.
Why SlamView?
Traditional scoreboards are static and require you to be physically present. SlamView brings the action to your fingertips with real-time Firebase synchronization, automated push notifications when matches go live, and a beautifully crafted basketball-themed UI with immersive animations.
- Real-time score updates powered by Firebase Realtime Database
- Auto-refreshing match cards with background polling
- Support for both tournament matches (
/live_score/) and custom/friendly matches (/custom_live_score/) - Tap any match card to drill into detailed match statistics
- Comprehensive match detail view with quarter-by-quarter scoring breakdown
- Team rosters with individual player statistics
- Real-time status indicators (Live π΄ / Completed β )
- Custom basketball-themed painters and decorative UI elements
- Historical archive of all finished matches
- Final scores with win/loss indicators
- Formatted end-time display
- Animated list rendering with staggered entrance animations
- Browse all registered teams categorized by gender (Men's / Women's)
- View full player rosters with detailed player information
- Follow/Unfollow teams β synced to Firebase per user account
- Auto-refresh with periodic background data fetching
- Personalized feed of your followed teams
- Quick access to team rosters and upcoming matches
- Gradient-styled team cards differentiated by gender category
- Firebase Cloud Messaging (FCM) integration
- Automatic notifications when any match goes live
- Background message handling for uninterrupted alerts
- Permission management for iOS and Android 13+
- Firebase Authentication with email/password
- Secure sign-up with automatic user registration in Firebase Realtime Database
- Password reset via email
- Auth-guarded navigation with
AuthWrapper - Double-layer verification: Firebase Auth +
usersappauthdatabase node
- Material 3 design language with
ColorScheme.fromSeed - System-aware dark/light theme toggling
- Custom basketball-themed splash screen with particle animations
- Animated loading screens with basketball court motifs
- Gradient navigation cards, stat cards, and welcome banners
- Smooth micro-animations and haptic-style feedback
Screenshots coming soon β run the app locally to experience the full UI.
SlamView follows a page-based architecture with clear separation of concerns:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β main.dart β
β (Firebase Init, FCM, MaterialApp) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β SplashScreen β
β (Animated intro + Auth state check) β
ββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ€
β AuthPage β AuthWrapper β
β (Login/ β (StreamBuilder on authStateChanges) β
β SignUp) β (FutureBuilder on usersappauth) β
ββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββ€
β HomePage β
β (Dashboard, Quick Stats, Nav Grid) β
ββββββββββββ¬ββββββββββββ¬βββββββββββ¬ββββββββββββββββββββ€
β Live β Completed β Teams β Followed Teams β
β Matches β Matches β Page β Page β
β Page β Page β β β
ββββββββββββ΄ββββββββββββ΄βββββββββββ΄ββββββββββββββββββββ€
β MatchDetailsPage β
β (Quarter scores, rosters, live status) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Firebase Realtime Database β
β /live_score /custom_live_score /teams β
β /usersappauth /completed_matches β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Layer | Technology |
|---|---|
| Framework | Flutter 3.8+ / Dart 3.8+ |
| UI | Material 3, Google Fonts, ScreenUtil |
| State | StatefulWidget + Flutter Riverpod (available) |
| Navigation | Go Router (configured), page-based push navigation |
| Backend | Firebase Realtime Database |
| Auth | Firebase Authentication (Email/Password) |
| Storage | Firebase Storage |
| Analytics | Firebase Analytics |
| Messaging | Firebase Cloud Messaging (FCM) |
| Cloud Functions | Firebase Cloud Functions (Node.js) |
| Forms | Form Builder Validators |
| Toasts | Fluttertoast |
| Icons | Cupertino Icons, Material Icons |
| Hosting | Firebase Hosting (Web build) |
slamview/
βββ android/ # Android platform configuration
βββ ios/ # iOS platform configuration
βββ web/ # Web platform configuration
βββ windows/ # Windows platform configuration
βββ macos/ # macOS platform configuration
βββ linux/ # Linux platform configuration
β
βββ assets/
β βββ icon.png # High-res app icon (1696 KB)
β βββ app_icon.png # Optimized app icon
β
βββ lib/
β βββ main.dart # App entry point β Firebase init, FCM, theming
β βββ firebase_options.dart # Auto-generated Firebase config (FlutterFire CLI)
β βββ splash_screen.dart # Animated splash with particle effects & auth check
β βββ auth_page.dart # Login / Sign-Up / Forgot Password UI
β βββ auth_wrapper.dart # Auth state guard (Firebase Auth + DB validation)
β βββ home_page.dart # Dashboard with stats, nav grid, welcome banner
β βββ live_matches_page.dart # Real-time live match feed with auto-refresh
β βββ match_details_page.dart # Detailed match view with quarter scores & rosters
β βββ completed_matches_page.dart # Archive of completed matches
β βββ teams_page.dart # Browse & follow teams (Men's / Women's)
β βββ followed_teams_page.dart # Personalized followed teams feed
β
βββ functions/
β βββ index.js # Firebase Cloud Functions β live match notifications
β
βββ test/ # Flutter test directory
βββ pubspec.yaml # Flutter dependencies & project metadata
βββ firebase.json # Firebase project configuration
βββ .firebaserc # Firebase project aliases
βββ .gitignore # Git ignore rules
βββ analysis_options.yaml # Dart static analysis configuration
Ensure you have the following installed on your development machine:
| Tool | Version | Installation |
|---|---|---|
| Flutter SDK | β₯ 3.8.1 | flutter.dev/get-started |
| Dart SDK | β₯ 3.8.1 | Bundled with Flutter |
| Node.js | β₯ 18.x | nodejs.org (for Cloud Functions) |
| Firebase CLI | Latest | npm install -g firebase-tools |
| Git | Latest | git-scm.com |
-
Clone the repository
git clone https://github.com/<your-username>/slamview.git cd slamview
-
Install Flutter dependencies
flutter pub get
-
Install Cloud Functions dependencies
cd functions npm install cd ..
-
Create a Firebase project at console.firebase.google.com
-
Install and configure FlutterFire CLI
dart pub global activate flutterfire_cli flutterfire configure --project=<your-firebase-project-id>
This generates
lib/firebase_options.dartautomatically. -
Enable the following Firebase services in the Firebase Console:
- β Authentication β Email/Password provider
- β Realtime Database β Set up security rules
- β Cloud Messaging β For push notifications
- β
Cloud Functions β Deploy
functions/index.js - β Hosting (optional) β For web deployment
- β Analytics β Enabled by default
-
Set up Realtime Database structure
{ "live_score": {}, "custom_live_score": {}, "completed_matches": {}, "teams": { "men": {}, "women": {} }, "usersappauth": {} } -
Deploy Cloud Functions
firebase deploy --only functions
# Run on connected device / emulator
flutter run
# Run on specific platform
flutter run -d chrome # Web
flutter run -d windows # Windows
flutter run -d macos # macOS
flutter run -d linux # Linux
# Build for production
flutter build apk # Android APK
flutter build ios # iOS (requires macOS)
flutter build web # Web (output: build/web/)Deploy web build to Firebase Hosting:
flutter build web
firebase deploy --only hostingSlamView includes serverless Cloud Functions that automatically send push notifications when matches go live.
- Trigger:
onUpdateon/live_score/{matchId}/live - Action: When the
livefield transitions fromfalseβtrue, sends a push notification to thelive_matchesFCM topic - Payload:
"π Match Went Live! A College Tournament Match is now live. Tap to watch now!"
- Trigger:
onUpdateon/custom_live_score/{matchId}/live - Action: Same as above but for custom/friendly matches
- Payload:
"π Match Went Live! A Friendly or Custom Match is now live. Tap to watch now!"
functions/
βββ index.js # Node.js Cloud Functions (Firebase Admin SDK)
SlamView leverages Material 3 for a modern, adaptive design:
- Color Scheme: Generated from
Colors.deepPurpleseed usingColorScheme.fromSeed() - Theme Mode: Automatically follows the system preference (
ThemeMode.system) - Dual Themes: Both light and dark themes are fully configured
- Typography: Google Fonts integration available via the
google_fontspackage - Responsive Layout:
flutter_screenutilfor adaptive sizing across devices - Custom Painters: Basketball-themed decorative elements (
BasketballPainter,EnhancedBasketballPainter,PremiumParticlesPainter)
- π Gradient navigation cards with basketball-themed iconography
- β¨ Particle animation system on the splash screen
- ποΈ Basketball court-style loading animations
- π Animated stat cards with staggered entrance effects
- π― Custom snackbar designs with basketball theming
App Launch
β
βΌ
SplashScreen (Animated Intro)
β
βββ User authenticated + exists in /usersappauth?
β βββ YES β HomePage (Dashboard)
β βββ NO β AuthPage (Login / Sign Up)
β
βΌ
AuthPage
βββ Sign In β Firebase Auth β Verify in /usersappauth β HomePage
βββ Sign Up β Firebase Auth β Write to /usersappauth β HomePage
βββ Forgot Password β Send reset email
Double-layer security:
- Firebase Authentication verifies credentials
AuthWrapperchecks if the user's UID exists in the/usersappauthdatabase node- If the user is not in the database, they are signed out and redirected to the login page
The project uses StatefulWidget with lifecycle methods for local state management and StreamBuilder / FutureBuilder for reactive Firebase data binding. The flutter_riverpod package is included as a dependency for future scalability.
| Pattern | Usage |
|---|---|
StatefulWidget |
Page-level state (match lists, animations) |
StreamBuilder |
Auth state changes (authStateChanges()) |
FutureBuilder |
Async DB lookups (usersappauth verification) |
Timer.periodic |
Background data refresh (live scores, teams) |
AnimationController |
Splash screen, loading, and transition effects |
| Platform | Status | Notes |
|---|---|---|
| Android | β Supported | Full support including FCM notifications |
| iOS | β Supported | Requires Xcode & Apple Developer account |
| Web | β Supported | Deployable via Firebase Hosting |
| Windows | β Supported | Native desktop build |
| macOS | β Supported | Requires macOS for building |
| Linux | β Supported | Native desktop build |
β οΈ Important: Never commit API keys or sensitive Firebase configuration to version control.
lib/firebase_options.dartis auto-generated by FlutterFire CLI and contains platform-specific Firebase config. Consider adding it to.gitignorefor public repositories.- The
functions/directory should not expose any service account keys. - Use Firebase Security Rules to protect your Realtime Database.
Recommended .gitignore additions for public repos:
lib/firebase_options.dart
android/app/google-services.json
ios/Runner/GoogleService-Info.plistContributions, issues, and feature requests are welcome! Here's how to get started:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m "feat: add amazing feature" - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
This project follows Conventional Commits:
| Prefix | Usage |
|---|---|
feat: |
New feature |
fix: |
Bug fix |
docs: |
Documentation changes |
style: |
Formatting, no code change |
refactor: |
Code restructuring |
test: |
Adding or updating tests |
chore: |
Build process or tooling |
- Add player statistics leaderboard
- Implement in-app match scheduling
- Add team chat functionality
- Integrate social media sharing for match results
- Support tournament bracket visualization
- Add offline mode with local caching
- Implement Riverpod-based global state management
- Add unit and widget tests for all pages
This project is licensed under the MIT License β see the LICENSE file for details.
You are free to use, modify, and distribute this project. Contributions are welcome!
- GitHub: @AryantKumar
- Repository: github.com/AryantKumar/Slamview
Built with β€οΈ and π by the SlamView Team
Bringing the courtside experience to your fingertips