A small application with SOLID principles, MVVM design pattern, backed by Android Architecture Components + Kotlin Coroutine.
- ui with MainActivity and its ViewModel.
- MainActivity will observe and react to changes in viewmodel's livedata
- MainActivity can also trigger a search by calling viewmodel#searchCity
- ViewModel will query the forecasts from repository (its single source-of-truth) and update it's livedata upon receiving data.
- repository hosts the WeatherRepository, it acts like a mediator for network and cache data. It also performs the caching logics.
- persistence contains cache data(backed by Room and a simple cache for search query)
- network backed by Retrofit api and its related responses
- DependenciesContainer will wire all required dependencies and got initialized in App#onCreate
- Mockk for mock test
- Robolectric with Androidx Test support.
Programming language: Kotlin is required, Java is optional.Design app's architecture (suggest MVVM)Apply LiveData mechanismUI should be looks like in attachment.WriteUnitTests- AcceptanceTests
ExceptionhandlingCachinghandling- SecureAndroidappfrom:
Decompile APK- Rooted device
Data transmission via network- Encryption for sensitive information
Accessibility for Disability Supports:
Talkback:Useascreenreader.Scaling Text: Display size and font size: To change the size of items on your screen, adjust the display size or font size.
- Entity relationship diagram for the database and solution diagrams for the components, infrastructure design if any