StarWarsSearch
StarWarsSearch copied to clipboard
Search for your favorite star wars characters from Swapi API. Uses Android Jetpack, clean architecture with MVI (Uni-directional data flow), dagger hilt, DFM Navigation, and kotlin coroutines with Sta...
Star Wars search
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
Features
- Clean Architecture with MVI (Uni-directional data flow)
- View components
- Kotlin Coroutines with Flow
- Dagger Hilt
- Kotlin Gradle DSL
- GitHub actions for CI
Prerequisite
To build this project, you require:
- Android Studio 4.2 canary 8 or higher
- Gradle 6.6.1
Screenshots

Libraries
-
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
runBlocking
coroutine builder used in tests