Best Fuel code snippet using com.github.kittinunf.fuel.util.Delegates
Libraries.awesome.kts
Source:Libraries.awesome.kts  
1category("Libraries/Frameworks") {2  subcategory("Web") {3    link {4      github = "ktorio/ktor"5      href = "https://ktor.io/"6      desc = "Web backend framework for Kotlin. Easy to use, fun and asynchronous."7      setPlatforms(JVM, ANDROID, NATIVE, IOS)8      setTags("web")9      awesome()10    }11    link {12      github = "darkredz/zeko-restapi-framework"13      setTags("web", "http", "rest", "vert.x", "swagger", "openapi", "microframework", "rest-api", "reactive", "mvc")14    }15    link {16      github = "TinyMission/kara"17      desc = "Web framework written in Kotlin."18      setTags("web")19    }20    link {21      github = "http4k/http4k"22      desc = "Toolkit for serving and consuming HTTP services in a functional and consistent way."23      href = "https://www.http4k.org"24      setTags("web", "http", "http client", "jetty", "netty", "undertow")25      awesome()26    }27    link {28      github = "jean79/yested"29      desc = "A Kotlin framework for building web applications in Javascript."30      setTags("web")31    }32    link {33      github = "hhariri/wasabi"34      desc = "An HTTP Framework built with Kotlin for the JVM."35      setTags("web")36    }37    link {38      github = "Kotlin/kotlinx.html"39      desc = "Kotlin DSL for HTML."40      setTags("web", "html")41      awesome()42    }43    link {44      github = "celtric/kotlin-html"45      desc = "A library to generate HTML in Kotlin."46      setPlatforms(JVM)47      setTags("html-generator", "template-engine")48    }49    link {50      github = "MarioAriasC/KotlinPrimavera"51      desc = "Spring support libraries for Kotlin."52      setTags("spring")53    }54    link {55      github = "kohesive/kovert"56      desc = "An invisible, super easy and powerful REST and Web framework over Vert.x or Undertow."57      setTags("web", "http", "rest", "vert.x", "undertow")58    }59    link {60      github = "aPureBase/KGraphQL"61      desc = "A GraphQL implementation written in Kotlin"62      setTags("graphql", "web")63    }64    link {65      github = "taskworld/kraph"66      desc = "GraphQL request string builder written in Kotlin"67      setTags("graphql", "builder")68    }69    link {70      github = "sepatel/tekniq"71      desc = "Full-feature HTTP DSL Framework, HTTP Client, JDBC DSL, Loading Cache and Configuration"72      setTags("web", "jdbc", "http client", "spark java", "cache")73    }74    link {75      github = "vert-x3/vertx-lang-kotlin"76      desc = "This module provides Kotlin language bindings including DSL and extension functions for vert.x 3"77      setTags("web", "vert.x")78    }79    link {80      github = "jooby-project/jooby"81      desc = "Modular micro web framework for Java and Kotlin"82      setTags("web", "jooby", "microframework", "http", "rest")83    }84    link {85      github = "gimlet2/kottpd"86      desc = "REST framework in pure Kotlin, inspired by spark-java"87      setTags("web", "rest", "http")88    }89    link {90      github = "kwebio/kweb-core"91      desc = "Build rich live-updating web apps in pure server-side Kotlin."92      setTags("web", "rest", "http", "fullstack")93    }94    link {95      github = "brianmadden/krawler"96      desc = "A web crawling framework written in Kotlin"97      setTags("crawler4j", "web-crawler", "webcrawler", "link-checker")98    }99    link {100      github = "mvysny/vaadin-on-kotlin"101      desc = "A simple way to write full-stack database-backed component-oriented web apps"102      setTags("web", "fullstack", "vaadin")103    }104    link {105      github = "perwendel/spark-kotlin"106      desc = "A DSL in idiomatic Kotlin for the Spark web framework."107      setTags("web", "rest", "http")108    }109    link {110      github = "hexagonkt/hexagon"111      desc = "A Microservices framework that takes care of HTTP, serialization and storage."112      setTags("web", "rest", "http")113    }114    link {115      github = "danneu/kog"116      desc = "A web framework focused on simplicity, middleware, and functional composition"117      setTags("web", "http", "rest", "jetty", "websockets")118    }119    link {120      github = "tipsy/javalin"121      desc = "A Simple REST API Library for Java/Kotlin."122      setTags("kotlin", "rest-api", "web-framework", "microservice", "servlet", "jetty")123    }124    link {125      github = "laviua/komock"126      desc = "HTTP/Consul/SMTP/Spring Config mocker framework written in Kotlin"127      setTags("kotlin", "http", "consul", "microservice", "mock", "jetty", "netty", "smtp", "ssl")128    }129    link {130      github = "hypercube1024/firefly"131      desc = "An asynchronous web framework for rapid development of high-performance web application."132      setTags("kotlin", "web", "http", "tcp", "ssl", "reactive")133    }134    link {135      github = "phenax/h"136      desc = "HTML templating library written in Kotlin"137      setTags("kotlin", "http", "web", "html", "template")138    }139    link {140      github = "bootique/bootique-kotlin"141      desc = "Provides extension function and features for smooth development with Bootique and Kotlin."142      setTags("kotlin", "web-framework", "undertow", "jetty")143      setPlatforms(JVM)144    }145    link {146      github = "SeunAdelekan/Kanary"147      desc = "A micro webframework for Kotlin"148      setTags("web")149    }150    link {151      github = "ExpediaDotCom/graphql-kotlin"152      desc = "Code-only GraphQL schema generation for Kotlin"153      setTags("graphql", "web")154    }155    link {156      github = "moia-dev/lambda-kotlin-request-router"157      desc = "A REST request routing layer for AWS lambda handlers written in Kotlin"158    }159    link {160      github = "spypunk/sponge"161      desc = "A website crawler and links downloader command line tool written in Kotlin"162    }163    link {164      github = "alpas/alpas"165      desc = "Kotlin web framework inspired by Laravel/Rails. Easy, elegant and productive."166    }167    link {168      github = "jetbrains/kotless"169      desc = "Kotlin serverless framework reducing the routine of serverless deployment."170      setTags("web", "microservice", "serverless")171      awesome()172    }173    link {174      github = "jwstegemann/fritz2"175      desc = "small lib to build reactive web-apps in pure Kotlin based on Flows"176      setTags("web", "ui", "reactive", "coroutines", "html", "routing")177    }178    link {179      github = "AurityLab/graphql-kotlin-toolkit"180      desc = "GraphQL toolkit for Kotlin (includes code generator and spring boot integration)"181      setTags("web", "graphql", "codegenerator", "spring")182    }183    link {184      github = "apollographql/apollo-android"185      desc = "Typesafe GraphQL client for the JVM and Kotlin native"186      setTags("web", "graphql")187    }188    link {189      github = "welvet/summer"190      desc = "Lightweight Jetty/JDBC wrapper library inspired by SparkJava and MyBatis with DI and Testing support for Kotlin"191      setTags("jdbc", "web", "di")192      setPlatforms(JVM)193    }194    link {195      github = "ButterCam/sisyphus"196      desc = "Modern gRPC service framework based on Kotlin/Spring Boot with Message DSL/HTTP transcoding/Google AIP support."197      setTags("web", "microservice", "grpc", "spring", "protobuf", "rest")198      setPlatforms(JVM)199    }200    link {201      github = "varabyte/kobweb"202      href = "https://kobweb.varabyte.com"203      desc = "A modern framework for full stack web apps in Kotlin"204      setPlatforms(JS)205      setTags("web", "framework", "fullstack")206    }207  }208  subcategory("Testing") {209    link {210      github = "JetBrains/spek"211      desc = "A specification framework for Kotlin."212      setTags("test", "assert", "bdd")213      awesome()214    }215    link {216      github = "npryce/hamkrest"217      desc = "A reimplementation of Hamcrest to take advantage of Kotlin language features."218      setTags("test", "assert")219    }220    link {221      github = "nhaarman/mockito-kotlin"222      desc = "Using Mockito with Kotlin."223      setTags("test", "mock")224      awesome()225    }226    link {227      github = "robstoll/atrium"228      desc = "Multiplatform assertion library for Kotlin supporting i18n."229      setTags("test", "assertion-library", "assert")230    }231    link {232      github = "MarkusAmshove/Kluent"233      desc = "Fluent Assertion-Library for Kotlin."234      setTags("test", "assert")235    }236    link {237      github = "winterbe/expekt"238      desc = "BDD assertion library for Kotlin."239      setTags("test", "assert", "bdd")240    }241    link {242      github = "kotest/kotest"243      desc = "Formerly known as KotlinTest, Kotest is a flexible and comprehensive testing tool that is multiplatform enabled."244      setTags("test", "bdd", "matchers")245    }246    link {247      github = "dmcg/konsent"248      desc = "An acceptance test library for Kotlin."249      setTags("test", "bdd", "gherkin")250    }251    link {252      github = "EPadronU/balin"253      desc = "Balin is a browser automation library for Kotlin. It's basically a Selenium-WebDriver wrapper library inspired by Geb."254      setTags("test", "selenium", "UI", "automation")255    }256    link {257      github = "dmcg/k-sera"258      desc = "A JMock wrapper for Kotlin."259      setTags("mock", "test")260    }261    link {262      github = "dam5s/aspen"263      desc = "Aspen is an RSpec and Spek inspired test runner for Kotlin."264      setTags("test", "specification", "rspec", "spek")265    }266    link {267      github = "qwertukg/SeleniumBuilder"268      desc = "DSL for Selenium 2.0. Provide a possibility to write tests in Kotlin builder style."269      setTags("selenium", "test")270    }271    link {272      github = "mockk/mockk"273      desc = "Pure Kotlin mocking library."274      setTags("test", "mock")275      awesome()276    }277    link {278      github = "mvysny/DynaTest"279      desc = "Write your tests in DSL way. Runs on JUnit5 Platform."280      setTags("test", "assert", "dsl")281    }282    link {283      github = "tyro/arbitrater"284      desc = "Arbitrater is a library for creating arbitrary (randomized) instances of classes by reflection for use in testing."285      setTags("test", "random", "random-generation")286    }287    link {288      github = "xgouchet/Elmyr"289      desc = "A utility to make Kotlin/Java tests random yet reproducible"290      setTags("test", "random", "random-generation")291    }292    link {293      github = "neworld/kupiter"294      desc = "Kotlin DSL for Junit5"295      setTags("test", "junit5", "dsl")296    }297    link {298      github = "karumi/KotlinSnapshot"299      desc = "Verify your data with snapshot testing."300      setTags("snapshot", "test", "assert")301    }302    link {303      github = "permissions-dispatcher/kompile-testing"304      desc = "Testing tools for kotlinc and kapt."305      setTags("kapt", "test")306    }307    link {308      github = "robfletcher/strikt"309      desc = "An assertion library for Kotlin"310      setTags("test", "strikt", "assert")311    }312    link {313      github = "dmcg/minutest"314      desc = "Simple, Expressive, Extensible Testing for Kotlin on the JVM"315      setTags("test", "minutest", "dsl")316    }317    link {318      github = "codecentric/hikaku"319      desc = "A library that tests if the implementation of a REST-API meets its specification."320      setTags("test", "assert", "api", "rest")321    }322    link {323      github = "serpro69/kotlin-faker"324      desc = "Port of ruby faker gem written in kotlin"325      setTags("test", "testing", "data-generator", "faker")326    }327    link {328      github = "skrapeit/skrape.it"329      desc = "A DSL-driven HTML/XML parser-library that enables meaningful testing of rendered HTML templates."330      setPlatforms(JVM)331      setTags("test", "html", "template", "dom", "dsl", "parser", "webcrawler", "scraper", "ktor", "spring-boot")332    }333    link {334      github = "krzema12/vis-assert"335      desc = "Test the shape of your functions!"336      setTags("test", "testing", "dsl", "ascii-art")337    }338    link {339      github = "EranBoudjnah/TestIt"340      desc = "Generate unit testing boilerplate from kotlin files."341      setTags("test", "testing", "generator", "generation", "mock")342    }343    link {344      github = "EranBoudjnah/RandomGenKt"345      desc = "Initialize instances of any class with generated data."346      setTags("test", "testing", "random", "random-generation")347    }348    link {349      github = "KennethWussmann/mock-fuel"350      desc = "JUnit 5 extension to easily mock external HTTP requests made with the HTTP client Fuel."351      setTags("test", "testing", "mock", "fuel", "junit")352    }353    link {354      github = "jcornaz/kwik"355      desc = "A property-based testing library for Kotlin. Execute tests with randomized inputs with a test-engine agnostic and compile-time safe library."356      setTags("test", "testing", "assert", "random", "random-generation")357    }358    link {359      github = "from-source/kiwi"360      desc = "Fluent assertions library with support of json path."361      setTags("test", "testing", "assert", "dsl", "multiplatform", "jsonpath")362    }363    link {364      github = "tschuchortdev/kotlin-compile-testing"365      desc = "A library for testing Kotlin and Java annotation processors, compiler plugins and code generation"366      setPlatforms(JVM)367    }368    link {369      github = "willowtreeapps/assertk"370      desc = "assertions for kotlin inspired by assertj"371      setPlatforms(COMMON, JVM, JS, NATIVE)372    }373    link {374      github = "willowtreeapps/opentest4k"375      desc = "kotlin multiplatform implementation/bindings of opentest4j"376      setPlatforms(COMMON, JVM, JS, NATIVE)377    }378    link {379      github = "sokomishalov/skraper"380      desc = "Kotlin/Java library, cli tool and telegram-bot for scraping posts and media from various sources with neither authorization nor full page rendering (Facebook, Instagram, Twitter, Youtube, Tiktok, Telegram, Twitch, Reddit, Pinterest, Flickr, Tumblr, etc.)"381      setPlatforms(JVM)382      setTags("scraper", "parser", "webcrawler", "telegram", "bot")383    }384    link {385      github = "iotacb/ChefkochAPI"386      desc = "Kotlin/Java library, to parse and get information of recipes from chefkoch"387      setPlatforms(JVM)388      setTags("scraper", "parser", "webcrawler", "chefkoch", "api")389    }390  }391  subcategory("Mocks and Fakes") {392    link {393      github = "moove-it/fakeit"394      desc = "Generates realistic fake data â like names, emails, dates, countries â to be used in your Android development environment."395      setTags("testing", "android", "utility")396    }397    link {398      github = "bluegroundltd/kfactory"399      desc = "Fixture factory in Kotlin"400    }401  }402  subcategory("Dependency Injection") {403    link {404      github = "Kodein-Framework/Kodein-DI"405      desc = "Painless Kotlin Dependency Injection."406      setTags("di", "dependency injection")407      awesome()408    }409    link {410      github = "kailan/kodeinject"411      desc = "Constructor dependency injection for Kodein."412      setTags("di", "dependency injection", "kodein")413    }414    link {415      github = "traversals/kapsule"416      desc = "Minimalist dependency injection library for Kotlin."417      setTags("di", "dependency injection")418    }419    link {420      github = "JLLeitschuh/kotlin-guiced"421      desc = "Convenience Kotlin API over the Google Guice DI Library."422      setTags("Dependency Injection", "Guice")423    }424    link {425      github = "authzee/kotlin-guice"426      desc = "Guice DSL extensions for Kotlin"427      setTags("guice", "dependency injection", "di")428    }429    link {430      github = "Ekito/koin"431      desc = "A functional Kotlin dependency injection framework for Android and JVM."432      setTags("android", "dependency-injection", "injection", "functional")433      awesome()434    }435    link {436      github = "Rasalexman/KODI"437      desc = "light-weight KOtlin Dependency Injection Framework with or without reflection module without kapt"438    }439    link {440      github = "evant/kotlin-inject"441      setPlatforms(JVM)442    }443    link {444      github = "corbella83/PopKorn"445      desc = "Forget about modules and components. DI can be simple"446      setTags("di", "dependency injection", "android", "multiplatform")447      setPlatforms(ANDROID, COMMON, IOS, JS, JVM, NATIVE)448    }449    link {450      github = "sergeshustoff/dikt"451      desc = "Simple and powerful DI for kotlin multiplatform"452      setTags("di", "dependency injection", "android", "multiplatform")453      setPlatforms(ANDROID, COMMON, IOS, JS, JVM, NATIVE)454    }455  }456  subcategory("Coroutines") {457    link {458      github = "Kotlin/kotlin-coroutines"459      desc = "Design documents and examples for coroutines in Kotlin."460      setTags("coroutines")461    }462    link {463      github = "Kotlin/kotlinx.coroutines"464      desc = "Libraries built upon Kotlin coroutines."465      setTags("async", "await", "yield", "generator")466      awesome()467    }468    link {469      github = "soywiz/korio"470      desc = "Korio: Kotlin cORoutines I/O: Streams + Async TCP Client/Server + Virtual File System for JVM, Node.JS and Browser."471      setTags("vfs", "coroutiones", "io")472    }473    link {474      github = "soywiz/korim"475      desc = "Korim: Kotlin cORoutines IMaging utilities depending on Korio."476      setTags("image", "coroutiones")477    }478    link {479      github = "soywiz/korui"480      desc = "Korui: Kotlin cORoutines User Interfaces: korio + kimage + korui"481      setTags("ui", "coroutiones")482    }483    link {484      github = "konrad-kaminski/spring-kotlin-coroutine"485      desc = "Kotlin coroutine support for Spring."486      setTags("coroutines", "spring")487    }488    link {489      github = "marcoferrer/kroto-plus"490      desc = "Protoc plugin for bringing together Kotlin, Protobuf, Coroutines, and gRPC."491      setTags("coroutines", "grpc", "protobuf")492    }493    link {494      github = "cloudoptlab/cloudopt-next"495      desc = "A next-generation Java web lightweight framework based on vertx and kotlin. "496      setTags("web", "vertx", "spring", "restful", "springboot", "springboot", "cloudopt", "next")497    }498    link {499      github = "Rasalexman/coroutinesmanager"500      desc = "try-catch safety coroutines manager"501    }502    link {503      github = "rozkminiacz/FlowRiddles"504      desc = "Repository for learning Kotlin Flow API"505      setTags("kotlin", "kotlin-flow", "learning", "riddles")506    }507    link {508      github = "KingFalse/harrier"509      desc = "Simpler use of multithreading in Kotlin."510      setTags("Thread", "Coroutines", "Multithreading", "JVM")511      setPlatforms(JVM)512    }513  }514  subcategory("Functional Programming") {515    link {516      github = "arrow-kt/arrow"517      desc = "Functional companion to Kotlin's Standard Library."518      setTags("fp", "functional")519    }520    link {521      github = "arrow-kt/arrow-meta"522      desc = "Functional companion to Kotlin's Compiler."523      setTags("fp", "functional")524    }525    link {526      github = "ReactiveX/RxKotlin"527      desc = "RxJava bindings for Kotlin."528      setTags("fp", "functional")529    }530    link {531      github = "kittinunf/Result"532      desc = "The modelling for success/failure of operations in Kotlin."533      setTags("fp", "functional", "monad")534    }535    link {536      github = "brianegan/bansa"537      desc = "A state container for Kotlin & Java, inspired by Elm & Redux."538      setTags("fp", "functional", "UI", "Interface", "Redux")539    }540    link {541      github = "pardom/redux-kotlin"542      desc = "Direct port of Redux for Kotlin."543      setTags("fp", "functional", "UI", "Interface", "Redux")544    }545    link {546      github = "beyondeye/Reduks"547      desc = "A \"batteries included\" port of Reduxjs for Kotlin+Android"548      setTags("fp", "functional", "UI", "Interface", "Redux")549    }550    link {551      github = "michaelbull/kotlin-result"552      desc = "A Result monad for modelling success or failure operations - inspired by Elm, Rust, & Haskell."553      setTags("fp", "functional", "result", "monad", "either", "type")554    }555    link {556      github = "fork-handles/forkhandles"557      name = "fork-handles/result4k"558      desc = "Result monad for type safe error handling in Kotlin"559      href = "https://github.com/fork-handles/forkhandles/blob/trunk/result4k"560      setTags("fp", "functional", "result", "monad", "either", "type", "error handling")561    }562    link {563      github = "pakoito/Komprehensions"564      desc = "Do comprehensions for Kotlin and 3rd party libraries."565      setTags("comprehensions", "fp", "functional")566    }567    link {568      github = "h0tk3y/kotlin-monads"569      desc = "Monads for Kotlin"570      setTags("fp", "functional", "monads")571    }572    link {573      github = "poetix/klenses"574      desc = "Lenses for Kotlin."575      setTags("fp", "functional", "lenses")576    }577    link {578      github = "reactor/reactor-core"579      desc = "Non-Blocking Reactive Streams Foundation for the JVM. Natively supports Kotlin, since 3.1.0.M3."580      setTags("reactive", "stream", "functional")581    }582    link {583      github = "UrbanCompass/Snail-Kotlin"584      desc = "An observables framework for Kotlin."585      setTags("observables", "fp", "functional")586    }587    link {588      github = "RubyLichtenstein/RxTest"589      desc = "Kotlin DSL for testing RxJava2"590      setTags("rxjava2", "kotlin",  "kotlin-android",  "testing", "kotlin-dsl")591      setPlatforms(JVM)592    }593  }594  subcategory("Serialization") {595    link {596      github = "Kotlin/kotlinx.serialization"597      desc = "Kotlin multiplatform / multi-format reflectionless serialization"598      awesome()599    }600    link {601      github = "cbeust/klaxon"602      desc = "Lightweight library to parse JSON in Kotlin."603      setTags("json")604    }605    link {606      github = "SalomonBrys/Kotson"607      desc = "Gson for Kotlin, Kotson enables you to parse and write JSON with Google's Gson using a conciser and easier syntax."608      setTags("json")609    }610    link {611      github = "FasterXML/jackson-module-kotlin"612      desc = "Jackson module that adds support for serialization/deserialization of Kotlin classes and data classes."613      setTags("json", "jakson")614      setPlatforms(JVM)615      awesome()616    }617    link {618      github = "Shengaero/kotlin-json"619      desc = "A lightweight, stylistic, optimized, and multiplatform JSON library for Kotlin-JVM and Kotlin-JS"620      setTags("json", "multiplatform")621    }622    link {623      github = "fboldog/ext4klaxon"624      desc = "Type Extensions (Long, Int, Enum, Date) for Klaxon."625      setTags("json")626    }627    link {628      github = "marifeta/kvalidator"629      desc = "Kotlin validator (compatible with laravel validation rules) for json kotlinx.serialization!"630      setTags("json", "validation", "laravel", "laravel-validation")631    }632    link {633      github = "Jire/KTON"634      desc = "Object notation in pure Kotlin!"635      setTags("JSON", "XML")636    }637    link {638      github = "fluidsonic/fluid-json"639      desc = "A JSON library written in pure Kotlin."640      setTags("json")641    }642    link {643      github = "s4kibs4mi/kotlin-jsonq"644      desc = "A simple Kotlin library to Query over Json Data."645      setTags("json", "json-query", "json-manager", "kotlin-library", "kotlin-android")646    }647    link {648      github = "aafanasev/kson"649      desc = "Auto-generate GSON type adapters for Kotlin data classes"650      setTags("json", "gson", "type adapter", "annotation processing", "kapt")651    }652    link {653      github = "holgerbrandl/jsonbuilder"654      desc = "A tiny DSL to create json using idiomatic Kotlin"655      setPlatforms(JVM)656      setTags("json")657    }658    link {659      github = "qwertukg/xml-builder"660      desc = "Simplest XML builder for Kotlin"661      setTags("xml", "builder", "dsl")662      setPlatforms(JVM)663    }664    link {665      github = "lectra-tech/koson"666      desc = "A concise and lightweight Kotlin DSL to build JSON objects and render their String representations"667      setTags("json", "dsl", "builder")668      setPlatforms(JVM)669    }670    link {671      name = "knbt"672      github = "BenWoodworth/knbt"673      desc = "Minecraft NBT support for kotlinx.serialization"674      setTags("nbt", "snbt", "minecraft", "kotlinx.serialization")675      setPlatforms(COMMON, ANDROID, IOS, JS, JVM, NATIVE)676    }677  }678  subcategory("Validation") {679    link {680      github = "deva666/KValidation"681      desc = "Validation library"682      setPlatforms(JVM)683      setTags("validation", "validator")684    }685  }686  subcategory("Database") {687    link {688      github = "JetBrains/Exposed"689      desc = "Exposed is a prototype for a lightweight SQL library written over JDBC driver for Kotlin language."690      setTags("database", "query", "schema", "dao")691      awesome()692    }693    link {694      github = "JetBrains/xodus"695      desc = "Transactional schema-less embedded database used by JetBrains YouTrack and JetBrains Hub."696      setTags("embedded-database", "java", "kotlin", "key-value", "entity-store", "transactional", "log-structured", "schema-less", "snapshot-isolation", "nosql", "xodus", "db", "database", "youtrack")697      setPlatforms(JVM)698      awesome()699    }700    link {701      github = "ebean-orm/ebean"702      desc = "Ebean is a Java & Kotlin ORM including type safe kotlin queries"703      setTags("database", "sql", "orm", "query", "type-safe builder", "jpa")704    }705    link {706      github = "cheptsov/kotlin-nosql"707      desc = "NoSQL database query and access library for Kotlin."708      setTags("database", "mongodb", "query")709    }710    link {711      github = "jankotek/mapdb"712      desc = "MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine."713      setPlatforms(JVM)714    }715    link {716      github = "darkredz/Zeko-SQL-Builder"717      setTags("database", "sql", "query", "vert.x", "hikari-cp")718    }719    link {720      github = "seratch/kotliquery"721      desc = "A handy database access library in Kotlin."722      setTags("database", "sql", "query")723    }724    link {725      github = "andrewoma/kwery"726      desc = "Kwery is an SQL library for Kotlin."727      setTags("database", "sql", "query")728    }729    link {730      github = "square/sqldelight"731      desc = "Generates Java models from CREATE TABLE statements."732      setTags("database", "sql", "type-safe builder")733      awesome()734    }735    link {736      github = "bloomberg/selekt"737      href = "https://bloomberg.github.io/selekt"738      desc = "Android SQL database library wrapping the community edition of SQLCipher, an SQLite extension that provides 256-bit AES encryption. Selekt realises the maximum concurrency offered by SQLite3."739      setTags("android", "database", "sql", "sqlcipher", "sqlite")740    }741    link {742      github = "x2bool/kuery"743      desc = "Typesafe SQL with Kotlin."744      setTags("database", "sql", "type-safe builder")745    }746    link {747      github = "Litote/kmongo"748      desc = "KMongo - Kotlin toolkit for Mongo"749      setTags("database", "mongodb", "query")750    }751    link {752      github = "requery/requery"753      desc = "Modern SQL based query & persistence for Java/Kotlin/Android."754      setTags("database", "query", "type-safe builder")755    }756    link {757      github = "consoleau/kotlin-jpa-specification-dsl"758      desc = "This library provides a fluent DSL for querying spring data JPA repositories using spring data Specifications."759      setTags("database", "query", "jpa")760    }761    link {762      github = "Ganet/rxaerospike"763      desc = "RxJava2 wrapper for aerospike-client-java."764      setTags("database", "arospike", "rx", "rxjava2")765    }766    link {767      github = "Raizlabs/DBFlow"768      desc = "A blazing fast, powerful, and very simple ORM android database library that writes database code for you."769      setTags("orm", "jap", "kapt", "database")770    }771    link {772      github = "KotlinPorts/kt-postgresql-async"773      desc = "Kotlin/Gradle port of mauricio's async driver for postgres/mysql."774      setTags("postgres", "mysql", "database driver")775    }776    link {777      github = "shyiko/levelkt"778      desc = "LevelDB client for Kotlin and/or Java 8+."779      setTags("leveldb", "embedded")780    }781    link {782      github = "SubiyaCryolite/jds"783      desc = "Jenesis Data Store: a dynamic, cross platform, high performance, ORM data-mapper. Designed to assist in rapid development and data mining."784      setTags("orm", "postgres", "mysql", "mssql", "sqlite", "oracle")785    }786    link {787      github = "dizitart/nitrite-database"788      desc = "Potassium Nitrite is a kotlin extension of nitrite database, an open source nosql embedded document store with mongodb like api."789      href = "https://github.com/dizitart/nitrite-database/tree/master/potassium-nitrite"790      setTags("nosql", "embedded", "documentdb", "object-storage")791    }792    link {793      github = "pm-dev/kotlin-gremlin-ogm"794      desc = "Kotlin-gremlin-ogm is a type-safe object/graph mapping library for Gremlin enabled graph databases."795      setTags("nosql", "graph", "database", "gremlin", "janusgraph", "orm")796    }797    link {798      github = "fluidsonic/fluid-mongo"799      desc = "Coroutine support for MongoDB built on top of the official Reactive Streams Java Driver"800      setPlatforms(JVM)801      setTags("database", "mongodb", "nosql", "coroutines")802    }803    link {804      github = "jasync-sql/jasync-sql"805      desc = "Kotlin port of mauricio's async driver for postgres/mysql."806      setTags("postgres", "mysql", "database driver")807    }808    link {809      github = "kotlin-orm/ktorm"810      desc = "A lightweight ORM Framework for Kotlin. Provides strong-typed and flexible SQL DSL and convenient sequence APIs to reduce our duplicated effort on database operations. "811      setTags("ORM", "SQL", "DSL", "JDBC")812    }813    link {814      github = "TouK/krush"815      desc = "Idiomatic persistence layer for Kotlin, based on Exposed. Itâs based on a compile-time JPA annotation processor that generates Exposed DSL table and objects mappings from your data classes."816    }817    link {818      github = "coupang/spring-data-requery"819      desc = "Spring Data for Requery (lightweight ORM)"820      setTags("spring", "spring-data", "requery", "java", "kotlin", "kotlin-coroutines", "orm", "jpa")821      setPlatforms(JVM)822    }823  }824  subcategory("Tools") {825    link {826      github = "SonarSource/sonarlint-intellij"827      desc = "An IDE extension that helps you detect and fix quality issues as you write code."828      setTags("scripting", "ide", "linter", "language")829    }830    link {831      github = "Kotlin/dokka"832      desc = "Documentation Engine for Kotlin."833      awesome()834    }835    link {836      github = "Vorlonsoft/EasyDokkaPlugin"837      desc = "Gradle Script plugin to generate documentation by Dokka for Kotlin and Java, Android and non-Android projects."838    }839    link {840      github = "Vorlonsoft/GradleMavenPush"841      desc = "Gradle Script plugin to upload Gradle Android/Kotlin/Java Artifacts to Maven repositories (JCenter, Maven Central, ...)."842    }843    link {844      github = "holgerbrandl/kscript"845      desc = "Scripting utils for Kotlin."846      setTags("bash", "scripting", "kts")847    }848    link {849      github = "kohesive/keplin"850      desc = "Secure Kotlin scripting and binary lambda-scripts."851      setTags("scripting", "kts")852    }853    link {854      github = "pinterest/ktlint"855      desc = "An anti-bikeshedding Kotlin linter with built-in formatter."856      setTags("style", "linter")857      awesome()858    }859    link {860      github = "cqfn/diktat"861      desc = "Strict coding standard for Kotlin and a custom set of rules for detecting and autofixing code smells."862      setTags("style", "linter", "static-analysis", "check style", "code smell")863      setPlatforms(COMMON)864    }865    link {866      github = "jtransc/jtransc"867      desc = "JVM AOT compiler created in Kotlin."868      setTags("aot", "compiller")869    }870    link {871      github = "detekt/detekt"872      desc = "Static code analysis for Kotlin."873      setTags("check style", "checkstyle")874      awesome()875    }876    link {877      github = "Kotlin/kotlinx-kover"878      desc = "Gradle plugin for Kotlin code coverage agents."879      setTags("coverage", "code coverage", "jacoco")880      awesome()881    }882    link {883      github = "facebookincubator/ktfmt"884      desc = "Kotlin code formatter that reflows lines and always produces the same result."885      setTags("formatter", "pretty print")886    }887    link {888      github = "mkohm/detekt-hint"889      desc = "Detection of design principle violations as a plugin to detekt."890    }891    link {892      github = "cypressious/KotlinW"893      desc = "A small wrapper for the Kotlin compiler that can be used to execute .kts scripts."894      setTags("wrapper", "scripting")895    }896    link {897      github = "s1monw1/KtsRunner"898      desc = "Library for executing .kts files from regular Kotlin code using Java Scripting Engines API"899      setTags("dsl", "scripting")900    }901    link {902      github = "jmfayard/refreshVersions"903      desc = "Better Gradle dependencies management inside the IDE. Search for available updates."904      setTags("gradle", "plugin", "build", "development", "libraries", "versions")905      awesome()906    }907    link {908      github = "Kotlin/kotlin-interactive-shell"909      desc = "Kotlin Language Interactive Shell"910      setTags("shell")911      setPlatforms(JVM)912    }913    link {914      github = "krzema12/github-actions-kotlin-dsl"915      desc = "Authoring GitHub Actions workflows in Kotlin."916      setTags("github", "dsl", "scripting")917      setPlatforms(JVM)918    }919  }920  subcategory("Compiler Plugins") {921    link {922      github = "google/ksp"923      desc = "Kotlin Symbol Processing API"924      setPlatforms(JVM)925    }926    link {927      github = "aafanasev/sekret"928      desc = "Kotlin compiler plugin to exclude secret properties from toString() of Data class"929      setPlatforms(JVM, ANDROID)930      setTags("Data class", "toString")931    }932    link {933      github = "AhmedMourad0/no-copy"934      desc = "A Kotlin compiler plugin that performs 'copy-erasure' on data classes."935      setPlatforms(ANDROID, COMMON, IOS, JS, JVM, NATIVE, WASM)936      setTags("data-class", "compiler-plugin", "value-based-classes", "binary-compatibility")937    }938  }939  subcategory("Continuous Integration") {940    link {941      github = "danger/kotlin"942      desc = "Stop saying \"you forgot to â¦\" in code review in Kotlin"943      setTags("danger", "ci", "continuous", "integration", "code", "review")944    }945  }946  subcategory("Code Generators") {947    link {948      github = "jhipster/jhipster-kotlin"949      desc = "A scaffold generator to generate web apps or APIs using springboot and angularJS or React"950    }951  }952  subcategory("Desktop") {953    link {954      github = "edvin/tornadofx"955      desc = "Lightweight JavaFX Framework for Kotlin/"956      setTags("javafx", "desktop", "application")957    }958  }959  subcategory("Http Clients") {960    link {961      github = "kittinunf/Fuel"962      desc = "The easiest HTTP networking library for Kotlin/Android."963      setTags("http", "http client", "file upload")964    }965    link {966      github = "jkcclemens/khttp"967      desc = "Kotlin HTTP requests library."968      setTags("http", "http client")969    }970    link {971      github = "egorzhdan/networkinkt"972      desc = "Multiplatform coroutine-based HTTP client."973      setTags("http", "http client", "coroutines")974    }975    link {976      github = "rybalkinsd/kohttp"977      desc = "Kotlin DSL-based HTTP client."978      setTags("http", "http client", "dsl", "okhttp")979    }980    link {981      github = "curiousnikhil/Asynkio"982      desc = "Make asynchronous calls painlessly with async/await style."983      setTags("http", "http client", "coroutines")984    }985    link {986      github = "speekha/httpmocker"987      desc = "Kotlin library to handle offline mode easily with OkHttp."988      setTags("http", "http client", "offline", "okhttp")989    }990  }991  subcategory("Networking") {992    link {993      github = "seniorjoinu/reliable-udp"994      desc = "Multiplexed, coroutine-powered reliable UDP for Kotlin using fountain codes"995      setPlatforms(JVM)996      setTags("networking", "reliable transport", "reliable udp", "no-arq", "fec")997    }998  }999  subcategory("Editors") {1000    link {1001      github = "JetBrains/intellij-community"1002      desc = "IntelliJ IDEA Community Edition"1003      setTags("editor", "ide", "language")1004      awesome()1005    }1006    link {1007      github = "alexmt/atom-kotlin-language"1008      desc = "Adds syntax highlighting to Kotlin files in Atom"1009      setTags("editor", "ide", "language")1010    }1011    link {1012      github = "vkostyukov/kotlin-sublime-package"1013      desc = "A Sublime Package for Kotlin."1014      setTags("editor", "ide", "language")1015    }1016    link {1017      github = "udalov/kotlin-vim"1018      desc = "Kotlin Syntax Highlighter for Vim."1019      setTags("editor", "ide", "language")1020    }1021    link {1022      github = "sargunster/kotlin-textmate-bundle"1023      desc = "Kotlin bundle for TextMate."1024      setTags("editor", "ide", "language")1025    }1026    link {1027      github = "ice1000/NppExtension"1028      desc = "Kotlin Language extension for Notepad++"1029      setTags("editor", "ide", "language")1030    }1031    link {1032      github = "ftomassetti/kanvas"1033      desc = "A truly hackable editor: simple, lightweight, understandable."1034      setTags("editor", "ide", "language")1035    }1036    link {1037      github = "fwcd/KotlinLanguageServer"1038      desc = "Smart code completion, diagnostics and more for Kotlin using the Language Server Protocol. VS Code extension included."1039      setTags("editor", "ide", "language")1040    }1041    link {1042      github = "mathiasfrohlich/vscode-kotlin"1043      desc = "Kotlin language support for VS Code."1044      setTags("editor", "ide", "language")1045    }1046  }1047  subcategory("Syntax Highlighters") {1048    link {1049      github = "jneen/rouge"1050      desc = "A pure-ruby code highlighter that is compatible with pygments. (wip)"1051      setTags("syntax", "higlight")1052    }1053    link {1054      github = "isagalaev/highlight.js"1055      desc = "Javascript syntax highlighter. (out-of-date)"1056      setTags("syntax", "higlight")1057    }1058    link {1059      github = "github/linguist"1060      desc = "For Ruby/Github, uses Sublime package"1061      setTags("syntax", "higlight")1062    }1063    link {1064      bitbucket = "birkenfeld/pygments-main"1065      desc = "Python syntax highlighter."1066      setTags("syntax", "higlight")1067    }1068    link {1069      github = "cansik/kotlin-latex-listing"1070      desc = "A syntax highlighting template for the Kotlin language in LaTeX listings."1071      setTags("syntax", "higlight")1072    }1073  }1074  subcategory("Game Development") {1075    link {1076      github = "zeganstyl/thelema-engine"1077      desc = "3d graphics engine in Kotlin, based on sources of libGDX. Platforms: JVM, TeaVM, Koltin/JS, Kotlin/Native. See live demo: [TeaVM](https://zeganstyl.github.io/thelema-teavm-tests/), [Kotlin/JS](https://zeganstyl.github.io/thelema-kxjs-demo/)"1078      setTags("thelema-engine", "game dev", "games", "desktop", "webgl")1079    }1080    link {1081      github = "libktx/ktx"1082      desc = "Kotlin utilities for LibGDX applications."1083      setTags("LibGDX", "game dev", "games")1084    }1085    link {1086      github = "AlmasB/FXGL"1087      desc = "JavaFX 8 Game Library written in Java + Kotlin"1088      setTags("javafx", "desktop", "games", "game dev")1089    }1090    link {1091      github = "icela/FriceEngine"1092      desc = "Make game developing easy again!"1093      setTags("desktop", "games", "game dev")1094    }1095    link {1096      github = "vassilibykov/AdventKT"1097      desc = "A Kotlin-based DSL for text adventures, with a partial replica of the classic Colossal Cave as an example."1098      setTags("games", "text adventures")1099    }1100    link {1101      github = "Hexworks/zircon"1102      desc = "An extensible text GUI library which targets multiple platforms and designed specifically for game developers, written in Kotlin."1103      setTags("text-gui", "games", "game-dev")1104    }1105    link {1106      github = "korlibs/KorGE"1107      desc = "Modern Multiplatform Game Engine for Kotlin. Write games for the JVM, JavaScript, Android and iOS in no time using Kotlin."1108      setTags("desktop", "android", "games", "game-dev")1109    }1110    link {1111      github = "KogeLabs/Ockero"1112      desc = "Ockero: Kotlin OpenGl Game Engine"1113      setPlatforms(JVM)1114    }1115  }1116  subcategory("Misc") {1117    link {1118      github = "RationalityFrontline/kevent"1119      desc = "A powerful in-process event dispatcher based on Kotlin and Coroutines."1120      setTags("eventbus", "event-dispatcher", "event-driven", "publishâsubscribe", "android", "swing", "javafx", "coroutines", "functional-programming")1121    }1122    link {1123      github = "themichailov/kache"1124      desc = "Kotlin functions caching library, reducing count of function executions."1125      setTags("cache")1126    }1127    link {1128      github = "Kotlin/kotlinx.reflect.lite"1129      desc = "Lightweight library allowing to introspect basic stuff about Kotlin symbols."1130      setTags("reflection")1131    }1132    link {1133      github = "puniverse/quasar"1134      desc = "Fibers, Channels and Actors for the JVM."1135      href = "https://github.com/puniverse/quasar/tree/master/quasar-kotlin"1136    }1137    link {1138      github = "MehdiK/Humanizer.jvm"1139      desc = "Humanizer.jvm meets all your jvm needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities."1140      setTags("pluralization")1141    }1142    link {1143      github = "mplatvoet/kovenant"1144      desc = "Promises for Kotlin and Android"1145      setTags("promise", "android")1146    }1147    link {1148      github = "kohesive/klutter"1149      desc = "A mix of random small libraries for Kotlin, the smallest reside here until big enough for their own repository."1150    }1151    link {1152      github = "DragonKnightOfBreeze/breeze-framework"1153      desc = "Integrated code framework base on Kotlin, provide many useful extensions for standard library and some frameworks."1154    }1155    link {1156      github = "kohesive/solr-undertow"1157      desc = "Solr Standalone Tiny and High performant server."1158      setTags("solr", "undertow")1159    }1160    link {1161      github = "leprosus/kotlin-hashids"1162      desc = "Library that generates short, unique, non-sequential hashes from numbers."1163      setTags("hash")1164    }1165    link {1166      github = "mplatvoet/progress"1167      desc = "Progress for Kotlin."1168      setTags("progress")1169    }1170    link {1171      github = "sargunster/KtUnits"1172      desc = "Tiny unit conversion library for Kotlin."1173      setTags("time", "unit", "conversion")1174    }1175    link {1176      github = "hotchemi/khronos"1177      desc = "An intuitive Date extensions in Kotlin."1178      setTags("time", "date")1179    }1180    link {1181      github = "yole/kxdate"1182      desc = "Kotlin extensions for Java 8 java.time API"1183      setTags("time", "date")1184    }1185    link {1186      github = "ingokegel/jclasslib"1187      desc = "jclasslib bytecode viewer is a tool that visualizes all aspects of compiled Java class files and the contained bytecode."1188      setTags("bytecode")1189    }1190    link {1191      github = "debop/koda-time"1192      desc = "Joda Time Extensions in Kotlin. (From Java 8 use java.time instead)"1193      setTags("joda-time", "jsr-310")1194    }1195    link {1196      github = "saschpe/log4k"1197      desc = "Lightweight logging library for Kotlin/Multiplatform. Supports Android, iOS, JavaScript and plain JVM environments."1198    }1199    link {1200      github = "MicroUtils/kotlin-logging"1201      desc = "Lightweight logging framework for Kotlin. Used as a wrapper for slf4j with Kotlin extensions."1202      setTags("logging", "slf4j")1203    }1204    link {1205      github = "cesarferreira/kotlin-pluralizer"1206      desc = "Kotlin extension to pluralize and singularize strings."1207      setTags("pluralize", "singularizen")1208    }1209    link {1210      github = "JoelW-S/groothy"1211      desc = "Kotlin implementation of Groovy Truth."1212      setTags("groovy truth")1213    }1214    link {1215      github = "Jire/Strukt"1216      desc = "Value types on the JVM, today!"1217      setTags("gc-free", "structure")1218    }1219    link {1220      github = "moshbit/Kotlift"1221      desc = "Kotlift is the first source-to-source language transpiler from Kotlin to Swift."1222      setTags("swift")1223    }1224    link {1225      github = "consoleau/kassava"1226      desc = "This library provides some useful kotlin extension functions for implementing toString() and equals() without all of the boilerplate."1227      setTags("hashCode", "equals", "toString")1228    }1229    link {1230      github = "czyzby/kotlin-times"1231      desc = "A simple utility library for readable loops."1232      setTags("extensions", "utility")1233    }1234    link {1235      github = "doyaaaaaken/kotlin-csv"1236      desc = "A pure kotlin simple csv reader/writer."1237      setTags("csv", "kotlin multiplatform")1238    }1239    link {1240      github = "phxql/aleksa"1241      desc = "Aleksa is a small framework for writing Alexa Skills in Kotlin."1242      setTags("alexa", "amazon echo", "text to speech")1243    }1244    link {1245      github = "just-ai/jaicf-kotlin"1246      desc = "Kotlin framework for conversational voice assistants and chatbots development."1247      setTags("chatbot", "speech to text", "text to speech", "alexa", "google assistant", "actions on google", "voice")1248      setPlatforms(JVM, ANDROID)1249    }1250    link {1251      github = "TicketmasterMobileStudio/actions-on-google-kotlin"1252      desc = "Port of official Node.js SDK to Kotlin. Complete with all features and tests and nearly identical API."1253      setTags("actions on google", "google assistant", "google home")1254    }1255    link {1256      github = "cretz/asmble"1257      desc = "Compile WebAssembly to JVM and other WASM tools."1258      setTags("wasm", "webassembly")1259    }1260    link {1261      github = "fork-handles/forkhandles"1262      name = "fork-handles/tuples4k"1263      desc = "Tuple classes"1264      href = "https://github.com/fork-handles/forkhandles/tree/trunk/tuples4k"1265      setTags("tuples")1266    }1267    link {1268      github = "Kotlin/kotlinx.atomicfu"1269      desc = "The idiomatic way to use atomic operations in Kotlin."1270      setTags("atomic")1271      awesome()1272    }1273    link {1274      github = "vjames19/kotlin-futures"1275      desc = "A collections of extension functions to make the JVM Future, CompletableFuture, ListenableFuture API more functional and Kotlin like."1276    }1277    link {1278      github = "kunalsheth/units-of-measure"1279      desc = "A type-safe dimensional analysis library for Kotlin."1280      setTags("dimensional-analysis", "typesafety", "metaprogramming")1281    }1282    link {1283      github = "spoptchev/kotlin-preconditions"1284      desc = "Precondition error checking in kotlin."1285      setTags("preconditions")1286    }1287    link {1288      github = "spoptchev/scientist"1289      desc = "A kotlin library for refactoring code. Port of GitHub's scientist."1290      setTags("scientist", "refactoring")1291    }1292    link {1293      github = "soywiz/klock"1294      desc = "Consistent and portable date and time utilities for multiplatform kotlin (JVM, JS and Common)."1295      setTags("js", "date", "time")1296    }1297    link {1298      github = "d-max/dsl-logger"1299      desc = "Simple DSL for logging with logger abstraction layer"1300      setTags("dsl", "logging", "android", "slf4j")1301    }1302    link {1303      github = "evoasm/kasm"1304      desc = "x64/x86-64 assembler and execution library"1305      setTags("x64", "x86", "assembly", "assembler")1306    }1307    link {1308      github = "korlibs/kds"1309      desc = "Optimized Kotlin Data Structures for JVM, JS and Common"1310      setTags("ds")1311    }1312    link {1313      github = "s1monw1/TLSLibrary"1314      desc = "Simple TlsLibrary written in Kotlin - Provides DSL for creating TLS connections"1315      setTags("dsl", "tls", "ssl", "jsse")1316    }1317    link {1318      github = "KotlinNLP/SimpleDNN"1319      desc = "SimpleDNN is a machine learning lightweight open-source library part of KotlinNLP and has been designed to support relevant neural network architectures in natural language processing tasks."1320      setTags("machine-learning", "recurrent-neural-networks", "feedforward-neural-network", "natural-language-processing")1321    }1322    link {1323      github = "nickhristov/krakdown"1324      desc = "A native markdown parser written in Kotlin."1325      setTags("markdown", "parser")1326    }1327    link {1328      github = "ziggy42/kolor"1329      desc = "A library to print colored strings, with Kotlin."1330      setTags("ansi-colors", "colors", "shell")1331    }1332    link {1333      github = "holgerbrandl/kravis"1334      desc = "A Kotlin grammar for scientific data visualization"1335      setTags("Data Science")1336    }1337    link {1338      github = "MiloszKrajewski/stateful4k"1339      desc = "State Machine Construction Kit for Kotlin"1340      setTags("state machine")1341    }1342    link {1343      github = "charleskorn/kaml"1344      desc = "YAML support for kotlinx.serialization"1345      setTags("serialization", "yaml")1346    }1347    link {1348      github = "jershell/kbson"1349      desc = "Bson support for kotlinx.serialization"1350    }1351    link {1352      github = "pemistahl/lingua"1353      desc = "A language detection library suitable for long and short text alike"1354      setTags("nlp", "natural-language-processing", "linguistics", "languages", "language-detection", "language-modeling", "machine-learning")1355    }1356    link {1357      github = "sandjelkovic/kxjtime"1358      desc = "Lightweight Kotlin extensions for java.time API"1359      setTags("extensions", "time", "date", "jdk8", "java.time", "utility")1360    }1361    link {1362      github = "pmwmedia/tinylog"1363      desc = "Lightweight logging framework with native logging API for Kotlin."1364      setPlatforms(JVM, ANDROID)1365      setTags("logging", "logger")1366    }1367    link {1368      github = "Lewik/klog"1369      desc = "Minimalistic and multiplatform logging for Kotlin"1370      setPlatforms(JVM, JS, COMMON)1371      setTags("logging", "multiplatform")1372    }1373    link {1374      github = "Rasalexman/KDispatcher"1375      desc = "Simple and light-weight event dispatcher for Kotlin"1376    }1377    link {1378      github = "dotCipher/kase-format"1379      desc = "String case conversion and detection library"1380    }1381    link {1382      github = "vittee/kformula"1383      desc = "Mathematical expression engine written in Kotlin, running on JVM."1384    }1385    link {1386      github = "kotlin-telegram-bot/kotlin-telegram-bot"1387      desc = "A wrapper for the Telegram Bot API written in Kotlin."1388    }1389    link {1390      github = "insanusmokrassar/TelegramBotAPI"1391      desc = "Kotlin Multiplatform library for type-safe work with Telegram Bot API"1392      setTags("telegram", "bot", "multiplatform", "Kotlin/JVM", "Kotlin/JS")1393      setPlatforms(COMMON, JVM, JS)1394    }1395    link {1396      github = "aminography/PrimeCalendar"1397      desc = "Provides all of the java.util.Calendar functionalities for Civil, Persian, Hijri, Japanese, etc, as well as their conversion to each other."1398    }1399    link {1400      github = "pearxteam/kasechange"1401      desc = "Multiplatform Kotlin library to convert strings between various case formats including Camel Case, Snake Case, Pascal Case and Kebab Case"1402      setPlatforms(ANDROID, COMMON, IOS, JS, JVM, NATIVE, WASM)1403      setTags("multiplatform", "string", "case-conversion")1404    }1405    link {1406      github = "pearxteam/kpastebin"1407      desc = "Multiplatform Kotlin library to interact with the pastebin.com API"1408      setPlatforms(ANDROID, COMMON, IOS, JS, JVM, NATIVE)1409      setTags("multiplatform", "pastebin", "api")1410    }1411    link {1412      github = "justwrote/kjob"1413      desc = "A coroutine based persistent background scheduler written in Kotlin."1414      setTags("job-scheduler", "task", "job-queue", "kotlin", "runner", "job", "mongodb", "kotlin-library", "kotlin-coroutines", "queue", "job-processor")1415    }1416    link {1417      github = "fluidsonic/fluid-pdf"1418      desc = "Easy PDF generation with HTML & CSS using Chromium or Google Chrome"1419      setPlatforms(JVM)1420      setTags("pdf")1421    }1422    link {1423      github = "Kotlin/kotlinx-datetime"1424      desc = "A multiplatform Kotlin library for working with date and time."1425      setTags("multiplatform", "date", "time")1426      awesome()1427    }1428    link {1429      github = "oolong-kt/oolong"1430      href = "https://oolong-kt.org"1431      desc = "Elm inspired Model-View-Update (MVU) implementation for Kotlin multiplatform."1432      setTags("multiplatform", "mvu", "coroutines")1433      setPlatforms(COMMON, IOS, JVM, NATIVE)1434    }1435    link {1436      github = "mobiletoly/urlsome"1437      desc = "URL builder library for Kotlin"1438      setTags("URL", "builder", "http")1439      setPlatforms(JVM)1440    }1441    link {1442      github = "ssuukk/Qotlin"1443      desc = "IBM Q Experience Kotlin toolkit - Kotlin library to interact and write assembly code for IBM Quantum computers"1444      setPlatforms(JVM)1445    }1446    link {1447      github = "DavidMellul/Kotlin-Publish-Subscribe"1448      desc = "Intuitive and powerful human-readable Kotlin DSL for IPCs & turning anything into a message receiver / broadcaster"1449      setTags("ipc", "extension", "misc")1450      setPlatforms(JVM)1451    }1452    link {1453      github = "ivanisidrowu/KtRssReader"1454      desc = "Kotlin library for parsing RSS feeds"1455      setTags("rss", "feed")1456      setPlatforms(JVM, ANDROID)1457    }1458    link {1459      github = "z4kn4fein/kotlin-semver"1460      desc = "Semantic Versioning library for Kotlin Multiplatform."1461      setTags("multiplatform", "semver", "semantic", "version")1462      setPlatforms(ANDROID, COMMON, IOS, JS, JVM, NATIVE, WASM)1463    }1464  }1465  subcategory("Parsers") {1466    link {1467      github = "ParserKt/ParserKt"1468      setPlatforms(COMMON, JS, JVM)1469    }1470    link {1471      github = "sargunster/CakeParse"1472      desc = "Simple parser combinator library for Kotlin."1473      setTags("parser", "combinator", "grammar", "lexer")1474      setPlatforms(JVM)1475    }1476    link {1477      github = "h0tk3y/better-parse"1478      desc = "A nice parser combinator library for Kotlin"1479      setTags("parser", "parser-combinator", "grammar", "lexer")1480      setPlatforms(COMMON, JS, JVM, NATIVE, IOS)1481    }1482    link {1483      github = "fork-handles/forkhandles"1484      name = "fork-handles/parser4k"1485      desc = "Recursive descent parser combinator library"1486      href = "https://github.com/fork-handles/forkhandles/tree/trunk/parser4k"1487      setTags("parser", "parser-combinator", "recursive descent")1488      setPlatforms(JVM)1489    }1490    link {1491      github = "asm0dey/staks"1492      desc = "Extensible XML parser DSL, based on StAX"1493      setTags("XML", "StAX", "DSL", "parser")1494      setPlatforms(JVM)1495    }1496  }1497  subcategory("Raspberry Pi") {1498    link {1499      github = "mhashim6/Pi4K"1500      desc = "Pi4J Kotlin bindings."1501      setTags("raspberry-pi", "raspberrypi", "gpio", "dsl", "pi4j")1502    }1503  }1504  subcategory("Multiplatform") {1505    link {1506      github = "ionspin/kotlin-multiplatform-bignum"1507      desc = "Pure kotlin multiplatform arbitrary precision arithmetic library."1508      setTags("multiplatform", "bignum", "biginteger", "bigdecimal", "arbitrary-precision")1509    }1510    link {1511      github = "davidepianca98/KMQTT"1512      desc = "MQTT Broker library/executables for Kotlin multiplatform."1513    }1514    link {1515      github = "GitLiveApp/firebase-kotlin-sdk"1516      desc = "A Kotlin-first Multiplatform SDK for Firebase supporting iOS, Android & Web"1517      setTags("firebase", "firestore", "multiplatform")1518    }1519    link {1520      github = "DetachHead/kotlinxpath"1521      desc = "A typesafe builder for Xpath with several useful helper functions that make Xpath easier to work with"1522      setTags("xpath", "xpath-builder", "typesafe-builder", "multiplatform")1523      setPlatforms(COMMON, JVM, JS, NATIVE)1524    }1525    link {1526      github = "ionspin/kotlin-multiplatform-libsodium"1527      desc = "Kotlin multiplatform wrapper for Libsodium cryptographic library."1528      setTags("multiplatform", "libsodium", "cryptography")1529    }1530    link {1531      github = "petertrr/kotlin-multiplatform-diff"1532      desc = "Multiplatform kotlin library for calculating text differences. Based on java-diff-utils."1533      setTags("multiplatform", "tools", "text", "diff", "myers", "algorithm")1534      setPlatforms(COMMON, JVM, JS, NATIVE)1535    }1536  }1537  subcategory("Extensions") {1538    link {1539      github = "Kotlin/kotlinx.support"1540      desc = "Extension and top-level functions to use JDK7/JDK8 features in Kotlin 1.0."1541      setTags("extensions", "jdk8", "jdk7")1542    }1543    link {1544      github = "vanshg/KrazyKotlin"1545      desc = "A collection of useful Kotlin Extension"1546      setTags("extensions")1547    }1548    link {1549      github = "hankdavidson/ktime"1550      desc = "Extensions to the java8 time library"1551      setTags("extensions", "jdk8", "time", "date", "range")1552    }1553    link {1554      github = "LukasForst/katlib"1555      desc = "A collection of Kotlin extension functions and utilities."1556      setTags("extensions")1557    }1558  }1559  subcategory("Configuration") {1560    link {1561      github = "npryce/konfig"1562      desc = "A Type Safe Configuration API for Kotlin"1563      setTags("configuration")1564    }1565    link {1566      github = "mariomac/kaconf"1567      desc = "KickAss Configuration. An annotation-based configuration system for Java and Kotlin"1568      setTags("configuration")1569    }1570    link {1571      github = "config4k/config4k"1572      desc = "A Kotlin wrapper for Typesafe Config"1573      setTags("configuration")1574      setPlatforms(JVM)1575      awesome()1576    }1577    link {1578      github = "jdiazcano/cfg4k"1579      desc = "Flexible and easy to use config library written in kotlin."1580      setTags("configuration")1581    }1582    link {1583      github = "daviddenton/configur8"1584      desc = "A Kotlin port of Configur8 - A Type Safe Configuration API for Kotlin, extendable to user-defined types."1585      setTags("configuration")1586    }1587    link {1588      github = "ufoscout/properlty"1589      desc = "Simple configuration library with placeholders resolution and zero magic!"1590      setTags("configuration")1591    }1592    link {1593      github = "uchuhimo/konf"1594      desc = "A type-safe cascading configuration library for Kotlin/Java, supporting most configuration formats"1595      setTags("configuration")1596    }1597    link {1598      github = "sksamuel/hoplite"1599      desc = "A library for loading configuration files into typesafe Kotlin data classes in a boilerplate-free way"1600    }1601    link {1602      github = "Nohus/AutoKonfig"1603      desc = "A Kotlin configuration library with batteries included. Type-safe, zero lines of setup."1604      href = "https://autokonfig.nohus.dev/"1605      setTags("configuration")1606    }1607    link {1608      github = "cdimascio/dotenv-kotlin"1609      desc = "A zero-dependency module that loads environment variables from a .env file"1610      setTags("twelve-factor", "environment-variables")1611      setPlatforms(ANDROID, JVM)1612    }1613    link {1614      github = "davidohana/kofiko-kotlin"1615      desc = "Kofiko: Code-First configuration library. Lightweight, simple and minimal boilerplate."1616      setTags("configuration", "environment-variables", "ini", "json", "env")1617      setPlatforms(JVM)1618    }1619  }1620  subcategory("Graphics") {1621    link {1622      github = "data2viz/data2viz"1623      desc = "multiplatform dataviz library, d3js port"1624      setTags("d3js", "multiplatform", "svg", "javafx")1625    }1626    link {1627      github = "kotlin-graphics/glm"1628      desc = "g-truck glm port, opengl mathematics library"1629      setTags("glm", "opengl", "vulkan", "matrices", "vectors", "math-library")1630    }1631    link {1632      github = "dananas/kotlin-glsl"1633      desc = "Write your GLSL shaders in Kotlin"1634      setTags("glsl", "opengl")1635    }1636    link {1637      github = "kotlin-graphics/kotlin-unsigned"1638      desc = "Unsigned operators and boxed types (Ubyte, Uint, Ulong and Ushort) for unsigned support."1639      setTags("unsigned", "math")1640    }1641    link {1642      github = "kotlin-graphics/gli"1643      desc = "g-truck gli port, image library"1644      setTags("gli", "opengl", "vulkan", "texture")1645    }1646    link {1647      github = "kotlin-graphics/uno-sdk"1648      desc = "Unofficial OpenGL SDK"1649      setTags("gli", "opengl", "vulkan")1650    }1651    link {1652      github = "kotlin-graphics/ovr"1653      desc = "Oculus binding"1654      setTags("vr", "oculus", "opengl")1655    }1656    link {1657      github = "kotlin-graphics/openvr"1658      desc = "OpenVR binding"1659      setTags("vr", "openvr", "steamvr", "opengl", "vulkan")1660    }1661    link {1662      github = "kotlin-graphics/assimp"1663      desc = "Open Asset Import Library port"1664      setTags("assimp", "stl", "md2", "ply", "obj", "collada", "fbx", "opengl", "vulkan")1665    }1666    link {1667      github = "kotlin-graphics/imgui"1668      desc = "jvm port of imgui"1669      setTags("opengl", "gui", "gamedev", "dear-imgui")1670    }1671    link {1672      github = "kotlin-graphics/bullet"1673      desc = "bullet port"1674      setTags("opengl", "vulkan", "gamedev", "physics", "simulation", "robotics", "kinematics")1675    }1676    link {1677      github = "GlimpseFramework/glimpse-framework"1678      desc = "OpenGL made simple."1679      setTags("opengl", "shaders")1680    }1681    link {1682      github = "java-opengl-labs/modern-jogl-examples"1683      desc = "port of 'Learning Modern 3D Graphic Programming' by J.L.McKesson (jogl)"1684      setTags("opengl", "tutorial", "jogl")1685    }1686    link {1687      github = "java-opengl-labs/learn-OpenGL"1688      desc = "port of https://learnopengl.com/ tutorial (lwjgl)"1689      setTags("opengl", "tutorial", "lwjgl")1690    }1691    link {1692      github = "java-opengl-labs/Vulkan"1693      desc = "port of https://github.com/SaschaWillems/Vulkan"1694      setTags("vulkan", "tutorial", "lwjgl")1695    }1696    link {1697      github = "Jonatino/JOGL2D"1698      desc = "Zero-overhead 2D rendering library for JOGL using Kotlin."1699      setTags("jogl", "opengl")1700    }1701    link {1702      github = "soywiz/kaifu2x"1703      desc = "Waifu2x port to Kotlin as library and CLI. Convolutional-neural-network based upscaler for Anime-like images and noise/artifact reduction."1704      setTags("waifu2x", "convolutional-neural-networks", "kotlin", "noise-reduction", "scaler")1705    }1706    link {1707      github = "nwillc/ksvg"1708      desc = "Kotlin SVG image generation DSL, supporting inline and file formats."1709      setTags("ksvg", "svg", "kotlin", "dsl")1710    }1711    link {1712      github = "openrndr/openrndr"1713      desc = "OPENRNDR, a framework for creative coding in Kotlin. Accelerated 2D and 3D graphics, vector graphics, shaders and animation"1714      setTags("opengl", "creative-coding", "kotlin", "dsl", "shaders", "ljwgl")1715    }1716    link {1717      github = "openrndr/orx"1718      desc = "ORX is a collection extras for OPENRNDR which add support for sensors, live-coding, user interfaces and much more."1719      setTags("opengl", "creative-coding", "kotlin", "dsl", "shaders", "ljwgl")1720    }1721    link {1722      github = "markaren/three.kt"1723      desc = "Kotlin port of three.js JavaScript 3D library"1724      setTags("opengl", "lwjgl3", "three-js")1725    }1726    link {1727      github = "JetBrains/skiko"1728      desc = "Kotlin Multiplatform bindings to Skia"1729      setPlatforms(JVM, NATIVE)1730      setTags("skia")1731    }1732  }1733  subcategory("Data Science") {1734    link {1735      name = "Kotlin for Data Science"1736      desc = "Kotlin for Data Science overview page"1737      href = "https://kotlinlang.org/docs/reference/data-science-overview.html"1738      awesome()1739    }1740    link {1741      github = "JetBrains/lets-plot-kotlin"1742      desc = "Grammar of graphics visualization for Kotlin"1743      awesome()1744    }1745    link {1746      github = "JetBrains/KotlinDL"1747      desc = "High-level Deep Learning Framework written in Kotlin and inspired by Keras."1748      href = "https://jetbrains.github.io/KotlinDL/"1749      setTags("data science", "neural-networks", "deep-learning", "machine-learning", "artificial-intelligence")1750      awesome()1751    }1752    link {1753      github = "Kotlin/kotlin-jupyter"1754      desc = "Official Kotlin Jupyter kernel"1755      setTags("data science", "juputer", "repl")1756      awesome()1757    }1758    link {1759      github = "thomasnield/kotlin-statistics"1760      desc = "Advanced math and statistical extensions for Kotlin."1761      setTags("data science", "extensions")1762      awesome()1763    }1764    link {1765      github = "holgerbrandl/krangl"1766      desc = "krangl is a {K}otlin library for data w{rangl}ing."1767      setTags("data science", "data wrangling")1768      awesome()1769    }1770    link {1771      github = "kyonifer/koma"1772      desc = "A scientific computing library for Kotlin."1773      setTags("data science", "plot", "matlab", "numpy")1774    }1775    link {1776      github = "mipt-npm/kmath"1777      desc = "A (not so numpy-like) multiplatform mathematical library with higher level abstractions."1778      awesome()1779    }    1780    link {1781      github = "unipu-ict/ksdtoolkit"1782      desc = "Kotlin System Dynamics Toolkit - for system dynamics modelling and simulation with Kotlin."1783      setTags("system dynamics", "modelling", "simulation", "complex system")1784    }1785    link {1786      github = "MarcinMoskala/KotlinDiscreteMathToolkit"1787      desc = "Set of extensions for Kotlin that provides Discrete Math functionalities as an Kotlin extension functions."1788      setTags("data science", "math")1789    }1790    link {1791      github = "sekwiatkowski/Komputation"1792      desc = "A neural network framework written in Kotlin."1793      setTags("data science", "neural-networks", "deep-learning", "machine-learning", "artificial-intelligence")1794    }1795    link {1796      github = "sanity/pairAdjacentViolators"1797      desc = "A Kotlin implementation of the Pair Adjacent Violators algorithm for isotonic regression."1798      setTags("data science", "pair adjacent violators")1799    }1800    link {1801      github = "breandan/kotlingrad"1802      desc = "Shape-Safe Differentiable Programming with Algebraic Data Types."1803    }1804    link {1805      github = "kiegroup/optaplanner"1806      desc = "Constraint solving AI for planning and scheduling problems."1807      href = "https://www.optaplanner.org/compatibility/kotlin.html"1808      setTags("data science", "artificial-intelligence", "mathematical-optimization", "constraint-solving")1809    }1810    link {1811      github = "holgerbrandl/kalasim"1812      desc = "Discrete event simulator that enables complex, dynamic process models."1813      href = "https://www.kalasim.org"1814      setTags("data science", "state machine")1815      setPlatforms(JVM)1816    }1817    link {1818      github = "cdietze/euklid"1819      setPlatforms(COMMON, JS, JVM)1820    }1821    link {1822      github = "lamba92/KGraph"1823      desc = "A Kotlin multi-platform library for graph data structures"1824      setTags("data-science")1825      setPlatforms(JVM, JS, COMMON, NATIVE)1826    }1827    link {1828      github = "Kotlin/multik"1829      desc = "A Kotlin library for working with multi-demensional arrays"1830      setTags("multidimensional array")1831      setPlatforms(JVM)1832    }1833    link {1834      github = "Kotlin/dataframe"1835      desc = "A Kotlin library for in-memory data manipulation"1836      setTags("data wrangling", "csv")1837      setPlatforms(JVM)1838    }1839    link {1840      github = "breandan/kaliningraph"1841      setPlatforms(JVM)1842    }1843    link {1844      github = "grinisrit/noa-atra"1845      desc = "Analytics for Trading with NOA"1846    }1847  }1848  subcategory("Command Line Interface") {1849    link {1850      github = "ajalt/clikt"1851      desc = "Clikt - Intuitive command line interface parsing for Kotlin."1852      setTags("cli", "command line parser", "argument parser", "option parser")1853    }1854    link {1855      github = "leprosus/kotlin-cli"1856      desc = "Kotlin-CLI - command line interface options parser for Kotlin."1857      setTags("cli", "command line interface")1858    }1859    link {1860      github = "jimschubert/kopper"1861      desc = "A simple Kotlin option parser"1862      setTags("cli", "parser")1863    }1864    link {1865      github = "xenomachina/kotlin-argparser"1866      desc = "Easy to use and concise yet powerful and robust command line argument parsing for Kotlin."1867      setTags("command-line-parser", "argument-parser", "option-parser")1868    }1869    link {1870      github = "ajalt/mordant"1871      desc = "Mordant - Full-featured text styling for Kotlin command line applications."1872      setTags("cli", "ansi", "color")1873    }1874    link {1875      github = "aPureBase/arkenv"1876      desc = "Fully fledged command line arguments / environment variables parser via simple Kotlin delegates"1877      setTags("cli", "argument", "env", "environment", "variables", "parser")1878    }1879    link {1880      github = "fork-handles/forkhandles"1881      name = "fork-handles/bunting4k"1882      desc = "Simple, typesafe, testable command line flags"1883      href = "https://github.com/fork-handles/forkhandles/tree/trunk/bunting4k"1884      setTags("cli", "command", "argument", "flag", "option", "parser")1885    }1886    link {1887      github = "dbaelz/Konclik"1888      setTags("native", "CLI")1889      setPlatforms(JVM, JS, NATIVE, COMMON)1890    }1891    link {1892      github = "varabyte/kotter"1893      desc = "A declarative, Kotlin-idiomatic API for writing dynamic command line applications"1894      setTags("cli", "ansi", "color")1895      setPlatforms(JVM)1896    }1897    link {1898      github = "kotlin-inquirer/kotlin-inquirer"1899      name = "kotlin-inquirer"1900      desc = "A collection of common interactive command line user interfaces written in Kotlin"1901      href = "https://github.com/kotlin-inquirer/kotlin-inquirer"1902      setTags("cli", "command", "interactive", "ui", "ansi", "color", "command line interface")1903    }1904  }1905  subcategory("Browsers") {1906    link {1907      github = "wendigo/chrome-reactive-kotlin"1908      setTags("web", "chrome", "automation", "browser")1909    }1910  }1911  subcategory("I/O") {1912    link {1913      github = "square/okio"1914      href = "https://square.github.io/okio"1915      desc = "A modern I/O library for Android, Kotlin, and Java."1916      setPlatforms(ANDROID, JVM, COMMON, IOS, NATIVE, JS)1917      setTags("io", "multiplatform")1918      awesome()1919    }1920    link {1921      github = "rsocket/rsocket-kotlin"1922      href = "https://rsocket.io"1923      desc = "Kotlin implementation of RSocket."1924      setPlatforms(JVM, JS)1925      setTags("rsocket", "rx", "reactive-streams")1926    }1927    link {1928      github = "Dynamium/EVCalc"1929      desc = "EVCalc is a calculation engine for mobile electric venicles (Electric scooters, electric unicycles, and so on) written in Kotlin."1930      setPlatforms(JVM)1931      setTags("evcalc", "dynamium", "calculation", "ev", "euc", "electric unicycles", "electric-scooters", "engine")1932    }1933    link {1934      github = "agcom/knio2"1935      desc = "Kotlinx coroutines extensions for Java NIO.2"1936      setPlatforms(JVM)1937      setTags("io")1938    }1939  }1940  subcategory("API Clients") {1941    link {1942      github = "JetBrains/space-kotlin-sdk"1943      desc = "Kotlin client for JetBrains Space HTTP API"1944      setPlatforms(COMMON, JS, JVM)1945      awesome()1946    }1947    link {1948      github = "adamint/spotify-web-api-kotlin"1949      desc = "Spotify Web API wrapper for Kotlin/Android, JVM, JS, and Native targets."1950      setPlatforms(JVM, JS, ANDROID, NATIVE, COMMON)1951    }1952    link {1953      github = "awslabs/aws-sdk-kotlin"1954      desc = "Multiplatform AWS SDK for Kotlin"1955      setPlatforms(JVM, ANDROID)1956    }1957  }1958  subcategory("Internationalisation and Localization") {1959    link {1960      github = "cashapp/barber"1961      desc = "A type safe Kotlin JVM library for building up localized, fillable, themed documents using Mustache templating."1962      setTags("Mustache")1963      setPlatforms(JVM)1964    }1965    link {1966      github = "projectfluent/fluent-kotlin"1967      desc = "Kotlin tooling implementation of ProjectFluent. Read, write, and transform Fluent files."1968      setTags("L10n")1969      setPlatforms(JVM)1970    }1971  }1972  subcategory("Logging") {1973    link {1974      github = "LighthouseGames/KmLogging"1975      desc = "Kotlin multiplatform logging. High performance, composable and simple to use."1976      setPlatforms(ANDROID, NATIVE, IOS, COMMON, JVM, JS)1977      setTags("logging", "multiplatform")1978    }1979    link {1980      github = "Foso/Cabret-Log"1981      desc = "Method call logging for Kotlin Multiplatform"1982      setPlatforms(JVM, JS, ANDROID, NATIVE, IOS, COMMON)1983    }1984  }1985  subcategory("Mail") {1986    link {1987      github = "bluefireoly/SimpleKotlinMail"1988      desc = "A simple, modern and coroutine based Kotlin Email API, supporting both clientside and serverside projects."1989      setTags("mail", "smtp", "email", "mailserver")1990      setPlatforms(JVM)1991    }1992  }1993  subcategory("Jetpack-Compose"){1994    link{1995      github = "CuriousNikhil/neumorphic-compose"1996      desc = "Neumorphism UI on Android with Jetpack Compose. Just add one modifer = Modifier.neumorphic()"1997      setTags("jetpack-compose", "compose", "kotlin", "ui")1998      setPlatforms(ANDROID)1999    }2000    2001    link{2002      github = "CuriousNikhil/compose-particle-system"2003      desc = "A lightweight particle system for Jetpack Compose - Quarks"2004      setTags("jetpack-compose", "compose", "kotlin", "ui")2005      setPlatforms(ANDROID)2006    }2007    link{2008      github = "CuriousNikhil/k5-compose"2009      desc = "K5-compose is a sketchy port of p5.js for Jetpack Compose Desktop"2010      setTags("jetpack-compose", "compose", "kotlin", "ui", "compose-desktop")2011      setPlatforms(NATIVE, JVM)2012    }2013    link{2014      github = "Canopas/Intro-showcase-view"2015      desc = "An android library to highlight different features of the app built using Jetpack Compose."2016      setTags("jetpack-compose", "compose", "kotlin", "jetpack-android", "android")2017      setPlatforms(ANDROID)2018    }2019  }2020}...Title.kt
Source:Title.kt  
...38import com.yuyakaido.android.cardstackview.CardStackListener39import com.yuyakaido.android.cardstackview.Direction40import com.yuyakaido.android.cardstackview.StackFrom41import org.json.JSONObject42import kotlin.properties.Delegates43/**44 * Shows the main title screen with a button.45 */46class Title : Fragment(), CardStackListener {47    val TAG = MainActivity::class.java.simpleName48    private lateinit var manager: CardStackLayoutManager49    private lateinit var viewAdapter: CardAdapter50    private lateinit var loadButton: Button51    private val mMaxSize = 4 // 1052    private var userID = 053    private var mCurrIndex = 054    private var mCards = arrayOfNulls<CardMovie>(mMaxSize)55    private var isRecoType = false56    private var mLikedCards = arrayOfNulls<String>(mMaxSize)...DigitalIDValidator.kt
Source:DigitalIDValidator.kt  
...18import java.security.spec.X509EncodedKeySpec19import java.text.SimpleDateFormat20import java.util.*21import kotlin.collections.ArrayList22import kotlin.properties.Delegates23interface DigitalIDValidatorDelegate {24    fun downloadProgressDidChange(to: Float)25    fun didReceiveProfileImage(profileImage: Bitmap)26    fun validationServiceDidChange(available: Boolean)27}28class DigitalIDValidator private constructor(val context: Context){29    companion object {30        private var _instance : DigitalIDValidator? = null31        fun shared() : DigitalIDValidator? {32            return _instance33        }34        fun createInstance(context : Context) : DigitalIDValidator? {35            _instance = DigitalIDValidator(context)36            _instance?.syncKeys()...HttpClientService.kt
Source:HttpClientService.kt  
1package com.silviavaldez.sampleapp.services.rest2import android.content.Context3import android.net.ConnectivityManager4import android.util.Log5import com.github.kittinunf.fuel.Fuel6import com.github.kittinunf.fuel.core.Method7import com.github.kittinunf.fuel.core.Response8import com.github.kittinunf.result.Result9import com.silviavaldez.sampleapp.R10import com.silviavaldez.sampleapp.services.delegates.IHttpClientDelegate11import org.json.JSONArray12import org.json.JSONException13import org.json.JSONObject14import java.io.*15import java.net.HttpURLConnection16import java.nio.charset.Charset17/**18 * Helper class for HTTP networking.19 * Created by Silvia Valdez on 20/01/2018.20 */21class HttpClientService(private val context: Context,22                        private val delegate: IHttpClientDelegate) {23    private val tag = HttpClientService::class.simpleName24    companion object {25        fun networkAvailable(context: Context): Boolean {26            val connectivityManager =27                    context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager28            val activeNetworkInfo = connectivityManager.activeNetworkInfo29            return activeNetworkInfo != null30                    && activeNetworkInfo.isConnectedOrConnecting31        }32    }33    fun get(url: String) {34        Fuel.get(url)35                .header("Content-Type" to "application/json")36                .timeout(IServicesConstants.TIMEOUT)37                .response { request, response, result ->38                    Log.d(tag, "GET $url")39                    Log.d(tag, "Request: " + request.toString())40                    when (result) {41                        is Result.Failure -> {42                            val (_, error) = result43                            if (error != null) {44                                Log.e(tag, "STATUS CODE: ${response.statusCode}")45                                Log.e(tag, "RESPONSE: ${error.message}")46                                val errorMessage = getErrorMessage(response.statusCode)47                                delegate.onFailure(errorMessage)48                            }49                        }50                        is Result.Success -> {51                            val data = validateResponse(response)52                            delegate.onSuccess(data)53                        }54                    }55                }56    }57    fun post(url: String, content: String) {58        Fuel.post(url)59                .header("Content-Type" to "application/json")60                .body(content, Charset.defaultCharset())61                .timeout(IServicesConstants.TIMEOUT)62                .response { request, response, result ->63                    Log.d(tag, "POST $url")64                    Log.d(tag, "Request: " + request.toString())65                    when (result) {66                        is Result.Failure -> {67                            val (_, error) = result68                            if (error != null) {69                                Log.e(tag, "STATUS CODE: ${response.statusCode}")70                                Log.e(tag, "ERROR MESSAGE: ${error.message}")71                                val errorMessage = getErrorMessage(response.statusCode)72                                delegate.onFailure(errorMessage)73                            }74                        }75                        is Result.Success -> {76                            val data = validateResponse(response)77                            delegate.onSuccess(data)78                        }79                    }80                }81    }82    fun upload(serverUrl: String, content: List<Pair<String, Any?>>?, files: Iterable<File>) {83        Fuel.upload(serverUrl, Method.POST, content)84                .sources { _, _ ->85                    files86                }87                .timeout(IServicesConstants.TIMEOUT)88                .response { request, response, result ->89                    Log.d(tag, "POST $serverUrl")90                    Log.d(tag, "Request: " + request.toString())91                    when (result) {92                        is Result.Failure -> {93                            val (_, error) = result94                            if (error != null) {95                                Log.e(tag, "STATUS CODE: ${response.statusCode}")96                                Log.e(tag, "ERROR MESSAGE: ${error.message}")97                                val errorMessage = getErrorMessage(response.statusCode)98                                delegate.onFailure(errorMessage)99                            }100                        }101                        is Result.Success -> {102                            val data = validateResponse(response)103                            delegate.onSuccess(data)104                        }105                    }106                }107    }108    fun delete(url: String) {109        Fuel.delete(url)110                .header("Content-Type" to "application/json")111                .timeout(IServicesConstants.TIMEOUT)112                .response { request, response, result ->113                    Log.d(tag, "DELETE $url")114                    Log.d(tag, "Request: " + request.toString())115                    when (result) {116                        is Result.Failure -> {117                            val (_, error) = result118                            if (error != null) {119                                Log.e(tag, "STATUS CODE: ${response.statusCode}")120                                Log.e(tag, "ERROR MESSAGE: ${error.message}")121                                val errorMessage = getErrorMessage(response.statusCode)122                                delegate.onFailure(errorMessage)123                            }124                        }125                        is Result.Success -> {126                            val data = validateResponse(response)127                            delegate.onSuccess(data)128                        }129                    }130                }131    }132    private fun getErrorMessage(responseCode: Int): String {133        return when (responseCode) {134            HttpURLConnection.HTTP_UNAUTHORIZED -> {135                context.getString(R.string.error_unauthorized) // 401136            }137            HttpURLConnection.HTTP_NOT_FOUND -> {138                context.getString(R.string.error_not_found) // 404139            }140            else -> context.getString(R.string.error_default)141        }142    }143    private fun validateResponse(response: Response): ArrayList<Any> {144        // Get response's status code145        val result = ArrayList<Any>()146        result.add(response.statusCode)147        try {148            // Get response data149            val inputStream = ByteArrayInputStream(response.data)150            val bufferedReader = BufferedReader(InputStreamReader(inputStream) as Reader?)151            var line = bufferedReader.readLine()152            val stringBuilder = StringBuilder()153            while (line != null) {154                stringBuilder.append(line)155                line = bufferedReader.readLine()156            }157            bufferedReader.close()158            parseResponse(result, stringBuilder.toString())159            Log.d(tag, "STATUS CODE: ${response.statusCode}")160            Log.d(tag, "RESPONSE: ${result[1]}")161        } catch (ex: JSONException) {162            Log.e(tag, "Attempting to decode server's response as JSONObject", ex)163        }164        return result165    }166    private fun parseResponse(result: ArrayList<Any>, data: String) {167        try {168            val response = JSONObject(data)169            result.add(response)170        } catch (ex: Exception) {171            Log.d(tag, "JSONArray cannot be converted to JSONObject")172            val response = JSONArray(data)173            result.add(response)174        }175    }176}...TestDelegate.kt
Source:TestDelegate.kt  
...45        assertNull(delegate, "Invalid Ark Delegate should be null")46        assertNull(error, "Error should be null")47    }48    @Test49    fun testGetForgingDelegates() {50        var apiReturned        = false51        var delegates: Array<Delegate>?  = null52        var error : FuelError? = null53        apiManager.getDelegates() { d, e ->54            delegates = d55            error = e56            apiReturned = true57        }58        await().atMost(10, TimeUnit.SECONDS).until { apiReturned == true }59        assertNotNull(delegates, "Valid Ark Delegate should not be null")60        assertNull(error, "Error should be null")61        val count : Int = delegates?.count() ?: 062        assertEquals(count, 51, "Delegate count should be 51, but was ${count}")63    }64    @Test65    fun testGetStandbyDelegates() {66        var apiReturned        = false67        var delegates: Array<Delegate>?  = null68        var error : FuelError? = null69        apiManager.getStandbyDelegates() { d, e ->70            delegates = d71            error = e72            apiReturned = true73        }74        await().atMost(10, TimeUnit.SECONDS).until { apiReturned == true }75        assertNotNull(delegates, "Valid Ark Delegate should not be null")76        assertNull(error, "Error should be null")77        val count : Int = delegates?.count() ?: 078        assertEquals(count, 51, "Delegate count should be 51, but was ${count}")79    }80    @Test81    fun testGetDelegatesWithOffset() {82        var apiReturned    = false83        var delegates: Array<Delegate>?  = null84        var error : FuelError? = null85        apiManager.getDelegates(50, 50) {d, e ->86            delegates = d87            error = e88            apiReturned = true89        }90        await().atMost(10, TimeUnit.SECONDS).until { apiReturned == true }91        assertNotNull(delegates, "Valid Ark Delegate with offset should not be null")92        assertNull(error, "Error should be null")93        val count : Int = delegates?.count() ?: 094        assertEquals(count, 50, "Delegate count should be 50, but was ${count}")95    }96    @Test97    fun testGetDelegatesWithLimit() {98        var apiReturned    = false99        var delegates: Array<Delegate>?  = null100        var error : FuelError? = null101        apiManager.getDelegates(20, 50) {d, e ->102            delegates = d103            error = e104            apiReturned = true105        }106        await().atMost(10, TimeUnit.SECONDS).until { apiReturned == true }107        assertNotNull(delegates, "Valid Ark Delegate with offset should not be null")108        assertNull(error, "Error should be null")109        val count : Int = delegates?.count() ?: 0110        assertEquals(count, 20, "Delegate count should be 20, but was ${count}")111    }112    @Test113    fun testVotersFromValidDelegate() {114        var apiReturned    = false115        var voters: Array<Voter>?  = null...GithubSearchActivity.kt
Source:GithubSearchActivity.kt  
...14import com.github.kittinunf.githubkotlin.model.GithubSearchResultItem15import com.github.kittinunf.githubkotlin.model.githubSearchResultItemsFromJsonArray16import fuel.httpGet17import org.json.JSONObject18import kotlin.properties.Delegates19import kotlinx.android.synthetic.activity_github_search.*20import kotlinx.android.synthetic.list_item_github_search.view.*21public class GithubSearchActivity : AppCompatActivity() {22    val layoutManager by Delegates.lazy { LinearLayoutManager(this) }23    val adapter = GithubSearchResultAdapter()24    override fun onCreate(savedInstanceState: Bundle?) {25        super.onCreate(savedInstanceState)26        setContentView(R.layout.activity_github_search)27        setUIRecyclerView()28        requestGithubSearchAPI()29    }30    fun setUIRecyclerView() {31        searchRecyclerview.setLayoutManager(layoutManager)32        searchRecyclerview.setAdapter(adapter)33    }34    fun requestGithubSearchAPI() {35        val params = hashMapOf("q" to "language:kotlin", "sort" to "stars", "order" to "desc")36        //request to github api37        "https://api.github.com/search/repositories".httpGet(params).responseString { request, response, either ->38            Log.d("API", request.toString())39            Log.d("API", response.toString())40            val (error, data) = either41            //do something when error is null42            if (error == null) {43                val json = JSONObject(data)44                val results = githubSearchResultItemsFromJsonArray(json.getJSONArray("items"))45                updateUI(results)46            } else {47                Log.e("API", "There is something wrong with API, ${error.toString()}")48            }49        }50    }51    fun updateUI(items: List<GithubSearchResultItem>) {52        adapter.searchResults = items53    }54    class SearchResultViewHolder(val view: View) : RecyclerView.ViewHolder(view) {55        var clickListener: ((View) -> Unit)? = null56        init {57            view.setOnClickListener {58                clickListener?.invoke(it)59            }60        }61    }62    inner class GithubSearchResultAdapter : RecyclerView.Adapter<SearchResultViewHolder>() {63        var searchResults by Delegates.observable(listOf<GithubSearchResultItem>()) { meta, old, new -> notifyDataSetChanged() }64        override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): SearchResultViewHolder? {65            val v = LayoutInflater.from(this@GithubSearchActivity).inflate(R.layout.list_item_github_search, parent, false)66            return SearchResultViewHolder(v)67        }68        override fun getItemCount(): Int = searchResults.count()69        override fun onBindViewHolder(viewHolder: SearchResultViewHolder, position: Int) {70            val item = searchResults[position]71            viewHolder.view.searchResultTitleText.setText(item.repoName)72            viewHolder.view.searchResultSubtitleText.setText(item.ownerName)73            viewHolder.view.searchResultDescriptionText.setText(item.repoDescription)74            viewHolder.view.searchResultStargazerCount.setText(item.stargazerCount.toString())75            viewHolder.clickListener = {76                val browseIntent = Intent(Intent.ACTION_VIEW, Uri.parse(item.htmlLink));77                startActivity(browseIntent)...Encoding.kt
Source:Encoding.kt  
...4import java.net.MalformedURLException5import java.net.URI6import java.net.URISyntaxException7import java.net.URL8import kotlin.properties.Delegates9class Encoding : Fuel.RequestConvertible {10    var requestType: Request.Type = Request.Type.REQUEST11    var httpMethod: Method by Delegates.notNull()12    var baseUrlString: String? = null13    var urlString: String by Delegates.notNull()14    var parameters: List<Pair<String, Any?>>? = null15    var encoder: (Method, String, List<Pair<String, Any?>>?) -> Request = { method, path, parameters ->16        var modifiedPath = path17        var data: String? = null18        val headerPairs: MutableMap<String, Any> = defaultHeaders()19        if (encodeParameterInUrl(method)) {20            var querySign = ""21            val queryParamString = queryFromParameters(parameters)22            if (queryParamString.isNotEmpty()) {23                if (path.count() > 0) {24                    querySign = if (path.last() == '?') "" else "?"25                }26            }27            modifiedPath += (querySign + queryParamString)...AudioCache.kt
Source:AudioCache.kt  
1package com.musicplayer.aow.delegates.data.cache2import android.os.Environment3import android.util.Log4import java.io.File5import java.io.FileOutputStream6import java.io.IOException7import java.io.InputStream8/**9 * Created by Arca on 4/1/2018.10 * https://github.com/kittinunf/Fuel11 * https://github.com/kittinunf/Fuse12 */13class AudioCache {14    fun saveToFile(data: ByteArray, name: String){15        try {16            //StorageUtil(Injection.provideContext()!!.applicationContext).byteArrayToFile(data, name)17            val file = File(Environment.getExternalStorageDirectory(), "musixplay/cache/.audio/$name.mxp")18            val fos = FileOutputStream(file)19            fos.write(data)20            fos.close()21        } catch (e: IOException) {22            Log.e("AudoCache Error", "Error write " + e)23            e.printStackTrace()24        }25    }26    fun readFromFile(name: String): ByteArray? {27        try {28            val file = File(Environment.getExternalStorageDirectory(), "musixplay/cache/.audio/$name.mxp")29            var inputStream: InputStream = file.inputStream()30            var inputString = inputStream.bufferedReader().use { it.readText()}31            return inputString.toByteArray()32        }catch (e: IOException){33            Log.e("AudoCache Error", "Error read")34            e.printStackTrace()35            return null36        }37    }38}...Delegates
Using AI Code Generation
1     . responseString ( Delegates . to ( object   :   ResponseHandler < String >   { 2         override   fun   success ( request :   Request ,   response :   Response ,   value :   String )   { 3             println ( value ) 4         } 5         override   fun   failure ( request :   Request ,   response :   Response ,   error :   FuelError )   { 6             println ( error ) 7         } 8     } ) )9     . responseString ( Delegates . to ( {   request ,   response ,   result   -> 10         val   ( data ,   error )   =   result 11         println ( data ) 12     } ) )13     . responseString ( Delegates . to ( {   request ,   response ,   result   -> 14         val   ( data ,   error )   =   result 15         println ( data ) 16     } ) )17     . responseString ( Delegates . to ( {   request ,   response ,   result   -> 18         val   ( data ,   error )   =   result 19         println ( data ) 20     } ) )21     . responseString ( Delegates . to ( {   request ,   response ,   result   -> 22         val   ( data ,   error )   =   result 23         println ( data ) 24     } ) )25     . responseString ( Delegates . to ( {   request ,   response ,   result   -> 26         val   ( data ,   error )Delegates
Using AI Code Generation
1println(result)2println(result)3println(result)4println(result)5println(result)6println(result)7println(result)8println(result)9println(result)10println(result)11println(result)Delegates
Using AI Code Generation
1when (result) {2is Result.Success -> {3val (data, _) = result4println(data)5}6is Result.Failure -> {7val ex = result.getException()8println(ex)9}10}11}12when (result) {13is Result.Success -> {14val (data, _) = result15println(data)16}17is Result.Failure -> {18val ex = result.getException()19println(ex)20}21}22}23when (result) {24is Result.Success -> {25val (data, _) = result26println(data)27}28is Result.Failure -> {29val ex = result.getException()30println(ex)31}32}33}34when (result) {35is Result.Success -> {36val (data, _) = result37println(data)38}39is Result.Failure -> {40val ex = result.getException()41println(ex)42}43}44}45when (result) {46is Result.Success -> {47val (data, _) = result48println(data)49}50is Result.Failure -> {51val ex = result.getException()52println(ex)53}54}55}56when (result) {57is Result.Success -> {58val (data, _) = result59println(data)60}61is Result.Failure -> {62val ex = result.getException()63println(ex)64}65}66}67when (result) {68is Result.Success -> {69val (data, _) = result70println(data)71}72is Result.Failure -> {Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
