A precise code with less boilerplate and long disturbing code android application using the essence of all of my learned skills and lessons (excluding the tests) designed to be easy to understand even for the beginner. This project is using SharedFlow as its flow, a modular module Clean Architecture, Hilt as its dependency injection, ViewBinding as its layout binding, Retrofit as its REST API Client, Glide to get requested image link into the layout, BroadcastReceiver to get a notification locally, Widget showing Github user's photo, MVVM as its Architecture Pattern, Navigation-ui as its navigation, Paging 3 as its infinite scrolling, XML as its layout, SharedPreference to a temporary saving boolean state, SQLite using Room as its database, ContentProvider as its way to access database in a different module.
This list will be listed ALL of my learned lessons about Android Native Development. The checklist will be checked if there are any learned lessons which used in this project. The double slash will act as a short description of the library/method/etc. This list makes it even non-developers easier to understand what's being applied in this project. As my knowledge grows, this list probably will be updated when I have the time for it, so I hope it can serve as it's meant to be.
1. Lifecycle
1.1. [x] Coroutine // Thread-like Management
2. Observable
2.1. [ ] LiveData // Lifecycle-aware-version of observable
2.2. Flow
2.2.1. [ ] StateFlow // Hot-flow-version of flow
2.2.2. [x] SharedFlow // No-initial-value of flow
3. Clean Architecture
3.1. [x] Modular // Separating layers into different modules
3.2. [x] Centralize // Combine layers in one application module
4. Dependency Injection
4.1. [x] Hilt // Dagger-with-improved-boilerplate
5. Network
5.1. [ ] Firebase // Software-as-many-many-useful-free-and-easy-to-use-service
5.2. [x] Retrofit // Rest Client
5.3. [ ] Ktor // Kotlin-version-of-retrofit
6. BroadcastReceiver
6.1. [x] BroadcastReceiver // Those pop-up things when you got a notification
7. Widget
7.1. [x] Widget // Those things that usually appear in your home phone
8. Leak
8.1. [ ] LeakCanary // Library to check leaking memory
9. Architecture Pattern
9.1. [ ] MVP // Model-View-Presenter
9.2. [x] MVVM // Model-View-ViewModel
10. Navigation
10.1. [x] Navigation-ui // One Activity, Multiple Fragment
11. Local Storage
11.1. [x] SharedPreference // Temporary Storage
11.2. [x] SQLite // Android-version-of-database
11.2.1. [x] Room // Easier SQLite
12. Layout
12.1. [x] XML // Default Android Native Layout
13. Infinite Scroll
13.1. [x] Paging 3 // Improved Paging 2
14. ContentProvider
14.1. [x] ContentProvider // A way to Access database from different module/package
15. Image Loading
15.1. [x] Glide // Famous image-loading library
15.2. [ ] Picasso // Another image-loading library which famous for it's lightness
To try running this project, clone and put your own Github authorization code in commented TODO in Gradle and you're ready to go.