diff --git a/CHANGELOG.md b/CHANGELOG.md
index d638f0c8..2ffcb3c9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,19 @@
## [Unreleased]
### Added
+
+### Changed
+
+### Deprecated
+
+### Removed
+
+### Fixed
+
+### Security
+
+## [0.2.0]
+### Added
- Server module
- Change collector
- Customizable accessors for colors
@@ -9,6 +22,9 @@
- Hexagon interface and GenericHexagon implementation (Box inherits Hexagon)
- Increased the default detail level for spheres and cones to 32
- Simple clipping for Solids in ThreeJs
+- Markdown module
+- Tables module
+
### Changed
- Vision does not implement ItemProvider anymore. Property changes are done via `getProperty`/`setProperty` and `property` delegate.
@@ -25,12 +41,16 @@
- Property listeners are not triggered if there are no changes.
- Feedback websocket connection in the client.
+
### Deprecated
### Removed
- Primary modules dependencies on UI
+
### Fixed
- Version conflicts
+
### Security
+
diff --git a/README.md b/README.md
index 6a77447e..eeeaab9e 100644
--- a/README.md
+++ b/README.md
@@ -16,9 +16,9 @@
* [Modules contained in this repository](#modules-contained-in-this-repository)
* [Visualization for External Systems](#visualization-for-external-systems)
* [Demonstrations](#demonstrations)
- * [Simple Example - Solid Showcase](#simple-example---solid-showcase)
- * [Full-Stack Application Example - Muon Monitor](#full-stack-application-example---muon-monitor-visualization)
- * [GDML Example](#gdml-example)
+ * [Simple Example - Solid Showcase](#simple-example---solid-showcase)
+ * [Full-Stack Application Example - Muon Monitor](#full-stack-application-example---muon-monitor-visualization)
+ * [GDML Example](#gdml-example)
## Introduction
@@ -61,7 +61,158 @@ To learn more about DataForge, please consult the following URLs:
## Modules contained in this repository
-$modules
+
+
+* ### [cern-root-loader](cern-root-loader)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [demo](demo)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [jupyter](jupyter)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [ui](ui)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [visionforge-core](visionforge-core)
+>
+>
+> **Maturity**: DEVELOPMENT
+
+
+* ### [visionforge-fx](visionforge-fx)
+>
+>
+> **Maturity**: PROTOTYPE
+
+
+* ### [visionforge-gdml](visionforge-gdml)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [visionforge-markdown](visionforge-markdown)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [visionforge-plotly](visionforge-plotly)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [visionforge-server](visionforge-server)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [visionforge-solid](visionforge-solid)
+>
+>
+> **Maturity**: DEVELOPMENT
+
+
+* ### [visionforge-tables](visionforge-tables)
+>
+>
+> **Maturity**: PROTOTYPE
+
+
+* ### [visionforge-threejs](visionforge-threejs)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [gdml](demo/gdml)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [js-playground](demo/js-playground)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [muon-monitor](demo/muon-monitor)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [playground](demo/playground)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [plotly-fx](demo/plotly-fx)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [sat-demo](demo/sat-demo)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [solid-showcase](demo/solid-showcase)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [visionforge-jupyter-gdml](jupyter/visionforge-jupyter-gdml)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [bootstrap](ui/bootstrap)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [react](ui/react)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [ring](ui/ring)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
+* ### [visionforge-threejs-server](visionforge-threejs/visionforge-threejs-server)
+>
+>
+> **Maturity**: EXPERIMENTAL
+
+
**Class diagram:**
diff --git a/cern-root-loader/README.md b/cern-root-loader/README.md
new file mode 100644
index 00000000..b032852d
--- /dev/null
+++ b/cern-root-loader/README.md
@@ -0,0 +1,4 @@
+# Module cern-root-loader
+
+
+
diff --git a/demo/README.md b/demo/README.md
new file mode 100644
index 00000000..e2a13c47
--- /dev/null
+++ b/demo/README.md
@@ -0,0 +1,4 @@
+# Module demo
+
+
+
diff --git a/demo/gdml/README.md b/demo/gdml/README.md
index 5c2a5abe..b9de634c 100644
--- a/demo/gdml/README.md
+++ b/demo/gdml/README.md
@@ -1,13 +1,4 @@
-### GDML Example
+# Module gdml
-Visualization example for geometry defined as GDML file.
-##### Building project
-To build the app, run `demo/gdml/Tasks/kotlin browser/jsBrowserDistribution` Gradle task, then
-drag-and-drop GDML file to the window to see visualization. For an example file, you can use
-`demo/gdml/src/jsMain/resources/cubes.gdml`.
-
-##### Example view:
-
-![](../../docs/images/gdml-demo.png)
diff --git a/demo/js-playground/README.md b/demo/js-playground/README.md
new file mode 100644
index 00000000..6b899a57
--- /dev/null
+++ b/demo/js-playground/README.md
@@ -0,0 +1,4 @@
+# Module js-playground
+
+
+
diff --git a/demo/muon-monitor/README.md b/demo/muon-monitor/README.md
index df95c968..74c935e4 100644
--- a/demo/muon-monitor/README.md
+++ b/demo/muon-monitor/README.md
@@ -1,33 +1,4 @@
+# Module muon-monitor
-### Muon Monitor Visualization
-This directory contains a full-stack application example built with `visionforge`.
-It is visualizing the
-[Muon Monitor](http://npm.mipt.ru/projects/physics.html#mounMonitor) experiment set-up,
-including experiment's geometry and events (particle tracks).
-#### Reusing code and going Full-Stack with Kotlin Multiplatform
-
-The application includes both server back-end generating events, as well as client
-visualization front-end.
-
-As is common for Kotlin multiplatform projects, the code base of this simple application
-is put in the following main directories:
-* `commonMain` - common code, used by both JS client and JVM server. For example, the `Monitor`
-object describes general geometry definitions needed in all parts of the application.
-* `jsMain` - JavaScript client code. It performs visualization and reads events from the server.
-* `jvmMain` - JVM server code. It runs `ktor` HTTP server, responding with event data when
-client requests them.
-
-Note that in a more traditional approach when client and server are developed separately
-and possibly using different languages, there would be no common code and benefits associated
-with it.
-
-##### Building project
-
-To run full-stack Muon Monitor Visualization application (both JVM server and Web browser front-end),
-run `demo/muon-monitor/Tasks/application/run` task.
-
-##### Example view:
-
-![](../../docs/images/muon-monitor.png)
diff --git a/demo/playground/README.md b/demo/playground/README.md
new file mode 100644
index 00000000..d2c8bc02
--- /dev/null
+++ b/demo/playground/README.md
@@ -0,0 +1,4 @@
+# Module playground
+
+
+
diff --git a/demo/playground/src/jvmMain/kotlin/gdmlCurve.kt b/demo/playground/src/jvmMain/kotlin/gdmlCurve.kt
index 81facd71..70827a2d 100644
--- a/demo/playground/src/jvmMain/kotlin/gdmlCurve.kt
+++ b/demo/playground/src/jvmMain/kotlin/gdmlCurve.kt
@@ -1,3 +1,5 @@
+@file:Suppress("UNUSED_VARIABLE")
+
package space.kscience.visionforge.examples
import space.kscience.gdml.*
diff --git a/demo/plotly-fx/README.md b/demo/plotly-fx/README.md
new file mode 100644
index 00000000..d8679f77
--- /dev/null
+++ b/demo/plotly-fx/README.md
@@ -0,0 +1,4 @@
+# Module plotly-fx
+
+
+
diff --git a/demo/sat-demo/README.md b/demo/sat-demo/README.md
new file mode 100644
index 00000000..ea15abe0
--- /dev/null
+++ b/demo/sat-demo/README.md
@@ -0,0 +1,4 @@
+# Module sat-demo
+
+
+
diff --git a/demo/solid-showcase/README.md b/demo/solid-showcase/README.md
index f8771e13..059597ef 100644
--- a/demo/solid-showcase/README.md
+++ b/demo/solid-showcase/README.md
@@ -1,19 +1,4 @@
-### Spatial Showcase
+# Module solid-showcase
-Contains a simple demonstration with a grid including a few shapes that you can rotate, move camera, and so on.
-Some shapes will also periodically change their color and visibility.
-##### Building project
-
-To see the JS demo: run `demo/solid-showcase/Tasks/kotlin browser/jsBrowserRun` Gradle task, then open
-`build/distribuions/solid-showcase-js-0.1.3-dev/index.html` file in your browser.
-To see Java FX demo, run `demo/spatial-showcase/Tasks/application/run` Gradle task, or `main()` from `FXDemoApp.kt`.
-
-##### Example view for JS:
-
-![](../../docs/images/spatial-showcase.png)
-
-##### Example view for Java FX:
-
-![](../../docs/images/spatial-showcase-FX.png)
diff --git a/docs/templates/ARTIFACT-TEMPLATE.md b/docs/templates/ARTIFACT-TEMPLATE.md
index 91e09096..5d397423 100644
--- a/docs/templates/ARTIFACT-TEMPLATE.md
+++ b/docs/templates/ARTIFACT-TEMPLATE.md
@@ -2,17 +2,6 @@
The Maven coordinates of this project are `${group}:${name}:${version}`.
-**Gradle Groovy:**
-```gradle
-repositories {
- maven { url 'https://repo.kotlin.link' }
- mavenCentral()
-}
-
-dependencies {
- implementation '${group}:${name}:${version}'
-}
-```
**Gradle Kotlin DSL:**
```kotlin
repositories {
diff --git a/docs/templates/README-TEMPLATE.md b/docs/templates/README-TEMPLATE.md
index 775c2b12..04ab1752 100644
--- a/docs/templates/README-TEMPLATE.md
+++ b/docs/templates/README-TEMPLATE.md
@@ -61,7 +61,7 @@ To learn more about DataForge, please consult the following URLs:
## Modules contained in this repository
-$modules
+${modules}
**Class diagram:**
@@ -132,6 +132,21 @@ Visualization example for geometry defined as GDML file.
![](docs/images/gdml-demo.png)
+## Stability and documentation
+
+VisionForge is a modular library. Different modules provide different features with different API stability guarantees. All core modules are released with the same version, but with different API change policy. The features are described in module definitions below. The module stability could have the following levels:
+
+* **PROTOTYPE**. On this level there are no compatibility guarantees. All methods and classes form those modules could break any moment. You can still use it, but be sure to fix the specific version.
+* **EXPERIMENTAL**. The general API is decided, but some changes could be made. Volatile API is marked
+ with `@DFExperimental` or other stability warning annotations.
+* **DEVELOPMENT**. API breaking generally follows semantic versioning ideology. There could be changes in minor
+ versions, but not in patch versions. API is protected with [binary-compatibility-validator](https://github.com/Kotlin/binary-compatibility-validator) tool.
+* **STABLE**. The API stabilized. Breaking changes are allowed only in major releases.
+
+Additionally, one should note that the VisionForge Json format impacts the reproducibility of stored vision fragments. There should not be any breaks of the format between major releases. All problems should be reported.
+
+The documentation for the project is a work in progress. Please report any issues with missing, vague or wrong information. The contributions into documentation are quite welcome.
+
## Thanks and references
The original three.js bindings were made by [Lars Ivar Hatledal](https://github.com/markaren), but the project is discontinued right now.
diff --git a/gradle.properties b/gradle.properties
index fbaacb05..e89e285b 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -9,4 +9,4 @@ org.gradle.parallel=true
publishing.github=false
publishing.sonatype=false
-toolsVersion=0.10.9-kotlin-1.6.10
\ No newline at end of file
+toolsVersion=0.11.0-kotlin-1.6.10
\ No newline at end of file
diff --git a/jupyter/README.md b/jupyter/README.md
new file mode 100644
index 00000000..433d3042
--- /dev/null
+++ b/jupyter/README.md
@@ -0,0 +1,4 @@
+# Module jupyter
+
+Common visionforge jupyter module
+
diff --git a/jupyter/visionforge-jupyter-gdml/README.md b/jupyter/visionforge-jupyter-gdml/README.md
new file mode 100644
index 00000000..cae8af86
--- /dev/null
+++ b/jupyter/visionforge-jupyter-gdml/README.md
@@ -0,0 +1,32 @@
+# Module visionforge-jupyter-gdml
+
+Jupyter api artifact for GDML rendering
+
+## Usage
+
+## Artifact:
+
+The Maven coordinates of this project are `space.kscience:visionforge-jupyter-gdml:0.2.0`.
+
+**Gradle Groovy:**
+```groovy
+repositories {
+ maven { url 'https://repo.kotlin.link' }
+ mavenCentral()
+}
+
+dependencies {
+ implementation 'space.kscience:visionforge-jupyter-gdml:0.2.0'
+}
+```
+**Gradle Kotlin DSL:**
+```kotlin
+repositories {
+ maven("https://repo.kotlin.link")
+ mavenCentral()
+}
+
+dependencies {
+ implementation("space.kscience:visionforge-jupyter-gdml:0.2.0")
+}
+```
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 3ae9f6f9..9fe0138c 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -8,7 +8,7 @@ pluginManagement {
val toolsVersion: String by extra
repositories {
- mavenLocal()
+ //mavenLocal()
maven("https://repo.kotlin.link")
mavenCentral()
gradlePluginPortal()
diff --git a/ui/README.md b/ui/README.md
new file mode 100644
index 00000000..ec08d176
--- /dev/null
+++ b/ui/README.md
@@ -0,0 +1,4 @@
+# Module ui
+
+
+
diff --git a/ui/bootstrap/README.md b/ui/bootstrap/README.md
new file mode 100644
index 00000000..0cc57002
--- /dev/null
+++ b/ui/bootstrap/README.md
@@ -0,0 +1,4 @@
+# Module bootstrap
+
+
+
diff --git a/ui/react/README.md b/ui/react/README.md
new file mode 100644
index 00000000..9f862213
--- /dev/null
+++ b/ui/react/README.md
@@ -0,0 +1,4 @@
+# Module react
+
+
+
diff --git a/ui/ring/README.md b/ui/ring/README.md
new file mode 100644
index 00000000..6cdcbb60
--- /dev/null
+++ b/ui/ring/README.md
@@ -0,0 +1,4 @@
+# Module ring
+
+
+
diff --git a/visionforge-core/README.md b/visionforge-core/README.md
new file mode 100644
index 00000000..2f9e6889
--- /dev/null
+++ b/visionforge-core/README.md
@@ -0,0 +1,32 @@
+# Module visionforge-core
+
+
+
+## Usage
+
+## Artifact:
+
+The Maven coordinates of this project are `space.kscience:visionforge-core:0.2.0`.
+
+**Gradle Groovy:**
+```groovy
+repositories {
+ maven { url 'https://repo.kotlin.link' }
+ mavenCentral()
+}
+
+dependencies {
+ implementation 'space.kscience:visionforge-core:0.2.0'
+}
+```
+**Gradle Kotlin DSL:**
+```kotlin
+repositories {
+ maven("https://repo.kotlin.link")
+ mavenCentral()
+}
+
+dependencies {
+ implementation("space.kscience:visionforge-core:0.2.0")
+}
+```
diff --git a/visionforge-fx/README.md b/visionforge-fx/README.md
new file mode 100644
index 00000000..2cef5e81
--- /dev/null
+++ b/visionforge-fx/README.md
@@ -0,0 +1,32 @@
+# Module visionforge-fx
+
+
+
+## Usage
+
+## Artifact:
+
+The Maven coordinates of this project are `space.kscience:visionforge-fx:0.2.0`.
+
+**Gradle Groovy:**
+```groovy
+repositories {
+ maven { url 'https://repo.kotlin.link' }
+ mavenCentral()
+}
+
+dependencies {
+ implementation 'space.kscience:visionforge-fx:0.2.0'
+}
+```
+**Gradle Kotlin DSL:**
+```kotlin
+repositories {
+ maven("https://repo.kotlin.link")
+ mavenCentral()
+}
+
+dependencies {
+ implementation("space.kscience:visionforge-fx:0.2.0")
+}
+```
diff --git a/visionforge-gdml/README.md b/visionforge-gdml/README.md
new file mode 100644
index 00000000..135a369e
--- /dev/null
+++ b/visionforge-gdml/README.md
@@ -0,0 +1,32 @@
+# Module visionforge-gdml
+
+
+
+## Usage
+
+## Artifact:
+
+The Maven coordinates of this project are `space.kscience:visionforge-gdml:0.2.0`.
+
+**Gradle Groovy:**
+```groovy
+repositories {
+ maven { url 'https://repo.kotlin.link' }
+ mavenCentral()
+}
+
+dependencies {
+ implementation 'space.kscience:visionforge-gdml:0.2.0'
+}
+```
+**Gradle Kotlin DSL:**
+```kotlin
+repositories {
+ maven("https://repo.kotlin.link")
+ mavenCentral()
+}
+
+dependencies {
+ implementation("space.kscience:visionforge-gdml:0.2.0")
+}
+```
diff --git a/visionforge-markdown/README.md b/visionforge-markdown/README.md
new file mode 100644
index 00000000..f43c742b
--- /dev/null
+++ b/visionforge-markdown/README.md
@@ -0,0 +1,32 @@
+# Module visionforge-markdown
+
+
+
+## Usage
+
+## Artifact:
+
+The Maven coordinates of this project are `space.kscience:visionforge-markdown:0.2.0`.
+
+**Gradle Groovy:**
+```groovy
+repositories {
+ maven { url 'https://repo.kotlin.link' }
+ mavenCentral()
+}
+
+dependencies {
+ implementation 'space.kscience:visionforge-markdown:0.2.0'
+}
+```
+**Gradle Kotlin DSL:**
+```kotlin
+repositories {
+ maven("https://repo.kotlin.link")
+ mavenCentral()
+}
+
+dependencies {
+ implementation("space.kscience:visionforge-markdown:0.2.0")
+}
+```
diff --git a/visionforge-plotly/README.md b/visionforge-plotly/README.md
new file mode 100644
index 00000000..f8a03891
--- /dev/null
+++ b/visionforge-plotly/README.md
@@ -0,0 +1,32 @@
+# Module visionforge-plotly
+
+
+
+## Usage
+
+## Artifact:
+
+The Maven coordinates of this project are `space.kscience:visionforge-plotly:0.2.0`.
+
+**Gradle Groovy:**
+```groovy
+repositories {
+ maven { url 'https://repo.kotlin.link' }
+ mavenCentral()
+}
+
+dependencies {
+ implementation 'space.kscience:visionforge-plotly:0.2.0'
+}
+```
+**Gradle Kotlin DSL:**
+```kotlin
+repositories {
+ maven("https://repo.kotlin.link")
+ mavenCentral()
+}
+
+dependencies {
+ implementation("space.kscience:visionforge-plotly:0.2.0")
+}
+```
diff --git a/visionforge-server/README.md b/visionforge-server/README.md
new file mode 100644
index 00000000..0ac4c198
--- /dev/null
+++ b/visionforge-server/README.md
@@ -0,0 +1,32 @@
+# Module visionforge-server
+
+
+
+## Usage
+
+## Artifact:
+
+The Maven coordinates of this project are `space.kscience:visionforge-server:0.2.0`.
+
+**Gradle Groovy:**
+```groovy
+repositories {
+ maven { url 'https://repo.kotlin.link' }
+ mavenCentral()
+}
+
+dependencies {
+ implementation 'space.kscience:visionforge-server:0.2.0'
+}
+```
+**Gradle Kotlin DSL:**
+```kotlin
+repositories {
+ maven("https://repo.kotlin.link")
+ mavenCentral()
+}
+
+dependencies {
+ implementation("space.kscience:visionforge-server:0.2.0")
+}
+```
diff --git a/visionforge-solid/README.md b/visionforge-solid/README.md
new file mode 100644
index 00000000..cbf4073b
--- /dev/null
+++ b/visionforge-solid/README.md
@@ -0,0 +1,32 @@
+# Module visionforge-solid
+
+
+
+## Usage
+
+## Artifact:
+
+The Maven coordinates of this project are `space.kscience:visionforge-solid:0.2.0`.
+
+**Gradle Groovy:**
+```groovy
+repositories {
+ maven { url 'https://repo.kotlin.link' }
+ mavenCentral()
+}
+
+dependencies {
+ implementation 'space.kscience:visionforge-solid:0.2.0'
+}
+```
+**Gradle Kotlin DSL:**
+```kotlin
+repositories {
+ maven("https://repo.kotlin.link")
+ mavenCentral()
+}
+
+dependencies {
+ implementation("space.kscience:visionforge-solid:0.2.0")
+}
+```
diff --git a/visionforge-tables/README.md b/visionforge-tables/README.md
new file mode 100644
index 00000000..6cdbd356
--- /dev/null
+++ b/visionforge-tables/README.md
@@ -0,0 +1,32 @@
+# Module visionforge-tables
+
+
+
+## Usage
+
+## Artifact:
+
+The Maven coordinates of this project are `space.kscience:visionforge-tables:0.2.0`.
+
+**Gradle Groovy:**
+```groovy
+repositories {
+ maven { url 'https://repo.kotlin.link' }
+ mavenCentral()
+}
+
+dependencies {
+ implementation 'space.kscience:visionforge-tables:0.2.0'
+}
+```
+**Gradle Kotlin DSL:**
+```kotlin
+repositories {
+ maven("https://repo.kotlin.link")
+ mavenCentral()
+}
+
+dependencies {
+ implementation("space.kscience:visionforge-tables:0.2.0")
+}
+```
diff --git a/visionforge-threejs/README.md b/visionforge-threejs/README.md
new file mode 100644
index 00000000..98c13b7a
--- /dev/null
+++ b/visionforge-threejs/README.md
@@ -0,0 +1,32 @@
+# Module visionforge-threejs
+
+
+
+## Usage
+
+## Artifact:
+
+The Maven coordinates of this project are `space.kscience:visionforge-threejs:0.2.0`.
+
+**Gradle Groovy:**
+```groovy
+repositories {
+ maven { url 'https://repo.kotlin.link' }
+ mavenCentral()
+}
+
+dependencies {
+ implementation 'space.kscience:visionforge-threejs:0.2.0'
+}
+```
+**Gradle Kotlin DSL:**
+```kotlin
+repositories {
+ maven("https://repo.kotlin.link")
+ mavenCentral()
+}
+
+dependencies {
+ implementation("space.kscience:visionforge-threejs:0.2.0")
+}
+```
diff --git a/visionforge-threejs/visionforge-threejs-server/README.md b/visionforge-threejs/visionforge-threejs-server/README.md
new file mode 100644
index 00000000..0b9d9e4e
--- /dev/null
+++ b/visionforge-threejs/visionforge-threejs-server/README.md
@@ -0,0 +1,32 @@
+# Module visionforge-threejs-server
+
+
+
+## Usage
+
+## Artifact:
+
+The Maven coordinates of this project are `space.kscience:visionforge-threejs-server:0.2.0`.
+
+**Gradle Groovy:**
+```groovy
+repositories {
+ maven { url 'https://repo.kotlin.link' }
+ mavenCentral()
+}
+
+dependencies {
+ implementation 'space.kscience:visionforge-threejs-server:0.2.0'
+}
+```
+**Gradle Kotlin DSL:**
+```kotlin
+repositories {
+ maven("https://repo.kotlin.link")
+ mavenCentral()
+}
+
+dependencies {
+ implementation("space.kscience:visionforge-threejs-server:0.2.0")
+}
+```