An app which attempts to use the latest cutting edge libraries and tools.
- 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.
- Kotlin
- Kotlin Coroutines
- Dagger2
- Jetpack Foundation & UI: AndroidX, Material Design, ConstrainsLayout,...
- JetPack Architecture: DataBinding, ViewModel, LiveData, Lifecycle, Navigation
- Retrofit2
- Moshi
- Glide4
- Brightcove ExoPlayer2
- Deeplink Dispatch
- Auto Dimension
-
Instagram/Youtube style navigation using Navigation Component to create multiple fragment stacks.
-
Login session will be cached one week. Exceeding this time is considered stale.
-
News feeds with multiple types (Stories & Friend Requests & Posts with only text, text + one image, text + one video) is smooth scroll.
-
Posts Details with comment and comment reply.
-
Using Flow to load News Feeds from multiple data sources.(Cache and Remote). Each time data is successfully loaded from the remote then it will be saved in local cache. It is limited to 1 hour.
- 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.
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 at
http://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.