This Android application allows users to choose parcel types and transportation options by selecting an origin and destination on a map. The app integrates Google Maps, Jetpack Compose, Hilt, and Firebase for a seamless and modern user experience.
- Google Maps Integration: Select origin and destination locations directly on the map.
- Jetpack Compose UI: Modern UI components built using Jetpack Compose.
- Hilt Dependency Injection: Provides dependency injection for ViewModels and other components.
- Location Handling: Fetches current location and allows user-defined locations.
- Parcel and Transportation Options: Choose parcel types and transportation options from customizable sheets.
- Polyline Drawing: Displays a polyline between the origin and destination on the map.
- Kotlin: Primary programming language.
- Jetpack Compose: UI framework.
- Google Maps: Map display and interaction.
- Hilt: Dependency injection.
- Firebase: Storage, Firestore, and Functions for backend services.
- ViewModel: Manages UI-related data lifecycle.
This project follows the MVVM (Model-View-ViewModel) architecture pattern:
- Model: Handles data operations. It uses Firebase for data storage and retrieval.
- ViewModel: Connects the Model and View. Manages the app's data logic and handles UI state.
- View (Composable Functions): Displays the UI, observes changes from the ViewModel, and updates accordingly.
├── app/
│ ├── data/ # Data layer including Firebase and Repository implementations.
│ ├── di/ # Hilt modules for dependency injection.
│ ├── ui/ # Composables and UI logic.
│ ├── utils/ # Utility classes and extension functions.
│ └── viewmodel/ # ViewModels for managing UI state.
├── build.gradle # Gradle configuration.
└── README.md # Project documentation.
- Android Studio Flamingo or later.
- Kotlin 1.8 or higher.
- Firebase account with Firestore and Firebase Functions set up.
- Clone the repository:
git clone https://github.com/iamomidk/uber4things.git
- Open the project in Android Studio.
- Add your
google-services.jsonfile in theapp/directory. - Sync the project with Gradle files.
- Set up Firebase by enabling Firestore, Firebase Storage, and Firebase Functions.
- Configure the
FusedLocationProviderClientfor location services. - Customize map styling or parcel types by editing the corresponding files in the project.
- Build the project using Android Studio.
- Run the app on an emulator or a physical device.
- Open the app and allow location permissions.
- Choose your origin by centering the map and clicking “Choose Origin.”
- Select your destination similarly.
- Choose parcel type and transportation options from the bottom sheets.
- Confirm and visualize your delivery route on the map.
Include some relevant screenshots here.
This project is licensed under the MIT License. See the LICENSE file for more details.