A simple project to demonstrate an approach based on MVI + Clean architecture and modularization based on features and layers
- Minimum SDK level 23
- 100% Kotlin based + Coroutines
- JetPack
- LiveData - notify domain layer data to views.
- Lifecycle - dispose observing data when lifecycle state changes.
- ViewModel - UI related data holder, lifecycle aware.
- Architecture
- Modularization by features and Layers
- MVI UI Architecture ( Event + State + Effect)
- Clean architecture approach with repository pattern
- Dagger 2 - dependency injection
- UI
- DataBinding - Android DataBinding kit for notifying data changes to UI layers.
- Material Design Components
- Design based on Constraint Layout
- Ripple animation, Shared element transition
- Persistence
- Retrofit2 & Moshi - constructing the REST API
- OkHttp3 - implementing interceptor, logging and mocking web server
- Glide - loading images
- ObjectBox - The superfast NoSQL database for implementing a local cache layer.
- Cloud Firestore - To persist users' favorite movies.
- Firebase Auth - To authenticate users