This project is an android app created for fans of "Rick And Morty" series and provides some valuable information about characters, locations and episodes, allows to search and filter data. This project originally was created in Java, but now it has been heavily refactored and rewritten in Kotlin.
Project is based on MVVM architecture, mostly written in Kotlin using Android Jetpack components and libraries. App utilises offline first approach and implements "Single Activity - multiple Fragments" navigation pattern.
Android Jetpack Architecture Components used:
- ViewModel
- LiveData
- Room
- ViewBinding
- Navigation component
- Paging v2
Dependency injection:
- Dagger2
Kotlin libraries:
- Kotlin Coroutines (with Flows)
- various ktx extensions
Testing:
- Unit tests, instrumented tests (JUnit, Mockito)
UI is utilising a dual-theme approach, allowing users to choose from light or dark theme. Components from Material Design library (MaterialCardview, MaterialToolbar, BottomNavigationView etc.) have been used due to their ability to switch between colour Primary and colour Surface. Detail Fragments are designed in a way that allows the user to drag and move contents - this behaviour is implemented by using MotionLayout. MaterialContainerTransform (shared element transitions), MaterialFadeThrough and MaterialElevationScale from Material Design library have been used to animate transitions between list and detail fragments.
Rick and Morty RESTful API, rick-and-morty-api by Axel Fuhrmann is being used as a data source for this project.
Project uses third-party libraries (in no particular order):
- LeakCanary in debug mode for detecting memory leaks.
- Retrofit for making RESTful API calls
- Material Dialogs creating dialog views
- Timber logging
- Dagger2 dependency injection
- Glide image loading library
- Mockito-Kotlin kotlin helper functions for Mockito
- Truth assertions library for unit testing
Licensed under the GNU General Public License v3.0