Marvel Android Mobile Test
This is the android app that consists of a master-detail app for showing Marvel characters. Because of its simplicity it is not a multi-module app but for larger and complex applications it should be done in that way.
This app is developed based on a clean architecture basis (multilayered with presentation, domain and data layers), followed by a MVVM architectural pattern. Also, as view states are treated in a machine-state-based way, this pattern could be considered more close to an MVI one.
Moreover, the app follows SOLID principles and some other software patterns such as Repository pattern, Observer pattern, UseCase Pattern or Delegation pattern.
Min API level is set to 21
, so the presented approach is suitable for over
85% of devices running Android. This project takes advantage of latest
popular libraries and tools of the Android ecosystem
- Tech-stack
- Kotlin + Coroutines - perform background operations
- Kotlin Flow - Handles asynchronous stream of data without coupling non UI layers with lifecycle aware components as LiveData (https://betterprogramming.pub/no-more-livedata-in-repositories-in-kotlin-85f5a234a8fe)
- Kotlin DSL for Gradle - Handle dependencies management and project config gradle files with Kotlin DSL support
- Koin - dependency injection for this small project and simple setup
- Retrofit - networking
- Jetpack
- Navigation - deal with whole in-app navigation
- LiveData - lets the components in your app, usually the UI, observe LiveData objects for changes.
- Lifecycle - perform action when lifecycle state changes
- ViewModel - store and manage UI-related data in a lifecycle conscious way
- Room - create a cache of your app's data on a device that's running your app
- Glide - image loading library
- Architecture
- Clean Architecture
- MVVM + View Binding (presentation layer)
- Android Architecture components (ViewModel, LiveData, Navigation)
- Tests