Marvel App
A simple Android project that lists and details Marvel characters.
How to use π£
Just add to the PRIVATE_KEY
and PUBLIC_KEY
attributes in the keys.properties
file your Marvel API private and public keys, and you're good to go!
Work in progress π§
As this project is being developed in spare time, I cannot to reserve a time every day for its construction. So, no screen is made, but the following features are ready:
- All dependencies inserted with Gradle Kotlin DSL;
- Project organized in modules by features;
- API integration with polymorphic deserialization;
- Unit tests for library modules already implemented;
- CI with Github Actions running simple gradle tasks for testing and analyzing the code;
- Static code analysis.
Features π¨
- Paginated listing of the character's name and image.
- Display of the description and most expensive HQ of the character that the user selects.
Tools π¨
This project was built in Kotlin and designed according to the MVVM and Clean architectures using:
- ViewModel: The ViewModel class is designed to store and manage UI-related data in a lifecycle conscious way.
- LiveData: LiveData is an observable data holder class. Unlike a regular observable, LiveData is lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, fragments, or services.
- Coroutines: Coroutines not only open the doors to asynchronous programming, but also provide a wealth of other possibilities such as concurrency, actors, etc.
- Dagger Hilt: Hilt is a dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project.
- Material Components: Material Components are interactive building blocks for creating a user interface.
- Navigation: Android Jetpack's Navigation component helps you implement navigation, from simple button clicks to more complex patterns, such as app bars and the navigation drawer.
- Paging: The Paging Library helps you load and display small chunks of data at a time.
- Retrofit: A type-safe HTTP client for Android and the JVM
- Coil: Image loading for Android backed by Kotlin Coroutines.
- Mockk: Mocking library for Kotlin
Static Analysis π
This project uses detekt to analyze the source code, with the configuration that is stored in the detekt.yml file.
CI βοΈ
This project is using GitHub Actions as CI.
Currently, the following workflow is available:
- Project Checks - Perform static code validations, run tests and assemble the project.
Marvel Api π¦
Open API that provides information about Marvel Comics heroes.
Contributing π€
Feel free to open a issue or submit a pull request for any bugs/improvements.