An android application architecture exploration in compose
If this project helps you in anyway, show your love ❤️ by putting a ⭐ on this project
Hello there, In this project I tried showcasing how to build an Android Application in Jetpack Compose with clean architecture and MVI using some of the jetpack libraries with Kotlin Coroutines & Dagger Hilt. This App is using the PokeApi as a remote data source.
This app is based on the Guide to app architecture article, Kotlin 1.5, and coroutine. I also used some android architecture components like Flow, ViewModel.
You can check my short term backlog in my Github Projects here
project
| buildSrc //Project gradle dependencies configurations - Ex.: versions and libs - and gradle dsl extensions
| app //Main application module
| features //project features
| data //Feature remote and local data source
| di //feature independency injection modules
| repository //data access abstractions
| usecase //Business rules abstractions
| viewmodel //state of the ui data
| core //architecture and utility classes
| coroutines //abstraction classes, helper classes and extensions to work with coroutines
| datasource //abstraction classes, helper classes and extensions to work with datasources
| di //architectural dependency injection modules and utility classes
| logs //helper classes and extensions to work with logs
- ViewModel - store and manage UI-related data in a lifecycle conscious way
- Jetpack Compose - describe ui components with declarative functions
- Material - Material Components.
- Coroutine - performs background tasks
- Flows - for asynchronous data streams
- Coil - An image loading library for Android backed by Kotlin Coroutines
- Moshi - Moshi is a modern JSON library for Android, Java and Kotlin. It makes it easy to parse JSON into Java and Kotlin classes
- Retrofit- A type-safe HTTP client for Android and Java
- OkHttp - A network application
- Dagger Hilt - dependency injector
- Room - Save data in a local database
- Espresso - UI test
- Junit - unit tests
- Truth - Makes your test assertions and failure messages more readable
- Mockk - Mocking library for kotlin
- Detekt - a static code analysis tool for the Kotlin programming language
- KTLint - Kotlin linter in spirit of feross/standard (JavaScript) and gofmt (Go).
- Gradle Kotlin Plugin - Gradle scripts in Kotlin
- Timber - Small log library based on Android SDK log