Clean Architecture by Uncle Bob android app to View current weather for a specific location
-This project follows Clean Architecture principles, offering a modular, scalable, and testable codebase. It demonstrates how to create an Android application using modern development practices while focusing on separation of concerns and maintainability.
https://developer.android.com/topic/architecture
This application follows the Clean Architecture pattern. The architecture layers include:
-Presentation Layer: Contains the UI and ViewModels.
-Domain Layer: Handles business logic and use cases.
-Data Layer: Manages data sources (e.g., APIs, databases).
-Kotlin: The primary programming language, chosen for its conciseness, expressiveness, and safety.
-Jetpack Compose: Declarative UI toolkit for building modern Android UIs.
-Hilt: Simplifies dependency injection for Android apps.
-Kotlin Coroutines: For asynchronous programming and thread management.
-Flow: A reactive data stream library for handling real-time updates in the app.
-Retrofit: A networking library for seamless API communication.
-Coil: A lightweight image-loading library for efficient and fast image rendering.
The app has been designed with the following objectives:
-Performance: Ensure smooth and responsive interactions.
-Readability: Write code that is clean, consistent, and easy to understand.
-Maintainability: Make it simple to add new features or fix bugs.
-Scalability: Enable growth without significant refactoring.
-Simplicity: Keep the user experience and codebase straightforward.
-The app utilizes the Weather API for retrieving real-time weather data. This API provides endpoints for current conditions, hourly forecasts, and extended daily forecasts.
The app is divided into multiple modules to enhance modularity:
-UI Module: Manages the presentation logic, including Jetpack Compose components.
-Domain Module: Contains the use cases and business logic.
-Data Module: Handles network requests using Retrofit .
1-Clone the repository.
2-Open the project in Android Studio.
3-Sync Gradle files to download dependencies.
4-Obtain a Weather API key from Weather API.
5-Add the API key to your local properties or as an environment variable.
6-Build and run the app.
Contributions are welcome! Feel free to open issues or submit pull requests to enhance the project.