MVVM News Multi-Module Sample
Sample code to demonstrate multi-module navigation with some experimental gradle's features & more.
Compilation Guide
- Get an API Key from https://newsapi.org/ & add it in the
local.properties
file,
newsApiKey=API_KEY
or grab an apk from the latest release.
Tech Stack
- Kotlin - First class and official programming language for Android development.
- Coroutines - For asynchronous and more..
- Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
- LiveData - Data objects that notify views when the underlying database changes.
- ViewModel - Stores UI-related data that isn't destroyed on UI changes.
- Paging - Library helps you load and display small chunks of data at a time. Loading partial data on demand reduces usage of network bandwidth and system resources.
- Navigator - A small navigation library to ease fragment transactions & handling backstack.
- Dependency Injection -
- Hilt-Dagger - Standard library to incorporate Dagger dependency injection into an Android application.
- Retrofit - A type-safe HTTP client for Android and Java.
- Gradle Kotlin DSL - For writing Gradle build scripts using Kotlin.
Contribute
If you want to contribute to this project, you're always welcome! Check the TODO list section.
TODO
- Add a Detail screen in
:detail
module. - Add a Splash screen (maybe) in
:splash
module. - Support for Dark theme.
- Fix the Type Accessors feature for
projects
. - Add Tests (Retrofit & Paging).
License
Copyright 2020 Kaustubh Patange
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
https://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.