From 88c8c28f45c0a39436ccd5f842f993b03a981f1f Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 5 Dec 2020 18:57:12 +0600 Subject: [PATCH] Update README.md --- README.md | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bf8d3f6da53..9ce8084f80a 100644 --- a/README.md +++ b/README.md @@ -1 +1,35 @@ -# MicroUtils \ No newline at end of file +# 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: + +* [`Kotlin Coroutines`](https://github.com/Kotlin/kotlinx.coroutines) +* [`Kotlin Serialization`](https://github.com/Kotlin/kotlinx.serialization) +* [`Kotlin Exposed`](https://github.com/JetBrains/Exposed) +* [`Ktor`](https://ktor.io) + +
+ Android environment + +You always can look at the [properties file](https://github.com/InsanusMokrassar/MicroUtils/blob/master/gradle.properties#L24-L34) to get information about current project dependencies, compile and build tools for `Android` target. + +
+ +## Structure + +Most of complex modules are built with next hierarchy: + +* `common` submodule for `API` things which are common for all platforms +* `exposed` submodule contains realizations for exposed tables +* `ktor` submodule is usually unavailable directly, because it contains its own submodules for clients and servers + * `common` part contains routes which are common for clients and servers + * `client` submodule contains clients which are usually using `UnifiedRequester` to make requests using routes from `ktor/common` module and some internal logic of requests + * `server` submodule (in most cases `JVM`-only) contains some extensions for `Route` instances which usually will give opportunity to proxy internet requests from `ktor/client` realization to some proxy object + +## Projects + +* `common` contains common tools for platform which usually are absent out-of-the-box when you starting project +* `coroutines` is a module for `Kotlin Coroutines` with different things like subscribing on flows (`onEach` + `launchIn` shortcut :) ) +* `ktor` is a set of modules for `client`s and `server`s +* `mime_types` is NOT lightweight set of `MimeType`s with a lot of different objected and serializable (with `Kotlin Serialization`) mime types +* `pagination` is a complex of modules (explanation in [Structure](#structure) section) for lightweight pagination +* `repos` is a complex of modules (explanation in [Structure](#structure) section) for `KeyValue`/`OneToMany`/`CRUD` repos created to be able to exclude some heavy dependencies when you need some simple and lightweight typical repositories