MFlisar/Toolbox

A full KMP app framework plus UI and feature modules

โ˜… 2Forks 0KotlinGitHub โ†—Compare

Project website โ†—

README

Maven Central API Kotlin Kotlin Multiplatform

Toolbox

Platforms Android iOS Windows WebAssembly

Note

This library currently is for my personal usage only. I do use it in production, but have not yet documented it properly.

Table of Contents

๐Ÿ’ป Supported Platforms

Module android iOS windows wasm Notes
core โœ… โœ… โœ… โœ… the core module
app-shared โœ… โœ… โœ… โœ… the common base app module
app-jre โŒ โŒ โœ… โŒ the base app module (for plain jre, no jbr dependencies)
app-jbr โŒ โŒ โœ… โŒ the base app module (for jbr)
ui โœ… โœ… โœ… โœ… a ui module
ui-adaptive โœ… โœ… โœ… โœ… a adaptive ui module
zip โœ… โœ… โœ… โœ… a zip module
csv โœ… โŒ โœ… โŒ a csv module
backup โœ… โœ… โœ… โœ… a backup module
service โœ… โŒ โŒ โŒ a service module
form โœ… โœ… โœ… โœ… a form module
powershell โŒ โŒ โœ… โŒ a powershell module
table โœ… โœ… โœ… โœ… a table module
room โœ… โœ… โœ… โŒ provides room database classes
ads โœ… โœ… โœ… โœ… provides ads composables
proversion โœ… โœ… โŒ โŒ provides proversion checker functions (via openiap)
diff โœ… โœ… โœ… โœ… diff functions and UI
excel โŒ โŒ โœ… โŒ excel functions
coil โœ… โœ… โœ… โœ… a coil module

โžก๏ธ Versions

Dependency Version
Kotlin 2.4.20
Jetbrains Compose 1.12.0
Jetbrains Compose Material3 1.9.0

โš ๏ธ Following experimental annotations are used:

  • OptIn
    • androidx.compose.animation.ExperimentalSharedTransitionApi (2x)
    • androidx.compose.foundation.ExperimentalFoundationApi (1x)
    • androidx.compose.foundation.layout.ExperimentalLayoutApi (1x)
    • androidx.compose.material3.ExperimentalMaterial3Api (18x)
    • androidx.compose.ui.ExperimentalComposeUiApi (12x)
    • app.lexilabs.basic.ads.DependsOnGoogleMobileAds (3x)
    • app.lexilabs.basic.ads.DependsOnGoogleUserMessagingPlatform (6x)
    • cafe.adriel.voyager.core.annotation.ExperimentalVoyagerApi (4x)
    • ExperimentalWasmJsInterop (1x)
    • kotlin.time.ExperimentalTime (15x)
    • kotlin.uuid.ExperimentalUuidApi (2x)
    • kotlinx.cinterop.ExperimentalForeignApi (2x)
    • kotlinx.coroutines.FlowPreview (1x)
  • Experimental
    • androidx.compose.material3.ExperimentalMaterial3Api (1x)

I try to use as less experimental features as possible, but in this case the ones above are needed!

๐Ÿ”ง Setup

Using Version Catalogs

Define the dependencies inside your libs.versions.toml file.

[versions]

toolbox = "<LATEST-VERSION>"

[libraries]

toolbox-core = { module = "io.github.mflisar.toolbox:core", version.ref = "toolbox" }
toolbox-app-shared = { module = "io.github.mflisar.toolbox:app-shared", version.ref = "toolbox" }
toolbox-app-jre = { module = "io.github.mflisar.toolbox:app-jre", version.ref = "toolbox" }
toolbox-app-jbr = { module = "io.github.mflisar.toolbox:app-jbr", version.ref = "toolbox" }
toolbox-ui = { module = "io.github.mflisar.toolbox:ui", version.ref = "toolbox" }
toolbox-ui-adaptive = { module = "io.github.mflisar.toolbox:ui-adaptive", version.ref = "toolbox" }
toolbox-zip = { module = "io.github.mflisar.toolbox:zip", version.ref = "toolbox" }
toolbox-csv = { module = "io.github.mflisar.toolbox:csv", version.ref = "toolbox" }
toolbox-backup = { module = "io.github.mflisar.toolbox:backup", version.ref = "toolbox" }
toolbox-service = { module = "io.github.mflisar.toolbox:service", version.ref = "toolbox" }
toolbox-form = { module = "io.github.mflisar.toolbox:form", version.ref = "toolbox" }
toolbox-powershell = { module = "io.github.mflisar.toolbox:powershell", version.ref = "toolbox" }
toolbox-table = { module = "io.github.mflisar.toolbox:table", version.ref = "toolbox" }
toolbox-room = { module = "io.github.mflisar.toolbox:room", version.ref = "toolbox" }
toolbox-ads = { module = "io.github.mflisar.toolbox:ads", version.ref = "toolbox" }
toolbox-proversion = { module = "io.github.mflisar.toolbox:proversion", version.ref = "toolbox" }
toolbox-diff = { module = "io.github.mflisar.toolbox:diff", version.ref = "toolbox" }
toolbox-excel = { module = "io.github.mflisar.toolbox:excel", version.ref = "toolbox" }
toolbox-coil = { module = "io.github.mflisar.toolbox:coil", version.ref = "toolbox" }

And then use the definitions in your projects build.gradle.kts file like following:

implementation(libs.toolbox.core)
implementation(libs.toolbox.app.shared)
implementation(libs.toolbox.app.jre)
implementation(libs.toolbox.app.jbr)
implementation(libs.toolbox.ui)
implementation(libs.toolbox.ui.adaptive)
implementation(libs.toolbox.zip)
implementation(libs.toolbox.csv)
implementation(libs.toolbox.backup)
implementation(libs.toolbox.service)
implementation(libs.toolbox.form)
implementation(libs.toolbox.powershell)
implementation(libs.toolbox.table)
implementation(libs.toolbox.room)
implementation(libs.toolbox.ads)
implementation(libs.toolbox.proversion)
implementation(libs.toolbox.diff)
implementation(libs.toolbox.excel)
implementation(libs.toolbox.coil)
Direct Dependency Notation

Simply add the dependencies inside your build.gradle.kts file.

val toolbox = "<LATEST-VERSION>"

implementation("io.github.mflisar.toolbox:core:${toolbox}")
implementation("io.github.mflisar.toolbox:app-shared:${toolbox}")
implementation("io.github.mflisar.toolbox:app-jre:${toolbox}")
implementation("io.github.mflisar.toolbox:app-jbr:${toolbox}")
implementation("io.github.mflisar.toolbox:ui:${toolbox}")
implementation("io.github.mflisar.toolbox:ui-adaptive:${toolbox}")
implementation("io.github.mflisar.toolbox:zip:${toolbox}")
implementation("io.github.mflisar.toolbox:csv:${toolbox}")
implementation("io.github.mflisar.toolbox:backup:${toolbox}")
implementation("io.github.mflisar.toolbox:service:${toolbox}")
implementation("io.github.mflisar.toolbox:form:${toolbox}")
implementation("io.github.mflisar.toolbox:powershell:${toolbox}")
implementation("io.github.mflisar.toolbox:table:${toolbox}")
implementation("io.github.mflisar.toolbox:room:${toolbox}")
implementation("io.github.mflisar.toolbox:ads:${toolbox}")
implementation("io.github.mflisar.toolbox:proversion:${toolbox}")
implementation("io.github.mflisar.toolbox:diff:${toolbox}")
implementation("io.github.mflisar.toolbox:excel:${toolbox}")
implementation("io.github.mflisar.toolbox:coil:${toolbox}")

๐Ÿš€ Usage

Important

NOT DOCUMENTED

โœจ Demo

A full demo is included inside the demo module, it shows nearly every usage with working examples.

๐Ÿ“š API

Check out the API documentation.

๐Ÿ’ก Other Libraries

You can find more of my multiplatform libraries that work well together here.

๐Ÿ”€ Compatibility

When combining my libraries, you can find compatibility information here.

Contributors

MFlisarMFlisarWorkgithub-actions[bot]

Issues