A modern Android weather application built with Kotlin, following MVVM, Clean Architecture, and SOLID principles. This app fetches weather data based on the user's current location and provides a seamless user experience with robust architecture and automated testing.
- Android Studio Narwhal Feature Drop | 2025.1.2 Patch 1
- JDK 11+
- Internet connection for API calls
git clone https://github.com/asadmukhtar28/WeatherApp.git
- Define the base URL of the Weather Forecast API with this name
BASE_URLinlocal.properties. - Login and get api key from https://openweathermap.org/api, then paste it in
local.propertieswith this nameOPEN_WEATHER_API_KEY.
├── core # Mapping interfaces
├── data # Repository implementations, API data sources, and mappers
├── domain # Business logic and use cases
├── ui # UI components and ViewModels
├── di # Dependency injection (Hilt) modules
├── utils # Shared utility classes
└── test # Unit tests
- Fetch and display current weather information based on the user's location.
- Show the weather forecast for each day in a beautiful card design, and show appropriate weather conditions and weather types.
- Fully tested with unit tests for reliability.
- CI/CD pipeline integrated for automated build and test checks.
- Support RTL mode with the supported languages of English and Arabic.
- MVVM with Clean Architecture
- SOLID Principles
- Jetpack Compose, ViewModel
- Kotlin Coroutines
- Hilt for dependency injection
- FusedLocationProvider API
- JUnit, Mockk, Turbine for Unit Testing
- Jacoco for test coverage
- CI/CD by using GitHub actions.
- Script to upload reports of unit test and Jacoco test coverage to the repository.
- Fork it
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request



