A mini Android app that lets users browse nearby mechanics, view garage details, and submit vehicle service requests.
- Browse mechanics sorted by distance
- View rating, review count, location, services, and open/closed status
- View mechanic details and working hours
- Submit a vehicle service request
- Form validation
- Loading, success, and error states
- Graceful handling of missing mechanic data
- Firebase Realtime Database integration
- Kotlin
- Jetpack Compose
- MVVM
- Clean Architecture
- Retrofit + Gson
- Firebase Realtime Database
- Hilt
- KSP
- Kotlin Coroutines + StateFlow
- Navigation Compose
- JUnit
- JSON parsing
- REST API integration
The project uses a multi-module Clean Architecture setup:
app -> UI, Navigation, ViewModels, Dependency Injection
data -> Retrofit, Firebase, DTOs, Mappers, Repository Implementations
domain -> Domain Models, Repository Interfaces, Business Logic
The domain module does not depend on Android, Retrofit, or Firebase.
Mechanic data is hosted in Firebase Realtime Database and fetched using Retrofit through the Firebase REST API.
GET /mechanics.jsonBase URL:
https://instant-mechanic-3baac-default-rtdb.firebaseio.com/
Service requests are submitted to Firebase Realtime Database under:
serviceRequests/
Open/Closed status is calculated dynamically using each mechanic's opening and closing time rather than relying on a stored status value.
- Clone the repository.
- Open the project in Android Studio.
- Add
google-services.jsoninside theapp/directory. - Sync Gradle.
- Run the app on an emulator or Android device with internet access.
Minimum SDK: Android 8.0 (API 26)
Left to right: Home Screen, Mechanic Details, Request Service, Success Confirmation, Error State
- Distance is currently provided by the backend and mechanics are displayed nearest-first.
- Live GPS-based distance calculation is outside the current assignment scope.
- Missing optional fields are handled gracefully in the UI.





