Skip to content

EmmanuelDav/Weather

Repository files navigation

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.