Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hantrungkien/gapo-dashboard-demo
An demo app which attempts to use the latest cutting edge libraries and tools.
https://github.com/hantrungkien/gapo-dashboard-demo
android android-development clean-architecture dagger2 jetpack-android kotlin-android modular modularization mvvm
Last synced: about 7 hours ago
JSON representation
An demo app which attempts to use the latest cutting edge libraries and tools.
- Host: GitHub
- URL: https://github.com/hantrungkien/gapo-dashboard-demo
- Owner: hantrungkien
- Created: 2020-05-14T11:40:42.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-05-13T11:23:25.000Z (over 3 years ago)
- Last Synced: 2023-10-29T16:20:27.015Z (about 1 year ago)
- Topics: android, android-development, clean-architecture, dagger2, jetpack-android, kotlin-android, modular, modularization, mvvm
- Language: Kotlin
- Homepage: http://gapo.vn/
- Size: 10.6 MB
- Stars: 13
- Watchers: 2
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Gapo-Dashboard-Demo
An app which attempts to use the latest cutting edge libraries and tools.
[Demo App download](https://dply.me/nkdiu2)
![gapo-demo](https://github.com/hantrungkien/Gapo-Dashboard-Demo/blob/master/images/gapo_demo.png?raw=true)
![architecture](https://github.com/hantrungkien/Gapo-Dashboard-Demo/blob/master/images/architecture.png?raw=true)
## Architecture
* Modularization by feature.
* Clean Architecture + MVVM.
* Dependency injection with Dagger. It is configured to use for both Library & Dynamic Feature Module.
* Navigating between modules with Deeplink.## Android Development
* [Kotlin](https://github.com/JetBrains/kotlin)
* [Kotlin Coroutines](https://github.com/Kotlin/kotlinx.coroutines)
* [Dagger2](https://github.com/google/dagger)
* [Jetpack Foundation & UI](https://developer.android.com/jetpack): AndroidX, Material Design, ConstrainsLayout,...
* [JetPack Architecture](https://developer.android.com/jetpack): DataBinding, ViewModel, LiveData, Lifecycle, Navigation
* [Retrofit2](https://github.com/square/retrofit)
* [Moshi](https://github.com/square/moshi/)
* [Glide4](https://github.com/bumptech/glide)
* [Brightcove ExoPlayer2](https://sdks.support.brightcove.com/android/)
* [Deeplink Dispatch](https://github.com/airbnb/DeepLinkDispatch)
* [Auto Dimension](https://github.com/hantrungkien/AutoDimension)## Use Case
* Instagram/Youtube style navigation using Navigation Component to create [multiple fragment stacks](https://github.com/hantrungkien/Gapo-Dashboard-Demo/blob/master/dashboard/src/main/java/com/kienht/gapo/dashboard/DashboardActivity.kt).
* Login session will be cached [one week](https://github.com/hantrungkien/Gapo-Dashboard-Demo/blob/master/auth-data/src/main/java/com/kienht/gapo/auth/data/source/cache/AuthCacheImpl.kt). Exceeding this time is considered stale.
* [News feeds](https://github.com/hantrungkien/Gapo-Dashboard-Demo/blob/master/dashboard/src/main/java/com/kienht/gapo/dashboard/news_feeds/NewsFeedsFragment.kt) with [multiple types](https://github.com/hantrungkien/Gapo-Dashboard-Demo/tree/master/dashboard/src/main/java/com/kienht/gapo/dashboard/news_feeds/adapter/viewholder) (Stories & Friend Requests & Posts with only text, text + one image, text + one video) is smooth scroll.
* [Posts Details](https://github.com/hantrungkien/Gapo-Dashboard-Demo/blob/master/post_details/src/main/java/com/kienht/gapo/post_details/PostDetailsActivity.kt) with comment and comment reply.
* Using [Flow](https://kotlinlang.org/docs/reference/coroutines/flow.html) to [load News Feeds](https://github.com/hantrungkien/Gapo-Dashboard-Demo/blob/master/dashboard-data/src/main/java/com/kienht/gapo/dashboard/data/repository/DashboardRepositoryImpl.kt) from multiple data sources.([Cache](https://github.com/hantrungkien/Gapo-Dashboard-Demo/blob/master/dashboard-data/src/main/java/com/kienht/gapo/dashboard/data/repository/source/cache/DashboardCache.kt) and [Remote](https://github.com/hantrungkien/Gapo-Dashboard-Demo/blob/master/dashboard-data/src/main/java/com/kienht/gapo/dashboard/data/repository/source/remote/DashboardRemote.kt)). Each time data is successfully loaded from the [remote](https://github.com/hantrungkien/Gapo-Dashboard-Demo/blob/master/dashboard-data/src/main/java/com/kienht/gapo/dashboard/data/repository/source/remote/api/DashboardApiService.kt) then it will be saved in [local cache](https://github.com/hantrungkien/Gapo-Dashboard-Demo/blob/master/dashboard-data/src/main/java/com/kienht/gapo/dashboard/data/repository/source/cache/DashboardCacheImpl.kt). It is limited to 1 hour.
## NOT IMPLEMENTED YET
* Detailed implementations in the DiffUtil.Callback classes.
* Deep dive into dealing ExoPlayer in RecyclerView.
* Deep dive into Glide optimization.
* Dealing click on news feeds items.
* Caching by SQL or NoSQL. Currently using SharedPref.
* Organize color code and string resource.### LICENCE
Copyright 2020 Kien Han Trung
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.