A suite of libraries for desktop UI development with Compose Multiplatform toolkit.
Please see the documentation for respective libraries and the details on their contents and usage:
- Chords Core — a library that provides a basis for writing desktop applications with Compose by introducing high-level support for creating Compose applications, a notion of class-based components, as well as some basic components.
- Chords Proto — a library that works on top of Chords Core and provides domain-specific UI components that operate with models defined as Protobuf messages.
- Chords Proto Values — Protobuf messages and respective Kotlin extensions that complement the ones found in standard Spine libraries, and are required by the Chords Proto library.
- Chords Client — a library that works on top of Chords Proto and provides facilities and components that support server connectivity using the Spine Event Engine framework.
- Chords Codegen Runtime — an auxiliary library, which is technically needed at runtime by the Chords Proto and Chords Client libraries for them to be able to gain advantage of Chords code generation facilities which enrich the Protobuf message APIs.
The libraries have been tested to work in the following environment:
- JDK 11
- Kotlin 1.8.20
- Compose Multiplatform 1.5.12
- Spine Event Engine 1.9.0
- Gradle 6.9.4
The artifacts for all Chords libraries are published in the following
Maven repository:
https://europe-maven.pkg.dev/spine-event-engine/snapshots
First, register the repo where the libraries are published:
repositories {
maven("https://europe-maven.pkg.dev/spine-event-engine/snapshots")
}
Add dependencies to the required libraries as described in documentation of each respective library (referred to in the section above).
- Get the content of Git submodules as follows:
git submodule update --init --recursive
- Use JDK 11 for developing and running the project.
- Install the "detekt" addon for IntelliJ IDEA, and add the
quality/detekt-config.yml
file to the "Configuration files" section in on the IDEA's Settings > Tools > detekt page.
./gradlew clean build
The Chords libraries employ certain code generation facilities, which are meant to complement the Protobuf message APIs generated by the Protobuf compiler.
See codegen/plugins for more details.
Besides the modules for each of the library mentioned above, this repo contains the following key parts:
-
codegen-plugins — separate Gradle project with ProtoData plugins that generate Kotlin extensions for Proto messages.
See codegen/plugins/README.md for detail.
-
codegen-tests — tests that check the correctness of code generation.