
Lightweight modular core offering utility APIs and opinionated abstractions for common app tasks, with CI automation and Maven Central distribution for easy integration.
A set of helper classes for modern Kotlin multiplatform projects.
[versions]
kaiteki = "x.y.z"
[libraries]
kaiteki-core = { module = "com.kroegerama.kmp.kaiteki:kaiteki-core", version.ref = "kaiteki" }
kaiteki-compose = { module = "com.kroegerama.kmp.kaiteki:kaiteki-compose", version.ref = "kaiteki" }
kaiteki-paging = { module = "com.kroegerama.kmp.kaiteki:kaiteki-paging", version.ref = "kaiteki" }
kaiteki-camera = { module = "com.kroegerama.kmp.kaiteki:kaiteki-camera", version.ref = "kaiteki" }
kaiteki-permissions = { module = "com.kroegerama.kmp.kaiteki:kaiteki-permissions", version.ref = "kaiteki" }dependencies {
implementation(libs.kaiteki.core)
implementation(libs.kaiteki.compose)
implementation(libs.kaiteki.paging)
implementation(libs.kaiteki.camera)
implementation(libs.kaiteki.permissions)
}| Module | Description |
|---|---|
| core | Coroutine/Flow utilities, DataStore helpers, serialization, lifecycle extensions |
| compose | Compose Multiplatform UI utilities, Material 3 helpers, navigation support |
| paging | Paging integration with Arrow and ViewModel support |
|
camera (experimental) |
Camera integration with barcode scanning and text recognition |
|
permissions (experimental) |
Multiplatform runtime permission handling for Compose |
LoadState<E, T> - sealed class with Idle, Loading, Success, Error states, stale data support, and Arrow Either integrationLoadStateFlow - reactive wrapper around LoadState with refresh, parameter flows, and ViewModel scope supportEventFlow - fire-and-forget event bus backed by SharedFlow
ConsumableEventFlow - single-consumption event flow for one-shot eventsSavedStateHandle.field() - property delegate for ViewModel saved stateobserveFlow, observeMultipleFlows
get, set, flow operators for DataStore<Preferences>
DecimalFormatter, LocalizedDateTimeFormatter, HumanReadableBytes
ConsumableState<T> - channel-backed one-shot event consumption in Compose (e.g. snackbar, navigation)TextFieldValidation - declarative text field validationDecimalInputTransformation - locale-aware decimal inputDashedBorder, PressAndHold modifiersTintedVectorPainter - recolor vector drawablesScrollbars - scrollbar indicators for lazy listsCustomTabsUriHandler - platform URI handler (Chrome Custom Tabs on Android)lazyPagingItemsOfData - preview helper for LazyPagingItems
pagingHeaders, pagingFooters - helpers for LazyList, LazyGrid, LazyStaggeredGrid to support loading / error states with headers / footersModifier.keepScreenOn - multiplatform version, supports Android (delegate to official implementation) and iOS (uses idleTimerDisabled)PagerHolder - wrapper around Pager with refresh, retry, cachedIn, and reactive parameter supportPagingSource implementations based on Arrow Either error handling and duplicate detection:
PageSizePagingSource - page/size paginationItemKeyedPagingSource - cursor/item-keyed paginationContinuationTokenPagingSource - token-based paginationSinglePagePagingSource - non-paginated single-page dataCameraView - Compose camera preview (Android: CameraX, iOS: AVFoundation)rememberCameraController() - zoom, torch, focus controlrememberBarcodeExtension() - real-time barcode scanning with configurable formatsrememberOcrExtension() - live text recognition (OCR)rememberPermissionState(permission) - Composable for requesting and observing runtime permissionsPermissionStatus - sealed interface (Granted / Denied with rationale info)openSystemPreferences() - deep-link to app settingsCopyright 2026 kroegerama
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
https://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.
A set of helper classes for modern Kotlin multiplatform projects.
[versions]
kaiteki = "x.y.z"
[libraries]
kaiteki-core = { module = "com.kroegerama.kmp.kaiteki:kaiteki-core", version.ref = "kaiteki" }
kaiteki-compose = { module = "com.kroegerama.kmp.kaiteki:kaiteki-compose", version.ref = "kaiteki" }
kaiteki-paging = { module = "com.kroegerama.kmp.kaiteki:kaiteki-paging", version.ref = "kaiteki" }
kaiteki-camera = { module = "com.kroegerama.kmp.kaiteki:kaiteki-camera", version.ref = "kaiteki" }
kaiteki-permissions = { module = "com.kroegerama.kmp.kaiteki:kaiteki-permissions", version.ref = "kaiteki" }dependencies {
implementation(libs.kaiteki.core)
implementation(libs.kaiteki.compose)
implementation(libs.kaiteki.paging)
implementation(libs.kaiteki.camera)
implementation(libs.kaiteki.permissions)
}| Module | Description |
|---|---|
| core | Coroutine/Flow utilities, DataStore helpers, serialization, lifecycle extensions |
| compose | Compose Multiplatform UI utilities, Material 3 helpers, navigation support |
| paging | Paging integration with Arrow and ViewModel support |
|
camera (experimental) |
Camera integration with barcode scanning and text recognition |
|
permissions (experimental) |
Multiplatform runtime permission handling for Compose |
LoadState<E, T> - sealed class with Idle, Loading, Success, Error states, stale data support, and Arrow Either integrationLoadStateFlow - reactive wrapper around LoadState with refresh, parameter flows, and ViewModel scope supportEventFlow - fire-and-forget event bus backed by SharedFlow
ConsumableEventFlow - single-consumption event flow for one-shot eventsSavedStateHandle.field() - property delegate for ViewModel saved stateobserveFlow, observeMultipleFlows
get, set, flow operators for DataStore<Preferences>
DecimalFormatter, LocalizedDateTimeFormatter, HumanReadableBytes
ConsumableState<T> - channel-backed one-shot event consumption in Compose (e.g. snackbar, navigation)TextFieldValidation - declarative text field validationDecimalInputTransformation - locale-aware decimal inputDashedBorder, PressAndHold modifiersTintedVectorPainter - recolor vector drawablesScrollbars - scrollbar indicators for lazy listsCustomTabsUriHandler - platform URI handler (Chrome Custom Tabs on Android)lazyPagingItemsOfData - preview helper for LazyPagingItems
pagingHeaders, pagingFooters - helpers for LazyList, LazyGrid, LazyStaggeredGrid to support loading / error states with headers / footersModifier.keepScreenOn - multiplatform version, supports Android (delegate to official implementation) and iOS (uses idleTimerDisabled)PagerHolder - wrapper around Pager with refresh, retry, cachedIn, and reactive parameter supportPagingSource implementations based on Arrow Either error handling and duplicate detection:
PageSizePagingSource - page/size paginationItemKeyedPagingSource - cursor/item-keyed paginationContinuationTokenPagingSource - token-based paginationSinglePagePagingSource - non-paginated single-page dataCameraView - Compose camera preview (Android: CameraX, iOS: AVFoundation)rememberCameraController() - zoom, torch, focus controlrememberBarcodeExtension() - real-time barcode scanning with configurable formatsrememberOcrExtension() - live text recognition (OCR)rememberPermissionState(permission) - Composable for requesting and observing runtime permissionsPermissionStatus - sealed interface (Granted / Denied with rationale info)openSystemPreferences() - deep-link to app settingsCopyright 2026 kroegerama
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
https://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.