Is it just me or are databases a bit of a ballache ?!?!

Kefei is a simple and easy alternative…

class MyClass: Persistable() {

    lateinit var myImportantList: MutableList<String>

    lateinit var myImportantStr: String
    /* Whatever else you want... */


  • Kotlin
  • Gradle
  • Dependencies
    • Kotlin test
    • Kotlin test junit
    • Logback
    • Moshi (for serialisation of objects and properties)
    • Kotlin reflect

How it works:

In essence, for any class that extends persist.Persistable that has properties annotated with @persist.Persist, kefei will register a jvm shutdown hook to save the value of the property to a local file under the path ./${options.dir}/${}/${}/${}

Then, when the application restarts, the same properties from the same class will load its initial value from the file with this path.


  • Supports all primitives and data types (AFAIK)
  • JSON serialisation using Moshi
  • Optional configuration file
  • Minimal, simple code and easy to integrate into projects
  • Occasionally dips into the JVM for reflection, but as much as possible is done at the kotlin layer
  • Logging of all major lifecycle events use kotlin-logging and logback

Dedicated to my princess ❤️


View Github