EmmanuelDav/Weather

Live Weather Prodcast App

β˜… 1Forks 0KotlinGitHub β†—Compare
api-clientdaodarkmodejunitlivedata-viewmodelmaterial-uimockito-junit-testmvvmmvvm-architectureokhttp-interceptorretrofitroom-databasesharedflowweather-appweather-forecast

README

Weather App 🌦️

[GitHub license]

Weather App is a sleek and modern Android application that fetches real-time weather data using the OpenWeatherMap API. It provides users with up-to-date weather information, including temperature, humidity, wind speed, and more, based on their location or a searched city. The app is designed to showcase best practices in modern Android development, clean architecture, and robust testing.

The codebase emphasizes the following key technologies and practices:

  1. ViewBinding - For type-safe view interaction.
  2. Navigation Components - Seamless navigation using Fragments.
  3. LiveData & ViewModel - For lifecycle-aware data management.
  4. Dagger 2.0 - Dependency injection without Hilt for modularity and testability.
  5. Retrofit - For efficient API communication.
  6. Room - Local data storage and caching.
  7. Paging3 - For handling large datasets efficiently.
  8. Kotlin Coroutines - Asynchronous programming made easy.
  9. Material Design - A modern and responsive UI.
  10. Mockito & JUnit - For unit and integration testing.
  11. Timber - For streamlined logging.
  12. Firebase Crashlytics - For monitoring app stability.
  13. Coil - For efficient image loading.
  14. Shimmer - For smooth loading animations.

The goal of this project is to demonstrate how to build a high-quality Android app using modern tools and libraries while maintaining clean, testable, and maintainable code.


Development Setup πŸ–₯️

To build and run this project, you’ll need the latest version of Android Studio (preferably Arctic Fox or newer).

API Key πŸ”‘

To fetch weather data, you’ll need an API key from OpenWeatherMap. Follow these steps:

  1. Sign up on OpenWeatherMap and generate an API key.
  2. Add the API key to your local.properties file:
    OPENWEATHER_API_KEY = <INSERT_YOUR_API_KEY>
    
  3. Build the app πŸŽ‰

ScreenShots


Architecture πŸ—οΈ

The app uses MVVM [Model-View-ViewModel] architecture to ensure a clean separation of concerns, testability, and maintainability. Here’s a high-level overview:

Read more:

Architecture

Author πŸ‘¨β€πŸ’»

Emmanuel Iyke

License πŸ“„

This project is licensed under the Apache License 2.0. See the LICENSE file for details.

Contributors

EmmanuelDav

Issues