Overview

Overview

Kaluga consists of several independent modules. Its main goal is to provide access to common multiplatform features used in mobile app development, such as location, permissions, bluetooth etc. Each module can be imported independently. See each modules documentation for all of its features.

Where appropriate it uses Coroutines, Channels and Flow. This enables developers to use cold streams from Kotlin code that is shared amongst multiple platforms such as Android and iOS.

Architecture

Most of the components within this project use Kotlin coroutines and Flow to deliver values from the supported platforms. Backing the Flow (by default) is a conflated channel. This pattern (though with a different, framework lever implementation) is currently under consideration for inclusion in the coroutinesx library from Jetbrains. If this happens, the API will likely change slightly.

Code conventions

The project uses regular Kotlin code conventions. This includes not creating com/splendo/kaluga directories, since they are common to all other folders.