This application make use of the Dogs Api hosted here. Currently has two screens, the first screen displays a clickable vertical list of all dog breeds and their corresponding sub breeds. The second screen shows a grid list of all images pertaining to the selected breed.
Please find below more details...
- Data (for database, API and preferences code)
- Domain (for business logic and models)
- Presentation/App (for UI logic, with MVI)
- Unit tests
- Application tests
- Activity tests (with Espresso)
- Dependency injection (with Hilt)
- Reactive programming with RXJAVA
- Google Material Design library
- Quick cached Image loading (with Picasso)
- Networking (with Retrofit)
- Flat layout hierarchy (with Constraint layouts)
- Multi Screen Segmentation (with Fragments)
- Nagivation (with Navigation Library)
- Android lifecyle aware components (with Lifecycle)
- Fluid list loading (with Recycler View)
- Data Persistence (with Room)
- Data surviving configuration changes (with ViewModel)
- Type safe dependency management (with Kotlin DSL)
- Android architecture components to share ViewModels during configuration changes
All Breeds | Breed Details |
---|---|
- Clone this repository preferably with Android Studio
- Build project and then run application. In the situation where you are asked about trusting the application please do select yes
- Please make sure you are on the
main
branch as that has all the latest changes. - To view composable UI impelementation with Jetpack compose you can checkout the
compose
branch.
NB: Please note that testing in the compose
branch might be unstable
- Dog-Friendly has offline support. Data is retrieved from remote when data is established and saved.
- Network notification when data is restored.
- Make UI Improvements and possibly introducing compose
- Introduce some nice error pages and not rely on toasts.
- Had issues implementing instrumentation tests with Hilt but eventually resolved it.