/News-KMP

News Application for IOS and Android Devices using KMM

Primary LanguageKotlin

News-KMP

🗡️ News-KMP is a Kotlin Multiplatform app for Android and IOS!

API

🛠 How to run?

  • 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.

Tech stack & Open-source libraries

  • Minimum SDK level

    • Android 24
    • iOS 15
  • Language

  • UI Framework

  • Architecture

  • 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


Modularization

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.

TODO

  • Details Screen of News post Article
  • Test cases for the common code

Find this repository useful? ❤️

Support it by joining stargazers for this repository. ⭐
Also, follow me on GitHub for my next creations! 🤩