Skip to content

mijiga/Weather-App

Repository files navigation

Weather App

Weather Default Workflow

An Android app consuming the Open Weather Map API, built on the MVVM pattern with clean architecture principles and Architecture Components.

Based on the user's location, the app displays the current day's forecast as well as that of the upcoming 5 days. The app's theme changes based on the current weather type(cloudy, rainy, sunny).

Tech-stack

  • Libraries
    • Kotlin - a cross-platform, statically typed, general-purpose programming language with type inference.
    • Coroutines - perform background operations.
    • Dagger-Hilt - a standard way to incorporate Dagger dependency injection into an Android application
    • Retrofit - A type-safe HTTP client for Android.
    • Jetpack
      • LiveData - is an observable data holder.
      • Lifecycle - perform action when lifecycle state changes.
      • ViewModel - store and manage UI-related data in a lifecycle conscious way.
    • Easy Permisisons - a wrapper library to simplify basic system permissions logic.
  • Architecture
    • MVVM - Model View ViewModel
  • Tests
  • CI/CD
    • Github Actions

UI and Unit Tests

Unit Tests on Presentation Layer

The Unit Tests here test ViewModel

More tests can be added

Theme & Design

Issues

  • The Forecast endpoint serves data for every 3 hours and not single day(premium feature) as suggested in the provided design