An app that lets the user control their connected devices.
- MVVM Architecture
- AndroidX
- Android KTX
- Navigation
- View Binding
- Lifecycles - To create a UI that automatically responds to lifecycle events.
- LiveData - Build data objects that notify views when the underlying database changes.
- ViewModel - To store UI-related data that isn't destroyed on app configuration changes.
- Room - Local database.
- Hilt: - For dependency injection
- Kotlin Coroutines - For managing background threads with simplified code and reducing needs for callbacks
- Preferences DataStore - To store simple data. "DataStore uses Kotlin coroutines and Flow to store data asynchronously, consistently, and transactionally."
- RxKotlin/RxJava - In this project I've used it to handle the call to the remote data. But I could've used Coroutines Flow for more consistency in the entire project.
- Retrofit - REST client for web services calls.
- Moshi - JSON library to parse remote data.
- MockK - Mocking library for easier and more readable tests.
- Lottie - Animations library.
- LeakCanary - A memory leak detection library.