🗡️ News-KMP is a Kotlin Multiplatform app for Android and IOS!
-
Clone the repository
-
Add API_KEY in build.gradle in :shared:core module
-
And that's it!! You can run the app now.
NOTE: You can register your app on newsapi dashboard & generate above api key.
-
Minimum SDK level
- Android 24
- iOS 15
-
Language
-
UI Framework
- Android - Jetpack Compose
- IOS - SwiftUI
-
Architecture
- MVVM Architecture (Model - View - ViewModel)
- Repository Pattern
-
Coroutines + Flow for asynchronous.
-
Ktor: HTTP Client Framework for REST Apis.
-
Kotlinx.serialization: A modern JSON serialization library for Kotlin.
-
Kamel: Loading and caching images images from network (Android and IOS).
-
Kermit: Multiplatform centralized logging utility.
-
Moko: Multiplatform library for managing resources and MVVM
-
BuildKonfig: BuildConfig for Kotlin Multiplatform Project + Product Flavour in Shared Module
-
Koin : A pragmatic lightweight dependency injection framework for Kotlin & Kotlin Multiplatform
-
Jetbrains Compose Multiplatform A declarative framework for sharing UIs across multiple platforms with Kotlin
-
SQLDelight Multiplatform library for storing data locally in SQL lite Database
Spotift-KMP adopted modularization strategies below:
- Reusability: Modulizing reusable codes properly enable opportunities for code sharing and limits code accessibility in other modules at the same time.
- Parallel Building: Each module can be run in parallel and it reduces the build time.
- Strict visibility control: Modules restrict to expose dedicated components and access to other layers, so it prevents they're being used outside the module
- Decentralized focusing: Each developer team can assign their dedicated module and they can focus on their own modules.
NOTE: The same modularization strategies are used for shared module as well
For more information, check out the Guide to app modularization.
- Details Screen of News post Article
- Test cases for the common code
Support it by joining stargazers for this repository. ⭐
Also, follow me on GitHub for my next creations! 🤩