GetRide is a multi-platform mobile application developed with Kotlin Multiplatform Mobile (KMM), offering a full-featured ride-sharing service. The app integrates advanced ride management, Stripe payment processing, and Google Maps for navigation, while leveraging Supabase for real-time data handling and secure authentication. With support for both Android (Jetpack Compose) and iOS (SwiftUI), GetRide delivers a seamless user experience across platforms.
- User Authentication: GetRide uses Supabase Authentication to securely manage user sign-up, sign-in, and session handling across devices.
- Ride Management: Users can request and track rides in real-time. Drivers receive filtered ride requests that show only nearby clients, making the process more efficient.
- Driver Rating System: Users can rate drivers after completing a trip. The driver's rating is updated instantly using a custom SQL function.
- Trips and Payment History: Users can access a detailed history of their past trips and payment transactions within the app.
- Stripe Payment Integration: Payments are processed securely using Stripe, enabling users to complete transactions with ease.
- Route Calculation: Fetches and decodes optimized routes between start and end locations for smooth navigation during rides.
- Location Search: Users can search for places using text input, improving the flexibility of destination choices.
- Reverse Geocoding: Fetches place names and details from latitude and longitude coordinates, ensuring accurate location services.
- Authentication: Secure user authentication using Supabase, allowing for email-based sign-ups, logins, and session persistence.
- Real-time Data: Supabase handles real-time synchronization of ride requests, trip updates, and other user interactions.
- Data Storage: All user and trip-related data are stored securely, with robust permissions and scalability using Supabase.
GetRide is built using Kotlin Multiplatform Mobile (KMM) for shared business logic across Android and iOS, while using native UI frameworks for each platform:
- Android: The app uses Jetpack Compose for a modern and reactive user interface.
- iOS: The app is powered by SwiftUI, providing a smooth and native experience for iOS users.
- Kotlin Multiplatform Mobile (KMM): Shared business logic for iOS and Android platforms.
- Jetpack Compose: Modern UI toolkit for Android development.
- SwiftUI: Native UI framework for iOS development.
- Supabase: Handles authentication, real-time data, and secure backend storage.
- Stripe API: Processes payments and manages transactions.
- Google Maps API: Provides route calculation, location search, and reverse geocoding.
- Ktor & kotlinx.serialization: For API communication and data serialization.
To install and run GetRide locally, follow these steps:
- Clone the repository:
git clone https://github.com/OmAr-Kader/GetRide.git
- Open the project in Android Studio or any IDE that supports Kotlin Multiplatform.
- Sync dependencies to ensure all libraries are installed.
- Configure Supabase and Stripe:
- Create a Supabase project and retrieve your API URL and API key.
- Set up a Stripe account and obtain your Stripe API key and account ID.
- Add these configurations to your
local.properties
file:
SUPABASE_URL=your_supabase_url SUPABASE_API_KEY=your_supabase_api_key STRIPE_API_KEY=your_stripe_api_key STRIPE_ACCOUNT_ID=your_stripe_account_id MAPS_API_KEY=your_google_maps_api_key
- Run the application:
- For Android: Run the app on an emulator or physical device.
- For iOS: Open the project in Xcode, build, and run it on a simulator or a connected iPhone.