Libraries
This is a collection of libraries that we use. If you have a certain use-case, first look here if a library was already chosen for it, as we do not want to duplicate libraries (= no multiple JSON libraries, etc.).
New libraries
When choosing new libraries, consult with the team or check that:
- it is maintained
- it supports Kotlin Multiplatform when your module has to support Kotlin Multiplatform
- it or its dependencies have no open security vulnerabilities (IntelliJ will warn you in the Gradle file)
Use cases
- HTTP server: Ktor server
- Swagger documentation: ktor-swagger-ui
- HTTP client: Ktor client
- Serialization:
- JSON serialization: kotlinx.serialization
- JSONPath: JsonPathKt
- JSON schema: json-schema-validator
- Dates: kotlinx.datetime
- SQL databases:
- Exposed (Kotlin-based), or
- SQLDelight (SQL-based)
- MongoDB:
- Logging:
- Klogging (Advanced)
- kotlin-logging (Basic)
- Crypto
- Hashing: See Hashing
- API documentation engine: dokka
- RPC: kotlinx.rpc
- Test coverage: Kover
- Benchmarking: kotlinx.benchmark
- Data science: dataframe
- Plotting: kandy
