Canis Catalog is an Android app that allows the user to browse various dog breeds and check information about them. The data is provided by The Dog API.
This project has been developed for the SwordHealth Android Code Challenge.
Clone the repository, checkout main
, build the project and you should be ready to go :)
You will need to provide your own API key for The Dog API.
This key must be placed in the local.properties
file (if you don't have it, then please
create it in the root of project). Example of the file's content:
THE_DOG_API_KEY=YOUR_API_KEY_HERE
In case you need a key, please open an issue and I'll see what can be done.
- Written in Kotlin
- MVVM architecture (with a repository)
- UI created using Jetpack Compose
- Coil for image loading
- API calls performed using Retrofit
- Local data persistance with Room
- Dependency injection with Hilt
- Pagination for the Home screen implemented using Paging 3
- LiveData for UI to consume the data from the ViewModel
- Kotlin Coroutines for async operations
At the moment, there are still some things that need to be implemented/improved in this project which I'm aware of, mainly:
- Improve the offline mode (eventually, implementing a RemoteMediator will be the ideal solution to ensure a proper "caching" solution is used and balance between using the remote/local data).
- Add code coverage (implement unit and integration tests)
- Improve the error handling logic/messages when getting data from the API
- UI can use some adjustments/polish (mainly the details page can use some extra work)