Gorda Driver is the Android application for drivers in the Gorda ride platform. It lets drivers receive ride requests, track trips and manage their profile. The app uses Firebase for authentication, real-time updates and push notifications. Location is tracked in the background and Google Maps is used to navigate from pick up to destination. Ride requests can originate from WhatsApp and appear in the driver's queue via the backend.
- Kotlin
- Android Jetpack (Navigation, ViewModel, LiveData)
- Firebase (Auth, Realtime Database, Firestore, Storage, Messaging)
- Google Play Services and Google Maps SDK
- Retrofit and Gson
- Glide / Picasso for images
- Sentry for crash reporting
- Android Studio with Android SDK 24 or newer
- Google Maps API key and Firebase project
- Sentry DSN (optional)
- Clone the repository.
- Copy
local.properties.exampletolocal.propertiesand fill the required keys. The template contains the variables used by the build such asMAPS_API_KEYand Firebase emulator hosts. - Open the project in Android Studio and let it download the Gradle dependencies.
- Connect an Android device or start an emulator.
- Build and run from Android Studio or execute
./gradlew installDebug.
Run ./gradlew assembleRelease to generate a release APK or App Bundle. Configure signing information in your Gradle properties or via Android Studio.
The app reads and writes data to Firebase Realtime Database and Firestore. It also uses the Google Maps Directions API through maps/MapApiService.kt. Provide your own credentials in local.properties.
- activity – Application entry points (
StartActivity,MainActivity). - background – Foreground services for location, fees meter and notifications.
- location – Location provider helpers.
- maps – Google Maps helpers and Retrofit API for directions.
- models – Kotlin data classes such as
DriverandService. - repositories – Interaction layer with Firebase.
- services – Firebase initialization and network utilities.
- ui – Fragments and ViewModels for the different screens.
Clients can request a ride through WhatsApp. The backend processes the message and creates a Service record in Firebase, referencing the client via wp_client_id. Drivers receive a push notification and can accept or reject the request directly from the app.
Add new brands using the brand flavor dimension (published flavor: redblanca / gorda.driver).
- Duplicate the sample brand folders: create
app/src/<brand>/resplusapp/src/<brand>/google-services.json(match the applicationId). - Add
app_name, navigation header strings, and any brand-only strings inapp/src/<brand>/res/values/strings.xml. - Drop brand icons/splash assets by overriding
ic_launcher*(and optional splash) underapp/src/<brand>/res/mipmap-*ordrawable. - Override colors/themes if needed via
app/src/<brand>/res/values/colors.xml. - Provide brand Firebase config in
app/src/<brand>/google-services.jsonand matching FCM/OAuth keys inlocal.propertiesor CI secrets. - In
app/build.gradle, add a newproductFlavors { <brand> { ... } }block withapplicationId, manifest placeholders (deep links/OAuth),buildConfigFieldvalues (BASE_URL, SUPPORT_EMAIL, etc.), and aversionCode = brandOffset + baseVersion. - (Optional) Add a signingConfig
<brand>keyed from Gradle properties (<Brand>StoreFile,<Brand>StorePassword,<Brand>KeyAlias,<Brand>KeyPassword). - Build with
./gradlew :app:bundle<Brand>Release(release signing auto-picks the matching signingConfig when present). - Upload the generated AAB to the corresponding Play Console track; keep
redblancausingapplicationId=gorda.driverfor continuity.
CI matrix hint: run a matrix over brand ∈ {redblanca,demo} and buildType ∈ {debug,release} to produce one AAB per brand and upload with brand-specific service-account credentials.
- Fork the project and create your feature branch from
master. - Commit your changes with clear messages.
- Open a pull request describing your changes.
This repository does not contain an explicit license file. All rights are reserved by the original authors.