Skip to content

MortezaNedaei/Clean-Weather

Repository files navigation

Code Quality

Codacy Badge CodeFactor codebeat badge

Description

This is a weather forecast application based on the modern Android development tools

Want to see the task assignment?

You can find it Here

Need to download the latest release APK?

You can download the latest version via Github CI or you can see all releases in Github Releases

How to start?

If you are using the stable version of AndroidStudio, you need to downgrade the gradle plugin version to a stable version.

Screen Shots

animation2 animation1

Libraries and Tools

  • Android Studio Electric Canary 3
  • Kotlin 1.7-Beta
  • Context Receivers
  • KSP (Kotlin Symbol Processing): is a library for processing Kotlin source files.
  • Clean Architecture
  • MVVM
  • Single Activity
  • Dagger Hilt
  • Room Offline Database
  • Cache Strategy (Offline-First, Online-First)
  • Coroutines (RepeatOnLifeCycle API)
  • Navigation (SafeArgs)
  • Retrofit
  • ViewBinding
  • Material Design
  • Portrait + Landscape
  • SharedElement Transition
  • Coil
  • UnitTests (Mockk): is a library for mocking and verifying Kotlin code.
  • Github CI (Automated Release APK, UnitTests)
  • Network Check

Notes

  • There are some PBIs (Product-Backlog-Item) in the Backlog section that could be implemented in the future
  • There are some TODOs in the project source code. Most of them are additional features that could be implemented in the future
  • The current weather is shown in the main screen for specific city code. But its better to show it using user's location.
  • Some of objects in observation field in the api/estonia/current/ endpoint, have an empty string for their wmocode. So we can't make an API call for this places. instead we can show details from previous screen.
  • The API doesn't provide any image url for the place. So it's better to use some random images from network to have a better UX.
  • Some place ids in the estonia/current response, could not be found in world/locations/{id}. So you might see handled error of Network Error: Not Found

Backlog

  • Network Error Animation + Retry Button
  • Add Swipe Refresh
  • Jetpack Compose Version
  • MotionLayout
  • Fragments Split (Converting fat Fragments to small fragments)
  • MultiThreading (Coroutines ThreadPoolExecutor)
  • Google Maps Location
  • Paging
  • MultiModule
  • DatePicker
  • MultiLanguage
  • MultiTheme