Android File Upload App with Jetpack Compose
This Android application is designed to upload very large files by splitting them into chunks, using streams for efficient upload.
Design Patterns and Tools
1. Android Jetpack Compose
- The user interface of the application is built using Jetpack Compose, which allows for a more declarative and efficient way to create UI components.
2. Uncle Bob’s Clean Architecture
- The application follows Clean Architecture principles, separating concerns into layers: Presentation, Domain, and Data. This ensures a clear and maintainable codebase.
- Coroutines are used to manage asynchronous operations, such as file uploads, in a concise and readable way.
4. Retrofit 2
- Retrofit 2 is used for making HTTP requests to a remote server, facilitating the file upload process.
5. Foreground Service
- The app utilizes a foreground service to ensure that file uploads continue even when the app is in the background or closed, providing a seamless user experience.
6. MVVM Architecture
- The application employs the MVVM (Model-View-ViewModel) architectural pattern, separating the UI logic from the data handling and business logic.
7. Dagger Hilt
- Dagger Hilt is used for dependency injection, making it easier to manage and provide dependencies throughout the application.
- Real Time Notification
- Upload Speed
- Estimated Time Reamining
- Upload Progress
- Pause And Resume The Upload
- Clone the repository to your local machine.
- Open the project in Android Studio.
- Build and run the app on an Android emulator or physical device.
- Launch the app on your Android device.
- Select a file you want to upload.
- The app will split the file into chunks and start the upload process.
- Monitor the progress, upload speed, and estimated time remaining in real-time on the UI.
- The foreground service ensures that the upload continues even if you navigate away from the app.
This project is licensed under the MIT License. See the LICENSE file for details.
Enjoy using the Android File Upload App with Jetpack Compose! If you have any questions or encounter any issues, please don’t hesitate to create an issue on the GitHub repository.