Skip to content

Repository files navigation

KStore

Buildcodecov

Kotlin BetaKotlinMaven Central

badge-androidbadge-iosbadge-macbadge-jvmbadge-linuxbadge-windowsbadge-nodejsbadge-jsBrowserbadge-wasmJsBrowser

A tiny Kotlin multiplatform library that assists in saving and restoring objects to and from disk using kotlinx.coroutines, kotlinx.serialization and kotlinx.io. Inspired by RxStore

Features

  • 🔒 Read-write locks; with a mutex FIFO lock
  • 💾 In-memory caching; read once from disk and reuse
  • 📬 Default values; no file? no problem!
  • 🚚 Migration support; moving shop? take your data with you
  • 🚉 Multiplatform!

Installation

KStore is published on Maven Central. Latest version Maven Central

repositories { mavenCentral()
// or for snapshot builds
maven("https://central.sonatype.com/repository/maven-snapshots/")
}
# for commonkstore = { module = "io.github.xxfast:kstore", version.ref = "kstore" }
# for android, iOS, desktop and nodeJskstore-file = { module = "io.github.xxfast:kstore-file", version.ref = "kstore" }
# for jsBrowser and wasmJsBrowserkstore-storage = { module = "io.github.xxfast:kstore-storage", version.ref = "kstore" }

Depending on your target platforms, you will need to add platform configurations here

At a glance

importkotlin.io.path.Pathimportkotlinx.serialization.Serializable// Take any serializable model 
@Serializable data classPet(valname:String, valage:Int) // Create a storeval store:KStore<Pet> = storeOf(file =Path("path/to/my_cats.json"))
// Get, set, update or delete values val mylo:Pet?= store.get()
store.set(mylo)
store.update { pet:Pet?->
pet?.copy(age = pet.age +1)
}
store.delete()
// Observe for updatesval pets:Flow<Pet?> = store.updates

Installation and Usage

Documentation here

API Reference here

Licence

Copyright 2023-2026 Isuru Rajapakse
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

A tiny Kotlin multiplatform library that assists in saving and restoring objects to and from disk using kotlinx.coroutines, kotlinx.serialisation and kotlinx.io

Topics

Resources

Stars

673 stars

Watchers

3 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages