Meli Clone
Tech stack
- Minimum SDK level 21
- Kotlin
- Jetpack Compose Androidโs modern toolkit for building native UI. (The app was built using JetpackCompose and XML for create interfaces to give a demostration of how we can inject new way to create interfaces with old way to create interfaces).
- Hilt for dependency injection.
- Jetpack
- Lifecycle - Observe Android lifecycles and handle UI states upon the lifecycle changes.
- View Binding - Feature that allows you to more easily write code that interacts with views.
- ViewModel - Manages UI-related data holder and lifecycle aware. Allows data to survive configuration changes such as screen rotations.
- Navigation Component - Handling and manage the navigation in the app.
- Room Persistence - Constructs Database by providing an abstraction layer over SQLite to allow fluent database access.
- Retrofit2 & OkHttp3 - Construct the REST APIs.
- Kotlin Serialization - A modern JSON library for Kotlin.
- StateFlow - state-holder observable flow that emits the current and new state updates to its collectors.
- Coroutines - for asynchronous calls.
- Coil - for loading images from network.
- Mockito-Kotlin - Library for unit testing based in kotlin.
- RefreshVersion - to manage dependencies version from kotlinDSL.
Architecture
Meli is based on the MVVM architecture and the Repository pattern and it has the approach in Clean Architecture where we can manage differents layers. This architecture containts three main layers:
- data: In this module/layer it will be everything about datasources like network and cache
- domain: In this module lives everything about bussines logic working with use cases, also is the responsible to get data from data module to send it to the view.
- features: In this module lives all presentation
How I run the app?
- Clone the repository
- Open it in Android Studio
- Wait until dependencies are installed
- Run app in your emulator or physical device
If you don't have Android Studio and you don't want to clone the repository, you can downlad an apk here