Hey there 👋🏼👋🏼👋🏼 This branch introduces some of the basic ideas on Componentization as shown by the UI Engineering team at Netflix. Resources here: Blog, Repo
For a fuller implementation, check out this branch
You can also check this branch for a different approach to the project
You can check out my thought process in this file
- Clean Architecture with MVI (Uni-directional data flow)
- View components
- Kotlin Coroutines with Flow
- Dagger Hilt
- Kotlin Gradle DSL
- GitHub actions for CI
To build this project, you require:
- Android Studio 4.2 canary 8 or higher
- Gradle 6.6.1
- Viewmodel - Presenter for persisting view state across config changes
- FlowBinding - converts traditional view click listeners and call backs to Kotlin flow
- Room - Provides abstraction layer over SQLite
- Retrofit - type safe http client and supports coroutines out of the box.
- Moshi - JSON Parser,used to parse requests on the data layer for Entities and understands Kotlin non-nullable and default parameters
- okhttp-logging-interceptor - logs HTTP request and response data.
- kotlinx.coroutines - Library Support for coroutines,provides
runBlocking
coroutine builder used in tests - Truth - Assertions Library,provides readability as far as assertions are concerned
- MockWebServer - web server for testing HTTP clients ,verify requests and responses on the star wars api with the retrofit client.
- Robolectric - Unit test on android framework.
- Espresso - Test framework to write UI Tests
- Dagger Hilt - handles dependency injection
- Kotlin Gradle DSL