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.