Athletix is a Flutter-based mobile application designed to streamline collaboration between athletes, coaches, doctors, and sports organizations. It offers a centralized platform to manage tournaments, track performance and injuries, maintain schedules, and facilitate communication while respecting user roles.
- Firebase Authentication: Secure login for all users.
- Role-based Access (RBA):
- Four user roles: Athletes, Doctors, Coaches, and Organizations
- Each role has a distinct dashboard with specific permissions.
- Role checked via Firestore
rolefield, redirecting users post-login.
- Signup & Login:
- Separate signup and login flows for Athletes, Doctors, and Coaches.
- Login-only access for Organizations.
- Athletes: Includes personal details and their sport.
- Doctors: Includes personal details and specialization.
- Coaches: Includes their sport.
- Organizations: Associated with a specific sport.
- Users can create and save activity timetables in Firestore.
- Push notifications sent via Firebase Cloud Messaging (FCM) at the start of each activity.
- Athletes can log:
- Injury logs: Details for doctors and monitoring.
- Performance logs: Track progress over time.
- Logs are securely stored in Firestore and accessible to doctors and coaches.
- Organizations can create tournaments with:
- Name, level (District, State, National, International), date, time, and location using Google Maps SDK.
- Data stored in Firestore under the
tournamentscollection.
- Athletes can:
- View upcoming tournaments filtered by their sport.
- See tournaments as markers on an interactive map.
- Tap markers to view tournament details (level, date, time, address) in a modal.
- Flutter SDK
- Git
- A physical Android device (recommended)
git clone https://github.com/<your-username>/Athletix.git
cd Athletixflutter pub getflutter runπ± Tip: It's recommended to use a physical Android device for better performance during development.
| Technology | Description |
|---|---|
| π± Flutter | Cross-platform UI toolkit |
| π₯ Firebase | Auth | Firestore | FCM (notifications) |
| πΊοΈ Google Maps SDK | Interactive maps for tournaments |
| π¦ Flutter Local Notifications | For scheduling reminders |
Athletix/
βββ android/
βββ assets/
β βββ applogo.png
β βββ Running_Boy.json
βββ functions/
βββ ios/
βββ lib/
β βββ components/
β β βββ bottom_nav_bar.dart
β β βββ fcm_listener.dart
β βββ screens/
β β βββ athlete/
β β β βββ athlete_dashboard.dart
β β β βββ calendar_screen.dart
β β β βββ injury_tracker_screen.dart
β β β βββ performance_logs_screen.dart
β β β βββ tournaments_screen.dart
β β βββ coach/
β β β βββ coach_dashboard.dart
β β βββ doctor/
β β β βββ doctor_dashboard.dart
β β βββ organization/
β β β βββ add_tournament_screen.dart
β β β βββ manage_players_screen.dart
β β β βββ organization_dashboard.dart
β β βββ auth_screen.dart
β β βββ profile_screen.dart
β β βββ splash_screen.dart
β βββ main.dart
βββ linux/
βββ macos/
βββ test/
βββ web/
βββ windows/
βββ .firebaserc
βββ .gitignore
βββ .metadata
βββ analysis_options.yaml
βββ CODE_OF_CONDUCT.md
βββ DEVELOPMENT.md
βββ CONTRIBUTING.md
βββ firebase.json
βββ LICENSE
βββ pubspec.lock
βββ pubspec.yaml
βββ README.md
Issue: App throws Firebase initialization error. Solution: -Download your google-services.json file from Firebase Console. -Place it in android/app/ directory.
Issue: Plugin not found or version mismatch. Solution: -Run flutter pub get to reinstall dependencies. -Check for version conflicts in pubspec.yaml.
Issue: Map doesn't load or crashes. Solution: -Ensure you've added your Google Maps API key in the android/app/src/main/AndroidManifest.xml. -Enable Maps SDK in your Google Cloud console.
Issue: Notifications or Maps don't work on emulator. Solution: -Use a real device when possible. -Emulators may lack Play Services or required permissions.
To run the Flutter tests:
flutter testThis will execute all unit and widget tests in the test/ directory.
We welcome contributions! Please see CONTRIBUTING.md for guidelines on how to get started, report issues, or submit pull requests.
For questions, suggestions, or support, please open an issue on GitHub or contact the maintainers via the repository.
This project is licensed under the MIT License
