This is a sample project with the main objective of integrating Jetpack components
as much as possible in a single app.
Additionally, the project try to implement ideas from Domain-Drive Design, Design Patterns, and
Clean Architecture mainly focused on the Dependency Inversion principle.
The app topic is Movies and you may find functionalities such as:
- search movies by name.
- see the movie extra details.
- mark the movie as favorite.
- listing favorite movies.
Legend:
🟩 Implemented in the app.
🟨 Implementing (WIP).
⬜ Not yet implemented.
graph LR
A[Navigation Drawer] --> B[Find Movie Screen]
A --> G
B -- input search --> C{Any Result?}
C -- Yes --> D[Listing Movies Screen]
C -- No --> E[Empty Screen]
D -- select --> F[Detail Screen]
F -- add to favorites --> F
G[Favorite Screen]
Jetpack | Kotlin & Quality | Dependency Management | Others | Testing |
---|---|---|---|---|
Compose |
Coroutines |
Version Catalogs |
Landscapist |
MockK |
WorkManager |
Asynchronous Flow |
TOML |
Material 3 |
ComposeTestRule |
Hilt |
Detekt |
Gradle Kotlin DSL |
Retrofit |
|
Room |
Ktlint |
OkHttp |
||
Paging |
Timber |
|||
Navigation |
Lottie |
Creational | Structural | Behavioral |
---|---|---|
Singleton | Facade | Command |
Chain of Responsibility | ||
State |
The Domain Model pattern is shown here in a very simple way.
This project is trying to follow the ideas explained in Domain-Driven Design book of Eric Evans.
Yet, there are only a few entities, so far, such as: Movie
and TomatoMeter
.
It's strongly recommended to read Clean Architecture book of Robert C. Martin
for a better understanding and avoiding misconceptions out there.
As a glimpse, read Clean Code blog: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
- 📝 Kotlin Docs: https://kotlinlang.org/docs/home.html
- 🚀 Kotlin Release: https://github.com/JetBrains/kotlin/releases
- 📣 Kotlin Blog: https://blog.jetbrains.com/kotlin/
- 🎥 Kotlin Youtube Channel: https://www.youtube.com/channel/UCP7uiEZIqci43m22KDl0sNw
- 🤖 Kotlin Reddit: https://www.reddit.com/r/Kotlin/
- 🤯 Kotlin StackOverflow: https://stackoverflow.com/questions/tagged/kotlin
- 🗺️ Kotlin Community: https://kotlinlang.org/community/
- 📝 Platform Architecture: https://developer.android.com/guide/platform
- 👩💻👨💻 Android Developers: https://developer.android.com/
- Android Jetpack: https://developer.android.com/jetpack
- Sunflower: https://github.com/android/sunflower
- Compose Samples: https://github.com/android/compose-samples
- Droidcon: www.droidcon.com
- Android Developers: https://www.youtube.com/channel/UCVHFbqXqoYvEWM1Ddxl0QDg
For more samples in this series of Android Development, please, feel free to check them. Each one of them cover a specific topic.
- Modularization by layers. Skills: MVI, RxJava.
👉 https://github.com/4mr0m3r0/movies-mvi-sample - Modularization by features. Skills: MVI, Coroutines, Flow.
👉 https://github.com/4mr0m3r0/movies-modularization-sample - Implementing a Design System. Skills: Jetpack Compose, Atomic Design Methodology.
👉 https://github.com/4mr0m3r0/atomic-design-sample - Android Services. Skills: Services, Broadcast Receivers, Content Providers.
👉 https://github.com/4mr0m3r0/android-services-sample