This is a weather forecast application based on the modern Android development tools
You can find it Here
You can download the latest version via Github CI or you can see all releases in Github Releases
If you are using the stable version of AndroidStudio, you need to downgrade the gradle plugin version to a stable version.
- 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
- 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 inworld/locations/{id}
. So you might see handled error ofNetwork Error: Not Found
- 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