MicroUtils
This is a library with collection of tools for working in Kotlin environment. First of all, this library collection is oriented to use next technologies:
Android environment
You always can look at the properties file to get information about current project dependencies, compile and build tools for Android target.
Projects
- commoncontains common tools for platform which usually are absent out-of-the-box when you starting project
- selectorcontains tools to use- Selectorinterface with things like- RecyclerViewin android or other selection needs
- coroutinesis a module for- Kotlin Coroutineswith different things like subscribing on flows (- onEach+- launchInshortcut :) )
- ktoris a set of modules for- clients and- servers
- mime_typesis NOT lightweight set of- MimeTypes with a lot of different objected and serializable (with- Kotlin Serialization) mime types
- paginationis a complex of modules (explanation in Complex modules structure section) for lightweight pagination
- serializationis a collection of projects with serializers for- kotlinx.serialization
- reposis a complex of modules (explanation in Complex modules structure section) for- KeyValue/- OneToMany/- CRUDrepos created to be able to exclude some heavy dependencies when you need some simple and lightweight typical repositories
Complex modules structure
Most of complex modules are built with next hierarchy:
- commonsubmodule for- APIthings which are common for all platforms
- exposedsubmodule contains realizations for exposed tables
- ktorsubmodule is usually unavailable directly, because it contains its own submodules for clients and servers- commonpart contains routes which are common for clients and servers
- clientsubmodule contains clients which are usually using- UnifiedRequesterto make requests using routes from- ktor/commonmodule and some internal logic of requests
- serversubmodule (in most cases- JVM-only) contains some extensions for- Routeinstances which usually will give opportunity to proxy internet requests from- ktor/clientrealization to some proxy object
 
Gradle Templates
All templates can be used by applying them in your project's build.gradle files using the apply from directive. For example:
apply from: "$defaultProject"
In the sample has been used defaultProject.gradle as a basic template.
The project includes a collection of Gradle templates to simplify project setup and configuration. These templates are located in the gradle/templates directory and can be used to quickly set up different types of projects:
Project Setup Templates
- defaultProject.gradle(usage- apply from: "$defaultProject") - Basic project configuration
- defaultProjectWithSerialization.gradle(usage- apply from: "$defaultProjectWithSerialization") - Project configuration with Kotlin Serialization support
- mppJavaProject.gradle(usage- apply from: "$mppJavaProject") - Multiplatform project with Java support
- mppAndroidProject.gradle(usage- apply from: "$mppAndroidProject") - Multiplatform project with Android support
Multiplatform Configuration Templates
- enableMPPAndroid.gradle(usage- apply from: "$enableMPPAndroid") - Enable Android target in multiplatform project
- enableMPPJs.gradle(usage- apply from: "$enableMPPJs") - Enable JavaScript target in multiplatform project
- enableMPPJvm.gradle(usage- apply from: "$enableMPPJvm") - Enable JVM target in multiplatform project
- enableMPPNativeArm64.gradle(usage- apply from: "$enableMPPNativeArm64") - Enable ARM64 native target
- enableMPPNativeX64.gradle(usage- apply from: "$enableMPPNativeX64") - Enable x64 native target
- enableMPPWasmJs.gradle(usage- apply from: "$enableMPPWasmJs") - Enable WebAssembly JavaScript target
Compose Integration Templates
- addCompose.gradle(usage- apply from: "$addCompose") - Basic Compose configuration
- addComposeForAndroid.gradle(usage- apply from: "$addComposeForAndroid") - Compose configuration for Android
- addComposeForDesktop.gradle(usage- apply from: "$addComposeForDesktop") - Compose configuration for Desktop
- addComposeForJs.gradle(usage- apply from: "$addComposeForJs") - Compose configuration for JavaScript
Publishing Templates
- publish.gradle(usage- apply from: "$publish") - General publishing configuration
- publish_jvm.gradle(usage- apply from: "$publish_jvm") - JVM-specific publishing configuration
- publish.kpsband- publish_jvm.kpsb(usage- apply from: "$publish_kpsb"and- apply from: "$publish_jvm_kpsb") - Publishing configuration for Kotlin Multiplatform and JVM
Combined Project Templates
- mppJvmJsWasmJsLinuxMingwProject.gradle(usage- apply from: "$mppJvmJsWasmJsLinuxMingwProject") - Multiplatform project for JVM, JS, Wasm, Linux, and MinGW
- mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project.gradle(usage- apply from: "$mppJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project") - Multiplatform project with additional Android and ARM64 support
- mppComposeJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project.gradle(usage- apply from: "$mppComposeJvmJsWasmJsAndroidLinuxMingwLinuxArm64Project") - Multiplatform project with Compose support
- mppProjectWithSerializationAndCompose.gradle(usage- apply from: "$mppProjectWithSerializationAndCompose") - Multiplatform project with both Serialization and Compose support