Android Mobile Application that displays the weather status and the temperature from your location. Also, you can pick a specific location on the map and add it to a list of favorite locations and get all the weather information at this location. In addition you can set an alert for rain, wind, fog, snow โฆ etc.
- MVVM architecture.
- Use OpenWeatherMap API.
- Automatic notifications about weather alerts.
- Custom alarms in a specific time range .
- Change location provider (GPS, Google-Maps Location).
- Support two language (English, Arabic).
- Change temperature unit (Celsius, Kelvin, Fahrenheit).
- Change wind speed unit (m/s, mph).
- Local data with Room Persistence.
- Auto update weather per 15 minutes with Jetpack WorkManager.
- Kotlin - First class and official programming language for Android development.
- Coroutines - For asynchronous and more..
- Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
- Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
- LiveData - Data objects that notify views when the underlying database changes.
- ViewModel - Stores UI-related data that isn't destroyed on UI changes.
- Data Binding - Declaratively bind observable data to UI elements.
- Room - SQLite object mapping library.
- Dependency Injection -
- Hilt-Dagger - Standard library to incorporate Dagger dependency injection into an Android application.
- Hilt-ViewModel - DI for injecting
ViewModel
.
- Retrofit - A type-safe HTTP client for Android and Java.
- Moshi - A modern JSON library for Kotlin and Java.
- Kotlin Serlization - Kotlin Multiplatform Serialization
- Material Components for Android - Modular and customizable Material Design UI components for Android.
- Splash Screen - Newly introduced splash screen API
- Work Manager - Schedule background tasks
- Lottie - Animation
- Google Maps - Embedded Google Maps
- Glide- for image loading
- JUnit - Unit Testing
- Truth - Fluent Assertions
- Turbine-Turbine is a small testing library for kotlinx.coroutines Flow
- Espresso-write concise, beautiful, and reliable Android UI tests.