SafarLink is a smart ride aggregator Android application designed to simplify urban commuting.
It aggregates ride options from major providers like Uber, Ola, Rapido, and Namma Yatri into a single, unified interface, allowing users to compare prices and estimates instantly without switching between multiple apps.
This project showcases advanced Android development practices, including Clean Architecture, MVVM, Jetpack Compose, and a custom Deep Linking Strategy to handle third-party app integrations.
- Real-time aggregation of ride options.
- Supports major Indian ride-hailing services: Uber, Ola, Rapido, and Namma Yatri.
- Displays estimated prices and time-of-arrival (simulated for comparison logic).
A hybrid linking strategy designed to handle different app behaviors:
- Direct Deep Linking: Launches Uber and Ola directly with pickup and drop coordinates pre-filled.
- Smart Clipboard Integration: For apps that block direct external automation (like Rapido and Namma Yatri), SafarLink automatically:
- Reverse-geocodes coordinates into a readable address.
- Copies the destination address to the clipboard.
- Launches the target app for a seamless one-tap experience.
- Auto-GPS Detection: Fetches the user's current location using Android Location Services.
- Smart Search: Uses OpenStreetMap (Nominatim API) for real-time location suggestions and geocoding — no paid Google APIs required.
- Firebase Authentication (Email/Password & Google Sign-In).
- Strict Login Logic: Prevents accidental account creation on the Login screen, eliminating ghost accounts and enforcing a proper Sign-Up flow.
- Language: Kotlin
- UI Toolkit: Jetpack Compose (Material Design 3)
- Architecture: MVVM + Clean Architecture
- Dependency Injection: Dagger Hilt
- Async: Kotlin Coroutines & Flow
- Backend: Firebase Authentication & Firestore
- Networking:
HttpURLConnection(Custom Geocoding Implementation) - Navigation: Jetpack Navigation Compose
SafarLink follows a strict Clean Architecture approach:
- Built entirely with Jetpack Compose
- ViewModels manage UI state using
StateFlow - Handles UI logic and deep-launch intent triggering
- Business logic and repository interfaces
- Ride comparison logic & authentication rules
- Pure Kotlin (no Android dependencies)
- Repository implementations
- Integrates Firebase, Android location services, and deep link URI builders



