Busition Mate is the passenger-facing mobile app for the Busition shuttle platform. The app is built with Flutter and helps riders sign in, check their shuttle schedule, view route information on a map, and follow live vehicle movement from the Busition backend.
This repository contains the client app used by passengers. Based on the current codebase, the main flow is:
- Authenticate with Firebase using email/password or Google Sign-In
- Register a new user account
- Fetch passenger schedule data from the Busition API
- Show route and stop information with Google Maps
- Receive live shuttle updates through Socket.IO
- Use location, background service, notifications, and Bluetooth-related features for boarding and proximity workflows
The project is primarily configured for Android and iOS. A web/ directory exists, but the active platform integrations in this codebase are mobile-first.
- Firebase Authentication
- Email/password login
- Google Sign-In
- Basic sign-up flow
- Passenger schedule view
- Fetches assigned shuttle schedule data
- Shows trip cards and departure information
- Route map
- Displays route polylines and stops
- Tracks the current bus position on the map
- Real-time updates
- Connects to the Busition Socket.IO server
- Updates bus movement and boarding-related state
- Background behavior
- Uses a foreground service on Android
- Requests location, notification, and Bluetooth permissions
- Flutter
- Dart
- Firebase Authentication
- Google Maps Flutter
- HTTP APIs
- Socket.IO client
- Geolocator
- Permission Handler
- Flutter Foreground Task
The repository configuration currently indicates:
- Dart SDK:
>=2.12.0 <3.0.0 - Flutter SDK: any version compatible with the Dart constraint above
- Android:
minSdkVersion 26targetSdkVersion 33compileSdkVersion 33
- iOS:
- minimum deployment target
12.0
- minimum deployment target
Before running the app, confirm that the environment-specific configuration matches the backend and Firebase project you intend to use.
This repository does not include private Firebase client config files for mobile builds.
lib/firebase_options.dartandroid/app/google-services.jsonis intentionally ignoredios/Runner/GoogleService-Info.plistshould also be treated as environment-specific if you plan to open-source the iOS build
To run the Android app with your own Firebase project:
- Create or open a Firebase project.
- Add an Android app with package name
com.busition.useror change the package name in the Android project first. - Register the app SHA certificates required by your sign-in providers.
- Download
google-services.jsonfrom Firebase Console. - Place the file at
android/app/google-services.json. - Run
flutter pub getand then build or run the app.
The file stays local and does not get published with the repository.
Android uses a Google Maps API key defined in:
android/app/src/main/AndroidManifest.xml
If you are moving to another environment or rotating credentials, update the key there. If iOS map credentials are required for your setup, add the corresponding platform configuration as well.
The app currently calls Busition development endpoints directly from the source code, including:
http://api.dev.busition.com:8001http://api.dev.busition.com:3000
These URLs are referenced in multiple files such as:
lib/LoginClass.dartlib/Page_Timeline/TimeData.dartlib/Page_Maps/RouteData/MapRoute.dartlib/utils/SocketServices.dart
If you need staging or production support, centralize and update these endpoints before release.
- Install Flutter with a version compatible with Dart 2.x for this project.
- Clone the repository.
- Install dependencies:
flutter pub get- Verify Firebase and Google Maps configuration for your environment.
- Connect a device or start an emulator.
- Run the app:
flutter runflutter pub get
flutter analyze
flutter run
flutter build apk
flutter build iosFrom the current Android and iOS configuration, the app may request:
- Fine and coarse location
- Background location
- Bluetooth advertise/connect/scan
- Notifications
- Foreground service access
- System alert window access on Android
These permissions support route tracking, real-time updates, and boarding-related behavior.
lib/
main.dart App entry point and login flow
MainPage.dart Main shell and foreground task integration
Page_SignUp/ Sign-up screens and validation
Page_Timeline/ Schedule and timeline UI
Page_Maps/ Map, route, and stop UI
Page_Etc/ Settings and miscellaneous screens
utils/ Permissions, sockets, Bluetooth, and location helpers
This repository is licensed under AGPL-3.0-only.
See the LICENSE file for the full license text.
- The login screen currently includes prefilled development credentials in
lib/main.dart. - Backend URLs are hard-coded instead of being managed through environment-based configuration.
- Mobile permissions and foreground/background behavior are an important part of the current implementation, so testing on real devices is recommended.
flutter run