J-cart/First_KMP

A Note App made with jetpack compose multiplatform

โ˜… 0Forks 0KotlinGitHub โ†—Compare
androidkotlinmultiplatform-compose

README

First KMP

๐Ÿ“ท๐Ÿ–ผ A kotlin multiplatform app for taking notes


Demo

kmm_mobile.mp4
kmm_desktop_first_draft.mp4

Tech stack & Open-source libraries

  • Kotlin based, Coroutines + Flow for asynchronous.
  • Jetpack compose multiplatform: Declarative framework for sharing UIs across multiple platforms. Based on Kotlin and Jetpack Compose.
  • kotlin multiplatform: The Kotlin Multiplatform technology is designed to simplify the development of cross-platform projects. It reduces time spent writing and maintaining the same code for different platforms while retaining the flexibility and benefits of native programming.
  • Precompose: Compose Multiplatform Navigation && ViewModel, inspired by Jetpack Navigation, ViewModel and Lifecycle, PreCompose provides similar (or even the same) components for you but in Kotlin, and it's Kotlin Multiplatform project.
  • Touchlab Kermit: Kermit by Touchlab is a Kotlin Multiplatform centralized logging utility.
  • Squareup
  • IceRock Moko
    • Lifecycle: Observe Android lifecycles and handle UI states upon the lifecycle changes.
    • ViewModel: Manages UI-related data holder and lifecycle aware. Allows data to survive configuration changes such as screen rotations.
    • MVVM: This is a Kotlin Multiplatform library that provides architecture components of Model-View-ViewModel for UI applications. Components are lifecycle-aware on Android.
    • Flow
  • Architecture
    • MVVM Architecture
    • Repository Pattern
  • Material-Components: Material design components for building ripple animation, and CardView.

Architecture

Each Kotlin Multiplatform project includes three modules:

-shared is a Kotlin module that contains the logic common for both Android and iOS applications โ€“ the code you share between platforms. It uses Gradle as the build system to help automate your build process.

-androidApp is a Kotlin module that builds into an Android application. It uses Gradle as the build system. The androidApp module depends on and uses the shared module as a regular Android library.

-iosApp is an Xcode project that builds into an iOS application. It depends on and uses the shared module as an iOS framework. The shared module can be used as a regular framework or as a CocoaPods dependency, based on what you've chosen in the previous step in iOS framework distribution.

In this case theres's one more which is the desktopMain which has everything related to the desktop application

Contributors

J-cart

Issues