OneDrop is a mobile application designed to connect blood donors with those in need. It simplifies the process of finding blood donors and requesting blood in a timely manner.
- User Authentication: Secure sign-up and login functionality.
- Blood Donor Search: Find nearby blood donors based on blood type and location.
- Blood Requests: Create and manage blood requests.
- Real-time Notifications: Get notified about new blood requests and donor responses.
- User Profile: Manage your profile, including blood type and contact information.
- Onboarding: A simple and intuitive onboarding process for new users.
- Legal Information: Easy access to the app's privacy policy and terms of service.
This project follows the principles of modern Android development and is built with a modular, scalable, and maintainable architecture.
- Programming Language: Kotlin
- UI Toolkit: Jetpack Compose
- Architecture: MVVM (Model-View-ViewModel) with a modular approach.
- Dependency Injection: Koin
- Asynchronous Programming: Kotlin Coroutines and Flow
- Navigation: Jetpack Navigation Compose
- Image Loading: Coil
- Data Serialization: Kotlinx Serialization and Gson
- Networking: Retrofit and OkHttp (likely, based on common practice)
- Database: Room (likely, based on common practice)
- In-app Updates: Google Play Store Update API
- Monetization: Google AdMob
The project is divided into several modules to promote separation of concerns and better code organization.
app: The main application module that brings everything together.core: Contains core functionalities like networking, database, navigation, and utilities.common: Includes common data, domain, and UI components shared across features.feature: Contains individual features of the app, each with its own data, domain, and UI layers.resource: Holds shared resources like strings, colors, and themes.
To build and run this project, you'll need to have Android Studio installed.
- Clone the repository:
git clone https://github.com/your-username/onedrop.git
- Open the project in Android Studio.
- Sync the project with Gradle files.
- Run the app on an emulator or a physical device.
Contributions are welcome! If you have any ideas, suggestions, or bug reports, please open an issue or submit a pull request.
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.