You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vk...@apache.org on 2020/12/29 18:10:47 UTC

[ignite-3] branch ignite-3.0.0-alpha1 updated (e309428 -> e9e68c7)

This is an automated email from the ASF dual-hosted git repository.

vkulichenko pushed a change to branch ignite-3.0.0-alpha1
in repository https://gitbox.apache.org/repos/asf/ignite-3.git.


    from e309428  Fixed Maven deployment
     new f0ebec6  IGNITE-13740: Create a "Getting Started" documentation page for Ignite 3.0 (#20)
     new e9e68c7  ignite-13740: fixing the navigation menu for the docs

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 docs/.gitignore                                    |   5 +
 docs/Gemfile                                       |  14 +
 docs/README.adoc                                   | 252 ++++++++++++++
 docs/_config.yml                                   |  46 +++
 .../simplelogger.properties => docs/_data/toc.yaml |  10 +-
 docs/_docs/includes/prereqs.adoc                   |  19 ++
 docs/_docs/index.adoc                              |  40 +++
 docs/_docs/installation/installing-using-exe.adoc  |  37 ++
 docs/_docs/quick-start/getting-started-guide.adoc  |  89 +++++
 .../_includes/copyright.html                       |  17 +-
 .../_includes/footer.html                          |  17 +-
 .../_includes/header.html                          |  31 +-
 docs/_includes/left-nav.html                       |  88 +++++
 .../_includes/right-nav.html                       |  16 +-
 .../_includes/section-toc.html                     |  26 +-
 docs/_includes/toc.html                            |  63 ++++
 docs/_layouts/default.html                         |  72 ++++
 .../default-config.xml => docs/_layouts/doc.html   |  30 +-
 .../default-config.xml => docs/_layouts/toc.html   |  29 +-
 docs/_plugins/asciidoctor-extensions.rb            | 180 ++++++++++
 docs/_sass/callouts.scss                           |  75 +++++
 docs/_sass/code.scss                               | 115 +++++++
 docs/_sass/docs.scss                               | 238 +++++++++++++
 docs/_sass/footer.scss                             |  48 +++
 docs/_sass/github.scss                             | 223 ++++++++++++
 docs/_sass/header.scss                             | 374 +++++++++++++++++++++
 docs/_sass/layout.scss                             |  45 +++
 docs/_sass/left-nav.scss                           | 109 ++++++
 docs/_sass/right-nav.scss                          |  73 ++++
 docs/_sass/rouge-base16-solarized.scss             |  99 ++++++
 docs/_sass/text.scss                               |  62 ++++
 docs/_sass/variables.scss                          |  33 ++
 docs/assets/css/asciidoc-pygments.css              |  59 ++++
 .../assets/css/docs.scss                           |   8 +-
 .../assets/css/styles.scss                         |  17 +-
 docs/assets/images/apple-blob.svg                  |  16 +
 docs/assets/images/arrow-down-white.svg            |   3 +
 docs/assets/images/arrow-down.svg                  |   3 +
 docs/assets/images/background-lines.svg            |  54 +++
 docs/assets/images/cancel.svg                      |  11 +
 docs/assets/images/checkmark-green.svg             |   3 +
 docs/assets/images/copy-icon.svg                   |   6 +
 docs/assets/images/cpp.svg                         |   9 +
 docs/assets/images/dev-internal-bg.jpg             | Bin 0 -> 23014 bytes
 docs/assets/images/dotnet.svg                      |   9 +
 docs/assets/images/edition-ce.svg                  |  16 +
 docs/assets/images/edition-ee.svg                  |  25 ++
 docs/assets/images/edition-ue.svg                  |  28 ++
 docs/assets/images/events-nav-arrow.svg            |   3 +
 docs/assets/images/feature-easy-installation.svg   |  28 ++
 docs/assets/images/feature-fast.svg                |  16 +
 docs/assets/images/feature-reliable.svg            |  25 ++
 docs/assets/images/github-gray.svg                 |   3 +
 docs/assets/images/github-white.svg                |   3 +
 docs/assets/images/glowing-box.svg                 | 170 ++++++++++
 docs/assets/images/integrations/hibernate.svg      |   6 +
 docs/assets/images/integrations/kafka.svg          |   3 +
 docs/assets/images/integrations/more.svg           |  18 +
 docs/assets/images/integrations/oracle.svg         |   3 +
 docs/assets/images/integrations/osgi.svg           |  17 +
 docs/assets/images/integrations/spark.svg          |   7 +
 docs/assets/images/integrations/spring.svg         |   3 +
 docs/assets/images/java.svg                        |   9 +
 docs/assets/images/left-nav-arrow.svg              |   3 +
 docs/assets/images/lines-bg-1.svg                  |  54 +++
 docs/assets/images/lines-bg-2.svg                  |  54 +++
 docs/assets/images/lines-bg-3.svg                  |  54 +++
 docs/assets/images/lines-bg-4.svg                  |  54 +++
 docs/assets/images/menu-icon.svg                   |   3 +
 docs/assets/images/mousepad-blob.svg               |   9 +
 ...piece-of-paper-with-folded-top-right-corner.svg | 117 +++++++
 docs/assets/images/scala.svg                       |  31 ++
 docs/assets/images/search.svg                      |  15 +
 docs/assets/images/violent-blob.svg                |  28 ++
 docs/assets/images/watermelon-blob.svg             |   9 +
 docs/assets/js/anchor.min.js                       |   9 +
 docs/assets/js/code-copy-to-clipboard.js           |  70 ++++
 docs/assets/js/code-tabs.js                        | 155 +++++++++
 docs/assets/js/docs-menu.js                        |  64 ++++
 docs/assets/js/index.js                            |  51 +++
 docs/assets/js/page-nav.js                         |  37 ++
 docs/assets/js/top-navigation.js                   |  92 +++++
 docs/favicon.ico                                   | Bin 0 -> 9780 bytes
 .../resources/ignite.properties => docs/run.sh     |   7 +-
 84 files changed, 3972 insertions(+), 100 deletions(-)
 create mode 100644 docs/.gitignore
 create mode 100644 docs/Gemfile
 create mode 100644 docs/README.adoc
 create mode 100644 docs/_config.yml
 copy modules/ignite-runner/src/main/resources/simplelogger.properties => docs/_data/toc.yaml (81%)
 create mode 100644 docs/_docs/includes/prereqs.adoc
 create mode 100644 docs/_docs/index.adoc
 create mode 100644 docs/_docs/installation/installing-using-exe.adoc
 create mode 100644 docs/_docs/quick-start/getting-started-guide.adoc
 copy modules/cli/src/main/resources/default-config.xml => docs/_includes/copyright.html (62%)
 copy modules/cli/src/main/resources/default-config.xml => docs/_includes/footer.html (62%)
 copy modules/cli/src/main/resources/default-config.xml => docs/_includes/header.html (50%)
 create mode 100644 docs/_includes/left-nav.html
 copy modules/cli/src/main/resources/default-config.xml => docs/_includes/right-nav.html (62%)
 copy modules/cli/src/main/resources/default-config.xml => docs/_includes/section-toc.html (62%)
 create mode 100644 docs/_includes/toc.html
 create mode 100644 docs/_layouts/default.html
 copy modules/cli/src/main/resources/default-config.xml => docs/_layouts/doc.html (56%)
 copy modules/cli/src/main/resources/default-config.xml => docs/_layouts/toc.html (60%)
 create mode 100644 docs/_plugins/asciidoctor-extensions.rb
 create mode 100644 docs/_sass/callouts.scss
 create mode 100644 docs/_sass/code.scss
 create mode 100644 docs/_sass/docs.scss
 create mode 100644 docs/_sass/footer.scss
 create mode 100644 docs/_sass/github.scss
 create mode 100644 docs/_sass/header.scss
 create mode 100644 docs/_sass/layout.scss
 create mode 100644 docs/_sass/left-nav.scss
 create mode 100644 docs/_sass/right-nav.scss
 create mode 100644 docs/_sass/rouge-base16-solarized.scss
 create mode 100644 docs/_sass/text.scss
 create mode 100644 docs/_sass/variables.scss
 create mode 100644 docs/assets/css/asciidoc-pygments.css
 copy modules/cli-common/src/main/java/org/apache/ignite/cli/common/IgniteCommand.java => docs/assets/css/docs.scss (91%)
 copy modules/cli-common/src/main/java/org/apache/ignite/cli/common/IgniteCommand.java => docs/assets/css/styles.scss (78%)
 create mode 100644 docs/assets/images/apple-blob.svg
 create mode 100644 docs/assets/images/arrow-down-white.svg
 create mode 100644 docs/assets/images/arrow-down.svg
 create mode 100644 docs/assets/images/background-lines.svg
 create mode 100644 docs/assets/images/cancel.svg
 create mode 100644 docs/assets/images/checkmark-green.svg
 create mode 100644 docs/assets/images/copy-icon.svg
 create mode 100644 docs/assets/images/cpp.svg
 create mode 100644 docs/assets/images/dev-internal-bg.jpg
 create mode 100644 docs/assets/images/dotnet.svg
 create mode 100644 docs/assets/images/edition-ce.svg
 create mode 100644 docs/assets/images/edition-ee.svg
 create mode 100644 docs/assets/images/edition-ue.svg
 create mode 100644 docs/assets/images/events-nav-arrow.svg
 create mode 100644 docs/assets/images/feature-easy-installation.svg
 create mode 100644 docs/assets/images/feature-fast.svg
 create mode 100644 docs/assets/images/feature-reliable.svg
 create mode 100644 docs/assets/images/github-gray.svg
 create mode 100644 docs/assets/images/github-white.svg
 create mode 100644 docs/assets/images/glowing-box.svg
 create mode 100644 docs/assets/images/integrations/hibernate.svg
 create mode 100644 docs/assets/images/integrations/kafka.svg
 create mode 100644 docs/assets/images/integrations/more.svg
 create mode 100644 docs/assets/images/integrations/oracle.svg
 create mode 100644 docs/assets/images/integrations/osgi.svg
 create mode 100644 docs/assets/images/integrations/spark.svg
 create mode 100644 docs/assets/images/integrations/spring.svg
 create mode 100644 docs/assets/images/java.svg
 create mode 100644 docs/assets/images/left-nav-arrow.svg
 create mode 100644 docs/assets/images/lines-bg-1.svg
 create mode 100644 docs/assets/images/lines-bg-2.svg
 create mode 100644 docs/assets/images/lines-bg-3.svg
 create mode 100644 docs/assets/images/lines-bg-4.svg
 create mode 100644 docs/assets/images/menu-icon.svg
 create mode 100644 docs/assets/images/mousepad-blob.svg
 create mode 100644 docs/assets/images/piece-of-paper-with-folded-top-right-corner.svg
 create mode 100644 docs/assets/images/scala.svg
 create mode 100644 docs/assets/images/search.svg
 create mode 100644 docs/assets/images/violent-blob.svg
 create mode 100644 docs/assets/images/watermelon-blob.svg
 create mode 100644 docs/assets/js/anchor.min.js
 create mode 100644 docs/assets/js/code-copy-to-clipboard.js
 create mode 100644 docs/assets/js/code-tabs.js
 create mode 100644 docs/assets/js/docs-menu.js
 create mode 100644 docs/assets/js/index.js
 create mode 100644 docs/assets/js/page-nav.js
 create mode 100644 docs/assets/js/top-navigation.js
 create mode 100644 docs/favicon.ico
 copy modules/ignite-runner/src/main/resources/ignite.properties => docs/run.sh (89%)


[ignite-3] 02/02: ignite-13740: fixing the navigation menu for the docs

Posted by vk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vkulichenko pushed a commit to branch ignite-3.0.0-alpha1
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit e9e68c746c962109c50ed4f42444740802c27b23
Author: Denis Magda <dm...@gridgain.com>
AuthorDate: Tue Dec 29 09:01:51 2020 -0800

    ignite-13740: fixing the navigation menu for the docs
---
 docs/_data/toc.yaml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/_data/toc.yaml b/docs/_data/toc.yaml
index 55b8a91..8cfc052 100644
--- a/docs/_data/toc.yaml
+++ b/docs/_data/toc.yaml
@@ -15,7 +15,7 @@
 - title: Documentation Overview
   url: index
 - title: Getting Started Guide
-  url: getting-started-guide
+  url: quick-start/getting-started-guide
 - title: Installation
-  url: installing-using-exe
+  url: installation/installing-using-exe
 


[ignite-3] 01/02: IGNITE-13740: Create a "Getting Started" documentation page for Ignite 3.0 (#20)

Posted by vk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vkulichenko pushed a commit to branch ignite-3.0.0-alpha1
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit f0ebec683619909b0d4770a4f319b5a5ca720651
Author: Nikita Safonov <73...@users.noreply.github.com>
AuthorDate: Tue Dec 29 19:52:13 2020 +0300

    IGNITE-13740: Create a "Getting Started" documentation page for Ignite 3.0 (#20)
    
    * Fixed Maven deployment
    
    * IGNITE-13740: Create a "Getting Started" documentation page for Ignite 3.0
    
    * IGNITE-13740: Updated version number
    
    Co-authored-by: Valentin Kulichenko <va...@gmail.com>
---
 docs/.gitignore                                    |   5 +
 docs/Gemfile                                       |  14 +
 docs/README.adoc                                   | 252 ++++++++++++++
 docs/_config.yml                                   |  46 +++
 docs/_data/toc.yaml                                |  21 ++
 docs/_docs/includes/prereqs.adoc                   |  19 ++
 docs/_docs/index.adoc                              |  40 +++
 docs/_docs/installation/installing-using-exe.adoc  |  37 ++
 docs/_docs/quick-start/getting-started-guide.adoc  |  89 +++++
 docs/_includes/copyright.html                      |  22 ++
 docs/_includes/footer.html                         |  20 ++
 docs/_includes/header.html                         |  36 ++
 docs/_includes/left-nav.html                       |  88 +++++
 docs/_includes/right-nav.html                      |  21 ++
 docs/_includes/section-toc.html                    |  31 ++
 docs/_includes/toc.html                            |  63 ++++
 docs/_layouts/default.html                         |  72 ++++
 docs/_layouts/doc.html                             |  33 ++
 docs/_layouts/toc.html                             |  32 ++
 docs/_plugins/asciidoctor-extensions.rb            | 180 ++++++++++
 docs/_sass/callouts.scss                           |  75 +++++
 docs/_sass/code.scss                               | 115 +++++++
 docs/_sass/docs.scss                               | 238 +++++++++++++
 docs/_sass/footer.scss                             |  48 +++
 docs/_sass/github.scss                             | 223 ++++++++++++
 docs/_sass/header.scss                             | 374 +++++++++++++++++++++
 docs/_sass/layout.scss                             |  45 +++
 docs/_sass/left-nav.scss                           | 109 ++++++
 docs/_sass/right-nav.scss                          |  73 ++++
 docs/_sass/rouge-base16-solarized.scss             |  99 ++++++
 docs/_sass/text.scss                               |  62 ++++
 docs/_sass/variables.scss                          |  33 ++
 docs/assets/css/asciidoc-pygments.css              |  59 ++++
 docs/assets/css/docs.scss                          |  21 ++
 docs/assets/css/styles.scss                        |  30 ++
 docs/assets/images/apple-blob.svg                  |  16 +
 docs/assets/images/arrow-down-white.svg            |   3 +
 docs/assets/images/arrow-down.svg                  |   3 +
 docs/assets/images/background-lines.svg            |  54 +++
 docs/assets/images/cancel.svg                      |  11 +
 docs/assets/images/checkmark-green.svg             |   3 +
 docs/assets/images/copy-icon.svg                   |   6 +
 docs/assets/images/cpp.svg                         |   9 +
 docs/assets/images/dev-internal-bg.jpg             | Bin 0 -> 23014 bytes
 docs/assets/images/dotnet.svg                      |   9 +
 docs/assets/images/edition-ce.svg                  |  16 +
 docs/assets/images/edition-ee.svg                  |  25 ++
 docs/assets/images/edition-ue.svg                  |  28 ++
 docs/assets/images/events-nav-arrow.svg            |   3 +
 docs/assets/images/feature-easy-installation.svg   |  28 ++
 docs/assets/images/feature-fast.svg                |  16 +
 docs/assets/images/feature-reliable.svg            |  25 ++
 docs/assets/images/github-gray.svg                 |   3 +
 docs/assets/images/github-white.svg                |   3 +
 docs/assets/images/glowing-box.svg                 | 170 ++++++++++
 docs/assets/images/integrations/hibernate.svg      |   6 +
 docs/assets/images/integrations/kafka.svg          |   3 +
 docs/assets/images/integrations/more.svg           |  18 +
 docs/assets/images/integrations/oracle.svg         |   3 +
 docs/assets/images/integrations/osgi.svg           |  17 +
 docs/assets/images/integrations/spark.svg          |   7 +
 docs/assets/images/integrations/spring.svg         |   3 +
 docs/assets/images/java.svg                        |   9 +
 docs/assets/images/left-nav-arrow.svg              |   3 +
 docs/assets/images/lines-bg-1.svg                  |  54 +++
 docs/assets/images/lines-bg-2.svg                  |  54 +++
 docs/assets/images/lines-bg-3.svg                  |  54 +++
 docs/assets/images/lines-bg-4.svg                  |  54 +++
 docs/assets/images/menu-icon.svg                   |   3 +
 docs/assets/images/mousepad-blob.svg               |   9 +
 ...piece-of-paper-with-folded-top-right-corner.svg | 117 +++++++
 docs/assets/images/scala.svg                       |  31 ++
 docs/assets/images/search.svg                      |  15 +
 docs/assets/images/violent-blob.svg                |  28 ++
 docs/assets/images/watermelon-blob.svg             |   9 +
 docs/assets/js/anchor.min.js                       |   9 +
 docs/assets/js/code-copy-to-clipboard.js           |  70 ++++
 docs/assets/js/code-tabs.js                        | 155 +++++++++
 docs/assets/js/docs-menu.js                        |  64 ++++
 docs/assets/js/index.js                            |  51 +++
 docs/assets/js/page-nav.js                         |  37 ++
 docs/assets/js/top-navigation.js                   |  92 +++++
 docs/favicon.ico                                   | Bin 0 -> 9780 bytes
 docs/run.sh                                        |  23 ++
 84 files changed, 4154 insertions(+)

diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 0000000..a01b89a
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1,5 @@
+.jekyll-cache/
+_site/
+Gemfile.lock
+.jekyll-metadata
+
diff --git a/docs/Gemfile b/docs/Gemfile
new file mode 100644
index 0000000..f471d02
--- /dev/null
+++ b/docs/Gemfile
@@ -0,0 +1,14 @@
+source "https://rubygems.org"
+
+# git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
+
+gem 'asciidoctor'
+gem 'jekyll', group: :jekyll_plugins
+gem 'wdm', '~> 0.1.1' if Gem.win_platform?
+group :jekyll_plugins do
+  gem 'jekyll-asciidoc'
+end
+#gem 'pygments.rb', '~> 1.2.1'
+gem 'thread_safe', '~> 0.3.6'
+gem 'slim', '~> 4.0.1'
+gem 'tilt', '~> 2.0.9'
diff --git a/docs/README.adoc b/docs/README.adoc
new file mode 100644
index 0000000..710f784
--- /dev/null
+++ b/docs/README.adoc
@@ -0,0 +1,252 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+= Apache Ignite Documentation
+:toc:
+:toc-title:
+
+== Overview
+The Apache Ignite documentation is maintained in the repository with the code base, in the "/docs" subdirectory. The directory contains the source files, HTML templates and css styles.
+
+
+The Apache Ignite documentation is written in link:https://asciidoctor.org/docs/what-is-asciidoc/[asciidoc].
+The Asciidoc files are compiled into HTML pages and published to https://ignite.apache.org/docs.
+
+
+.Content of the “docs” directory
+[cols="1,4",opts="stretch"]
+|===
+| pass:[_]docs  | The directory with .adoc files and code-snippets.
+| pass:[_]config.yml | Jekyll configuration file.
+|===
+
+
+== Building the Docs Locally
+
+To build the docs locally, you can install `jekyll` and other dependencies on your machine, or you can use Jekyll docker image.
+
+=== Install Jekyll and Asciidoctor
+
+. Install Jekyll by following this instruction:  https://jekyllrb.com/docs/installation/[window=_blank]
+. In the “/docs” directory, run the following command:
++
+[source, shell]
+----
+$ bundle
+----
++
+This should install all dependencies, including `asciidoctor`.
+. Start jekyll:
++
+[source, shell]
+----
+$ bundle exec jekyll s
+----
+The command compiles the Asciidoc files into HTML pages and starts a local webserver.
+
+Open `http://localhost:4000/docs[window=_blank]` in your browser.
+
+=== Run with Docker
+
+The following command starts jekyll in a container and downloads all dependencies. Run the command in the “/docs” directory.
+
+[source, shell]
+----
+$ docker run -v "$PWD:/srv/jekyll" -p 4000:4000 jekyll/jekyll:latest jekyll s
+----
+
+Open `http://localhost:4000/docs[window=_blank]` in your browser.
+
+=== Troubleshooting
+
+Below are some issues you might hit during an installation of the Jekyll environment or while building the tutorials.
+Let us know if you come across a new and found a workaround.
+
+==== MacOS: Issues with FFI library during Jekyll installation
+
+You should see an error trace similar to this: https://github.com/ffi/ffi/issues/653
+
+Attempt to fix the problem by following this sequence of commands (typically it's the last command only):
+
+[source, text]
+----
+brew reinstall libffi
+export LDFLAGS="-L/usr/local/opt/libffi/lib"
+export CPPFLAGS="-I/usr/local/opt/libffi/include"
+export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig"
+gem install --user-install bundler jekyll
+----
+
+==== MacOS: jekyll-asciidoc gem is not installed by default
+
+Try to follow this procedure to fix the issue.
+
+* Comment out the `rm -rf $tmp_dir` at the very end of the `build.sh` script, so that the temp folder is not deleted after the execution.
+* Run `build.sh` (fails with `Could not find gem 'jekyll-asciidoc'...` error).
+* Go to `tmp/web_site` folder.
+* Run `bundle install`.
+* Revert the `build.sh` script and run it again.
+
+==== MacOS: can't build project due to inability to load openssl
+
+You should see an error like this:
+
+`LoadError: dlopen(/Users/dmagda/.rbenv/versions/2.6.2/lib/ruby/2.6.0/x86_64-darwin18/digest/sha1.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
+   Referenced from: /Users/dmagda/.rbenv/versions/2.6.2/lib/ruby/2.6.0/x86_64-darwin18/digest/sha1.bundle`
+
+Try to upgrade Ruby, rbenv to the latest version (2.7.1) and then reinstall Jekyll. Use the official instructions:
+https://jekyllrb.com/docs/installation/
+
+== How to Contribute
+
+If you want to contribute to the documentation, add or modify the relevant page in the `docs/_docs` directory.
+This directory contains all .adoc files (which are then rendered into HTML pages and published on the web-site).
+
+Because we use asciidoc for documentation, consider the following points:
+
+* Get familiar with the asciidoc format: https://asciidoctor.org/docs/user-manual/. You don’t have to read the entire manual. Search through it when you want to learn how to create a numbered list, or insert an image, or use italics.
+* Please read the link:https://asciidoctor.org/docs/asciidoc-recommended-practices:[AsciiDoc Recommended Practices] and try to adhere to those when editing the .adoc source files.
+
+
+The following sections explain specific asciidoc syntax that we use.
+
+=== Table of content
+
+The table of content is defined in the `_data/toc.yaml` file.
+If you want to add a new page, make sure to update the TOC.
+
+=== Changing an URL of an existing page
+
+If you rename an already published page or change the page's path in the `/_data/toc.yaml` file,
+you must configure a proper redirect from the old to the new URL in the following files of the Ignite website:
+https://github.com/apache/ignite-website/blob/master/.htaccess
+
+Reach out to documentation maintainers if you need any help with this.
+
+=== Links to other sections in the docs
+All .adoc files are located in the "docs/_docs" directory.
+Any link to the files within the directory must be relative to that directory.
+Remove the file extension (.adoc).
+
+For example:
+[source, adoc]
+----
+link:persistence/native-persistence[Native Persistence]
+----
+
+This is a link to the Native Persistence page.
+
+=== Links to external resources
+
+When referencing an external resource, make the link to open in a new window by adding the `window=_blank` attribute:
+
+[source, adoc]
+----
+link:https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunJSSE_Protocols[Supported protocols,window=_blank]
+----
+
+
+=== Tabs
+
+We use custom syntax to insert tabs. Tabs are used to provide code samples for different programming languages.
+
+Tabs are defined by the `tabs` block:
+```
+[tabs]
+--
+individual tabs are defined here
+--
+```
+
+Each tab is defined by the 'tab' directive:
+
+```
+tab:tab_name[]
+```
+
+where `tab_name` is the title of the tab.
+
+The content of the tab is everything that is given between the tab title, and the next tab or the end of the block.
+
+```asciidoc
+[tabs]
+--
+tab:XML[]
+
+The content of the XML tab goes here
+
+tab:Java[]
+
+The content of the Java tab is here
+
+tab:C#/.NET[]
+
+tab:C++[unsupported]
+
+--
+```
+
+=== Callouts
+
+Use the syntax below if you need to bring reader's attention to some details:
+
+[NOTE]
+====
+[discrete]
+=== Callout Title
+Callout Text
+====
+
+Change the callout type to `CAUTION` if you want to put out a warning:
+
+[CAUTION]
+====
+[discrete]
+=== Callout Title
+Callout Text
+====
+
+=== Code Snippets
+
+Code snippets must be taken from a compilable source code file (e.g. java, cs, js, etc).
+We use the `include` feature of asciidoc.
+Source code files are located in the `docs/_docs/code-snippets/{language}` folders.
+
+
+To add a code snippet to a page, follow these steps:
+
+* Create a file in the code snippets directory, e.g. _docs/code-snippets/java/org/apache/ignite/snippets/JavaThinClient.java
+
+* Enclose the piece of code you want to include within named tags (see https://asciidoctor.org/docs/user-manual/#by-tagged-regions). Give the tag a self-evident name.
+For example:
++
+```
+[source, java]
+----
+// tag::clientConnection[]
+ClientConfiguration cfg = new ClientConfiguration().setAddresses("127.0.0.1:10800");
+try (IgniteClient client = Ignition.startClient(cfg)) {
+    ClientCache<Integer, String> cache = client.cache("myCache");
+    // get data from the cache
+}
+// end::clientConnection[]
+----
+```
+
+* Include the tag in the adoc file:
++
+[source, adoc,subs="macros"]
+----
+\include::{javaCodeDir}/JavaThinClient.java[tag=clientConnection,indent=0]
+----
diff --git a/docs/_config.yml b/docs/_config.yml
new file mode 100644
index 0000000..93bf632
--- /dev/null
+++ b/docs/_config.yml
@@ -0,0 +1,46 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+exclude: [guidelines.md,  "Gemfile", "Gemfile.lock", README.adoc, "_docs/code-snippets", "_docs/includes", '*.sh']
+attrs: &asciidoc_attributes
+  version: 3.0.0-alpha1
+  base_url: /docs
+  stylesdir: /docs/assets/css
+  imagesdir: /docs
+  source-highlighter: rouge
+  table-stripes: even
+  javadoc_base_url: https://ignite.apache.org/releases/{version}/javadoc
+  javaCodeDir: code-snippets/java/src/main/java/org/apache/ignite/snippets
+  csharpCodeDir: code-snippets/dotnet
+  githubUrl: https://github.com/apache/ignite/tree/master
+  docSourceUrl: https://github.com/apache/ignite/tree/IGNITE-7595/docs
+collections:
+  docs:
+    permalink: /docs/:path:output_ext
+    output: true
+defaults:
+  -
+    scope:
+      path: ''
+    values:
+      layout: 'doc'
+  -
+    scope:
+      path: '_docs'
+    values:
+      toc: ignite 
+asciidoctor:
+  base_dir: _docs/ 
+  attributes: *asciidoc_attributes
+   
diff --git a/docs/_data/toc.yaml b/docs/_data/toc.yaml
new file mode 100644
index 0000000..55b8a91
--- /dev/null
+++ b/docs/_data/toc.yaml
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+- title: Documentation Overview
+  url: index
+- title: Getting Started Guide
+  url: getting-started-guide
+- title: Installation
+  url: installing-using-exe
+
diff --git a/docs/_docs/includes/prereqs.adoc b/docs/_docs/includes/prereqs.adoc
new file mode 100644
index 0000000..013b732
--- /dev/null
+++ b/docs/_docs/includes/prereqs.adoc
@@ -0,0 +1,19 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+[width="100%",cols="1,3"]
+|===
+|JDK | 11 and later
+|OS |Linux (Ubuntu 20.04), Windows (10 Home), MacOS
+|===
diff --git a/docs/_docs/index.adoc b/docs/_docs/index.adoc
new file mode 100644
index 0000000..051c1d7
--- /dev/null
+++ b/docs/_docs/index.adoc
@@ -0,0 +1,40 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+= Apache Ignite Documentation
+
+Apache Ignite is a distributed database for in-memory speed and high-performance computing.
+
+The technical documentation introduces you to the key capabilities, shows how to use certain features of the current Apache Ignite version.
+
+NOTE: Though this alpha release version does not support most of the Apache Ignite functionality,
+it introduces several new features, which are to be accompanied with other improvements from the link:https://cwiki.apache.org/confluence/display/IGNITE/Ignite+Enhancement+Proposal[Ignite Enhancement Proposal,window=_blank] list.
+
+This version of Apache Ignite, incorporating all the best solutions over the past years,
+possesses the highest level of usability thanks to the following improvements:
+
+* Schema-first approach: This feature introduces one-to-one mapping between data schemas and caches/tables,
+which means that the schema is defined for a cache/table before its creation.
+
+* Unified Configuration: This feature is presented by a set of the following improvements:
+
+- Platform-agnostic configuration representation
+- Clear separation between configuration and any third-party code
+- Predictable configuration lifecycle
+- Consistent runtime configuration change support
+
+* Ignite CLI tool: This tool functions as a single sign-on for any operational, management, and development needs.
+
+
+
diff --git a/docs/_docs/installation/installing-using-exe.adoc b/docs/_docs/installation/installing-using-exe.adoc
new file mode 100644
index 0000000..dd8f2b7
--- /dev/null
+++ b/docs/_docs/installation/installing-using-exe.adoc
@@ -0,0 +1,37 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+= Installing Using Distributive
+
+== Prerequisites
+
+Ignite was tested on:
+
+include::../includes/prereqs.adoc[]
+
+
+== Installing Using Distributive
+
+To install Apache Ignite, perform the following steps:
+
+. Navigate to link:https://ignite.apache.org/download.cgi[Apache Ignite Downloads,window=_blank] page to download the distributive.
+
+. Put the distributed file into the installation folder in your system.
+
+. Either execute the file or run it in the command line.
+
+. Optionally, set the Windows PATH to point to the installation folder and make sure there is no trailing / (or \ for Windows) in the path.
+
+NOTE: Depending on your system, you may need additional permissions during the installation.
+To grant permissions for Linux, run the `chmod +x ignite` standard command.
\ No newline at end of file
diff --git a/docs/_docs/quick-start/getting-started-guide.adoc b/docs/_docs/quick-start/getting-started-guide.adoc
new file mode 100644
index 0000000..3fa6bee
--- /dev/null
+++ b/docs/_docs/quick-start/getting-started-guide.adoc
@@ -0,0 +1,89 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+= Getting Started Guide
+
+== Configuration
+
+Apache Ignite uses HOCON configuration format.
+For more detail, please see the link:https://github.com/lightbend/config/blob/master/HOCON.md[HOCON documentation,window=_blank].
+
+== Ignite CLI tool
+
+Ignite CLI tool is a single entry point for all the Ignite operations.
+For example, it allows you to perform the following actions:
+
+* Manage existing nodes
+* Install new nodes
+* Update old nodes to new versions
+* Install or remove optional modules
+
+The Ignite CLI tool uses REST API as a communication protocol between the node and the CLI,
+allowing you to configure the node.
+
+Below is a list of Ignite CLI tool commands with short descriptions:
+
+* `init`: Installs Ignite core modules locally.
+
+* `module`: Manages optional Ignite modules and external artifacts.
+
+- `list`: Shows the list of available optional Ignite modules.
+- `add`: Adds an optional Ignite module or an external artifact.
+- `remove`: Adds an optional Ignite module or an external artifact.
+
+* `node`: Starts, stops and manages locally running Ignite nodes.
+
+- `start`: Starts an Ignite node locally.
+- `stop`: Stops a locally running Ignite node.
+- `classpath`: Shows the current classpath used by the Ignite nodes.
+- `list`: Shows the list of currently running local Ignite nodes.
+
+* `config`: Inspects and updates Ignite cluster configuration.
+
+- `get`: Gets current Ignite cluster configuration values.
+- `set`: Updates Ignite cluster configuration values.
+
+== Optional modules
+
+Ignite ships with a number of modules that provide various functionality. You can enable modules one by one, as required.
+
+WARNING: In the current alpha release, modules functionality is disabled.
+
+But you can still add Maven dependencies using the following command:
+
+`Ignite module add mvn:artifactId:groupId:version`
+
+It downloads the modules from Maven and adds a classpath to the server.
+
+== Work with a node
+
+The steps below illustrate basic node operations.
+
+. Use the `ignite init` command to start the configuration process.
+
+. To start a node, use the `ignite node start` command.
+Specify the `consistent-id` parameter for a certain node.
+
+. To stop a node, use the `ignite node stop` command.
+Specify the `consistent-id` parameter for a certain node.
+
+. To view the list of active nodes, use the `ignite node list` command. This command also displays the path to the log file.
+
+. To view the log, use the log file path from the previous step result. To open the log file, use any suitable approach.
+For example, use the `cat` standard command for Linux.
+
+
+
+
+
diff --git a/docs/_includes/copyright.html b/docs/_includes/copyright.html
new file mode 100644
index 0000000..00e196c
--- /dev/null
+++ b/docs/_includes/copyright.html
@@ -0,0 +1,22 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<div class="copyright">
+ © {{ "today" | date: "%Y" }} The Apache Software Foundation.<br/>
+Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation. 
+
+</div>
diff --git a/docs/_includes/footer.html b/docs/_includes/footer.html
new file mode 100644
index 0000000..76a3ffe
--- /dev/null
+++ b/docs/_includes/footer.html
@@ -0,0 +1,20 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+      {% assign doc_var = page.leftNav | append: "_var" %}
+      {% assign base_url = '' %}
+<footer>
+</footer>
diff --git a/docs/_includes/header.html b/docs/_includes/header.html
new file mode 100644
index 0000000..649dcba
--- /dev/null
+++ b/docs/_includes/header.html
@@ -0,0 +1,36 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!--header>
+    <button type='button' class='menu' title='Docs menu'>
+	  <img src="{{'assets/images/menu-icon.svg'|relative_url}}"/>
+    </button>
+    
+    <nav>
+   
+    </nav>
+    <form class='search'>
+        <button class="search-close" type='button'><img src='{{"assets/images/cancel.svg"|relative_url}}'></button>
+        <input type="search" placeholder="Search…" id="search-input">
+    </form>
+	<button type='button' class='search-toggle'><img src='{{"assets/images/search.svg"|relative_url}}'></button>
+    <button type='button' class='top-nav-toggle'>⋮</button>
+    <a href="https://github.com/ignite" title='GitHub' class='github' target="_blank">
+        <img src="{{'assets/images/github-gray.svg'|relative_url}}" alt="GitHub logo">
+    </a>
+</header-->
+
diff --git a/docs/_includes/left-nav.html b/docs/_includes/left-nav.html
new file mode 100644
index 0000000..6e4d223
--- /dev/null
+++ b/docs/_includes/left-nav.html
@@ -0,0 +1,88 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+{% assign prefix = site.attrs.base_url  %}
+{% assign normalized_path = page.url | replace: ".html","" | remove_first: prefix %}
+{% if page.toc != false %}
+<nav class='left-nav' data-swiftype-index='false'>
+
+    {% for guide in site.data.toc %}
+    <li>
+        {% if guide.items %}
+
+        {% assign guide_class = 'collapsed' %}
+
+        {% capture submenu %}
+        {% for chapter in guide.items %}
+
+        {% assign chapter_class = 'collapsed' %}
+        {% assign normalized_chapter_url = chapter.url | prepend: "/" %}
+        {% if normalized_path == normalized_chapter_url %}
+        {% assign guide_class = 'expanded' %}
+        {% assign chapter_class = 'expanded' %}
+        {% endif %}
+
+    <li>
+        {% if chapter.items %}
+        {% assign matching_items_count = chapter.items | where: 'url', normalized_path | size %}
+        {% if matching_items_count != 0 %}
+        {% assign chapter_class = 'expanded parent' %}
+        {% endif %}
+        <button
+                type='button'
+                class='{{chapter_class}} {% if normalized_path == normalized_chapter_url %}active{% endif %}'>
+            {{chapter.title}}<img class="state-indicator" src="{{'assets/images/left-nav-arrow.svg' | relative_url}}">
+        </button>
+        <nav class="sub_pages {{chapter_class}}">
+
+            {% for subpage in chapter.items %}
+            {% assign normalized_subpage_url = subpage.url | prepend: "/" %}
+            {% if normalized_path == normalized_subpage_url %}
+            {% assign guide_class = 'expanded' %}
+            {% assign chapter_class = 'expanded' %}
+            {% endif %}
+
+    <li><a href="{{prefix}}/{{subpage.url}}"
+           class='{% if normalized_path == normalized_subpage_url %}active{% endif %}'>{{subpage.title}}</a></li>
+    {% endfor %}
+</nav>
+{% else %}
+<a href="{{prefix}}{{chapter.url|relative_url}}"
+
+   class='{% if normalized_path == normalized_chapter_url %}active{% endif %}'
+>{{chapter.title}}</a>
+{% endif %}
+</li>
+{% endfor %}
+
+{% endcapture %}
+
+<button type='button' data-guide-url="{{guide.url}}"
+        class='group-toggle {{guide_class}} {% if page.url contains guide.url %}parent{% endif %}'>{{guide.title}}<img
+        class="state-indicator" src="{{'assets/images/left-nav-arrow.svg'|relative_url}}"></button>
+<nav class='nav-group {{guide_class}}'>
+    {{ submenu }}
+</nav>
+{% else %}
+
+<a href="{{prefix}}{{guide.url|relative_url}}" class='{% if guide.url == normalized_path %}active{% endif %}'>{{guide.title}}</a>
+{% endif %}
+</li>
+{% endfor %}
+</nav>
+<div class="left-nav__overlay"></div>
+{% endif %}
diff --git a/docs/_includes/right-nav.html b/docs/_includes/right-nav.html
new file mode 100644
index 0000000..7fccc8a
--- /dev/null
+++ b/docs/_includes/right-nav.html
@@ -0,0 +1,21 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<nav class="right-nav" data-swiftype-index='false'>
+    {{ page.document | tocify_asciidoc: 6 }}
+    {% include footer.html %}
+</nav>
diff --git a/docs/_includes/section-toc.html b/docs/_includes/section-toc.html
new file mode 100644
index 0000000..8e793fc
--- /dev/null
+++ b/docs/_includes/section-toc.html
@@ -0,0 +1,31 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+{% assign s = include.section %}
+
+{% if include.title %}
+<a {% if s.url %} href="{{site.attrs.base_url}}/{{s.url}}" {% endif %}>{{s.title}}</a>
+{% endif %}
+
+{% if s.items %}
+    <ul class='sub_pages'>
+    {% for subpage in s.items %}
+        <li><a href="{{site.attrs.base_url}}/{{subpage.url}}" class=''>{{subpage.title}}</a></li>
+    {% endfor %}
+    </ul>
+{% endif %}
+
diff --git a/docs/_includes/toc.html b/docs/_includes/toc.html
new file mode 100644
index 0000000..683b400
--- /dev/null
+++ b/docs/_includes/toc.html
@@ -0,0 +1,63 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<div class="toc">
+{% assign path =  page.path | remove: "/index.adoc" | remove_first: "_" | remove_first:  page.collection | remove_first: "/"  %}
+
+{% assign current_guide = path | split: "/" | first %}
+{% assign section = path | remove: current_guide | remove : "/" %}
+
+
+{% if current_guide != nil %}
+
+    {% assign current_guide_url = current_guide | prepend: "/" %} 
+
+
+    {% assign guide = site.data.toc | where: "url", current_guide_url | first %} 
+
+
+    {% if section != "" %}
+       {% assign section_url = "/" | append: current_guide | append: "/" | append: section %}
+       {% assign sect = guide.items | where: "url", section_url | first %}
+
+       {% include section-toc.html section=sect title=false %}   
+    {% else %}
+        <ul>
+            {% for sect in guide.items %}
+               <li>
+                   {% include section-toc.html section=sect title=true%}   
+               </li>
+            {% endfor %}
+        </ul> 
+    {% endif %}
+{% else %}  
+    {% for guide in site.data.toc %}
+
+        <h2> 
+<a href="{{site.attrs.base_url}}{{guide.url}}" class=''>{{guide.title}}</a> </h2>
+        {% if guide.items %}
+        <ul>
+          {% for sect in guide.items %}
+              <li>
+                  {% include section-toc.html section=sect title=true%}   
+              </li>
+          {% endfor %}
+        </ul>
+        {% endif %}
+    {% endfor %}
+{% endif %}
+</div>
diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html
new file mode 100644
index 0000000..9c7a42e
--- /dev/null
+++ b/docs/_layouts/default.html
@@ -0,0 +1,72 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!DOCTYPE html>
+
+      {% assign doc_var = page.leftNav | append: "_var" %}
+      
+<html lang="en">
+<head>
+    <!-- Global site tag (gtag.js) - Google Analytics -->
+    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-1382082-1"></script>
+    <script>
+    window.dataLayer = window.dataLayer || [];
+    function gtag(){dataLayer.push(arguments);}
+    gtag('js', new Date());
+
+    gtag('config', 'UA-61232409-1');
+    </script>
+
+    {% if page.content == nil or page.content == ""  %}
+<META NAME="ROBOTS" CONTENT="NOINDEX">
+{% endif %}
+
+    <meta charset="UTF-8">
+    <title>{{page.title}} | Ignite Documentation</title>
+    {% if site.attrs.base_url contains "/latest" %}
+    <link rel="canonical" href="{{page.id | replace_first: site.version, 'latest' }}" />
+    {% else %}
+    <link rel="canonical" href="{{page.id}}" />
+    {% endif %}
+	{% capture timestamp %}{{"now"| date: '%s'}}{% endcapture %}
+	<link rel="stylesheet" href="{{'assets/css/styles.css?'|append: timestamp |relative_url}}">
+    <link rel="stylesheet" href="{{'assets/css/asciidoc-pygments.css'|relative_url}}">
+    <link rel="shortcut icon" href="{{'/favicon.ico'|relative_url}}">
+    <meta name='viewport' content='width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0'>
+
+	<link rel="stylesheet"
+	  href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
+
+    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
+    <script type="text/javascript" src="{{'assets/js/jquery.swiftype.autocomplete.js?' |append: timestamp |relative_url}}"></script>
+    <script type="text/javascript" src="{{'assets/js/anchor.min.js?'|append: timestamp|relative_url}}"></script>
+    
+
+</head>
+<body>
+    {% include header.html %}
+    {{content}}
+    <script>
+    // inits deep anchors -- needs to be done here because of https://www.bryanbraun.com/anchorjs/#dont-run-it-too-late 
+    anchors.add('.page-docs h1, .page-docs h2, .page-docs h3:not(.discrete), .page-docs h4, .page-docs h5');
+    anchors.options = {
+        placement: 'right',
+        visible: 'always'
+    };
+    </script>
+</body>
+<script type='module' src='{{"assets/js/index.js?"|append: timestamp | relative_url}}' async></script>
+</html>
diff --git a/docs/_layouts/doc.html b/docs/_layouts/doc.html
new file mode 100644
index 0000000..9d5e831
--- /dev/null
+++ b/docs/_layouts/doc.html
@@ -0,0 +1,33 @@
+---
+layout: default
+---
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+	 <link rel="stylesheet" href="{{'assets/css/docs.css'|relative_url}}">
+<section class='page-docs'>
+    {% include left-nav.html %}
+    <article data-swiftype-index='true'>
+        <a class='edit-link' href="{{site.attrs.docSourceUrl}}/{{page.path}}" target="_blank">Edit</a>
+        {% if page.path contains ".adoc" %}
+            <h1>{{page.title}}</h1>
+        {% endif %}
+        {{content}}
+        {% include copyright.html %}
+    </article>
+    {% include right-nav.html %}    
+</section>
+<script type='module' src='{{"assets/js/code-copy-to-clipboard.js"|relative_url}}' async></script>
diff --git a/docs/_layouts/toc.html b/docs/_layouts/toc.html
new file mode 100644
index 0000000..682f77c
--- /dev/null
+++ b/docs/_layouts/toc.html
@@ -0,0 +1,32 @@
+---
+layout: default
+---
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+	 <link rel="stylesheet" href="{{'assets/css/docs.css'|relative_url}}">
+<section class='page-docs'>
+    {% include left-nav.html %}
+    <article data-swiftype-index='true'>
+        {% if page.path contains ".adoc" %}
+            <h1>{{page.title}}</h1>
+        {% endif %}
+        {{ content }}
+		{% include toc.html %}
+    </article>
+    {% include right-nav.html %}    
+</section>
+<script type='module' src='{{"assets/js/code-copy-to-clipboard.js"|relative_url}}' async></script>
diff --git a/docs/_plugins/asciidoctor-extensions.rb b/docs/_plugins/asciidoctor-extensions.rb
new file mode 100644
index 0000000..715d33d
--- /dev/null
+++ b/docs/_plugins/asciidoctor-extensions.rb
@@ -0,0 +1,180 @@
+# MIT License
+#
+# Copyright (C) 2012-2020 Dan Allen, Sarah White, Ryan Waldron, and the
+# individual contributors to Asciidoctor.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+require 'asciidoctor'
+require 'asciidoctor/extensions'
+require 'set'
+
+include Asciidoctor
+
+class TabsBlock < Asciidoctor::Extensions::BlockProcessor
+  use_dsl
+
+  named :tabs
+  on_context :open
+  parse_content_as :simple
+
+  def render_tab(parent, name, options, tab_content, use_xml)
+    if (options == 'unsupported')
+        content = Asciidoctor.convert "[source]\n----\nThis API is not presently available for #{name}."+( use_xml ? " You can use XML configuration." : "")+"\n----", parent: parent.document
+        return "<code-tab data-tab='#{name}' data-unavailable='true'>#{content}</code-tab>"
+    else 
+        if tab_content.empty?
+          warn "There is an empty tab (#{name}) on the " + parent.document.attributes['doctitle'] + " page: " + parent.document.attributes['docfile']
+         # File.write("log.txt", "There is an empty tab (#{name}) on the " + parent.document.attributes['doctitle'] + " page: " + parent.document.attributes['docfile'] + "\n", mode: "a")
+        end
+        content =  Asciidoctor.convert tab_content, parent: parent.document
+        return "<code-tab data-tab='#{name}'>#{content}</code-tab>"
+    end
+  end
+
+
+  def process parent, reader, attrs
+    lines = reader.lines
+
+    html = ''
+    tab_content = ''
+    name = ''
+    options = ''
+    tabs = Set.new
+    lines.each do |line| 
+       if (line =~ /^tab:.*\[.*\]/ ) 
+          # render the previous tab if there is one
+          unless name.empty?
+              html = html + render_tab(parent, name, options, tab_content, tabs.include?("XML"))
+          end
+
+          tab_content = ''; 
+          name = line[/tab:(.*)\[.*/,1] 
+          tabs << name
+          options = line[/tab:.*\[(.*)\]/,1] 
+       else
+          tab_content = tab_content + "\n" + line; 
+       end  
+    end 
+
+    unless name.empty?
+       html = html + render_tab(parent, name, options, tab_content, tabs.include?("XML"))
+    end
+
+
+    html = %(<code-tabs>#{html}</code-tabs>)
+
+    create_pass_block parent, html, attrs
+    
+  end
+end
+
+
+Asciidoctor::Extensions.register do
+  block TabsBlock
+end
+
+
+class JavadocUrlMacro < Extensions::InlineMacroProcessor
+  use_dsl
+
+  named :javadoc
+  name_positional_attributes 'text'
+
+  def process parent, target, attrs
+
+    parts = target.split('.')
+
+    if attrs['text'] == nil
+      text = parts.last();
+    else
+      text = attrs['text'] 
+    end
+
+    target = parent.document.attributes['javadoc_base_url'] + '/' + parts.join('/') + ".html" 
+    attrs.store('window', '_blank')
+
+    (create_anchor parent, text, type: :link, target: target, attributes: attrs).render
+  end
+end
+
+Asciidoctor::Extensions.register do
+  inline_macro JavadocUrlMacro  
+end
+Extensions.register do 
+ inline_macro do
+   named :link
+   parse_content_as :text
+
+   process do |parent, target, attrs|
+#     if(parent.document.attributes['latest'])
+#      base_url = parent.document.attributes['base_url'] + '/latest' 
+#     else
+#      base_url = parent.document.attributes['base_url'] + '/' + parent.document.attributes['version'] 
+#     end
+
+#    print parent.document.attributes
+    base_url = parent.document.attributes['base_url'] # + '/' + parent.document.attributes['version']
+   
+     if (text = attrs['text']).empty?
+       text = target
+     end
+
+     if text =~ /(\^|, *window=_?blank *)$/
+       text = text.sub(/\^$/,'')
+       text = text.sub(/, *window=_?blank *$/,'')
+       attrs.store('window', '_blank')
+     end
+
+     if target.start_with? 'http','ftp', '/', '#'
+     else 
+       target = base_url + '/' + %(#{target})
+     end
+
+     (create_anchor parent, text, type: :link, target: target, attributes: attrs).render
+   end
+ end
+end
+
+class ImageTreeProcessor < Extensions::Treeprocessor
+  def process document
+
+    image_width = (document.attr 'image_width', "")
+
+    imagedir =    document.attributes['docdir'] 
+
+    #scan for images
+    (document.find_by context: :image).each do |img| 
+
+        imagefile = imagedir + '/' + img.attributes['target']
+
+       if !File.file?(imagefile) 
+          warn 'Image does not exist: ' +imagefile 
+       end
+
+       if !(img.attributes['width'] || image_width.empty?)
+           img.attributes['width'] = image_width
+       end
+    end
+  end
+end
+
+Extensions.register do
+  treeprocessor ImageTreeProcessor 
+end
diff --git a/docs/_sass/callouts.scss b/docs/_sass/callouts.scss
new file mode 100644
index 0000000..2aad06f
--- /dev/null
+++ b/docs/_sass/callouts.scss
@@ -0,0 +1,75 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+aside {
+    border-left: 6px solid var(--callout-border);
+    background: var(--callout-background);
+    color: var(--callout-text);
+    margin-left: 0;
+    padding-right: 10px;
+	padding-left:20px;
+    position: relative;
+    display: flex;
+    margin-bottom: 16px;
+	
+	h3 {
+		font-weight: bold;
+		color:var(--callout-text);
+	}
+
+    &+aside {
+        margin-top: 1em;
+    }
+
+    &:before {
+       	font-size: 18px;
+        width: 78px;
+        flex: 0 0 auto;
+        align-self: center;
+        text-align: center;
+    }
+
+    .callout__margin-collapse-root {
+        margin-top: 16px;
+        margin-bottom: 16px;
+    }
+
+    &.note {
+        --callout-text: #723c81;
+        --callout-border: #723c81;
+        --callout-background: #f7f7f7;
+        --callout-icon: "\2B50";
+    }
+	
+    &.tip {
+        --callout-text: #af4e17;
+        --callout-border: #f18329;
+        --callout-background: #f7f7f7;
+        --callout-icon: "\2B50";
+    }
+
+    &.caution, &.important {
+        --callout-text: #65666a;
+        --callout-border: #e9502c;
+        --callout-background: #f7f7f7;
+        --callout-icon: "\01F449";
+    }
+
+    &.warning {
+        --callout-text: #df2226;
+        --callout-border: #df2226;
+        --callout-background: #f7f7f7;
+        --callout-icon: "\01F4CD";
+    }
+}
diff --git a/docs/_sass/code.scss b/docs/_sass/code.scss
new file mode 100644
index 0000000..d0e2eea
--- /dev/null
+++ b/docs/_sass/code.scss
@@ -0,0 +1,115 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+pre, pre.rouge {
+    padding: 8px 15px;
+    background: var(--block-code-background) !important;
+    border-radius: 5px;
+    border: 1px solid #e5e5e5;
+    overflow-x: auto;
+    // So code copy button doesn't overflow
+    min-height: 36px;
+	line-height: 18px;
+    color: #545454;
+}
+
+code {
+    color: #545454;
+}
+
+pre.rouge code {
+    background: none !important;
+}
+
+pre.rouge .tok-err {
+  	border: none !important;
+  }
+
+
+.highlight .err {
+  background: initial !important;
+  color: initial !important;
+}
+
+code-tabs.code-tabs__initialized {
+    display: block;
+    margin-bottom: 1.5em;
+
+    nav {
+        border-bottom: 1px solid #e0e0e0
+    }
+
+    nav button {
+        background: white;
+        color: inherit;
+        border: none;
+        padding: 0.7em 1em;
+        cursor: pointer;
+        transform: translateY(1px);
+		font-size: .9em;
+
+        &.active {
+            border-bottom: var(--orange-line-thickness) solid var(--link-color);
+        }
+		&.grey {
+		  color: grey;
+		}
+    }
+
+    code-tab:not([hidden]) {
+        display: block;
+    }
+}
+
+*:not(pre) > code {
+    background: var(--inline-code-background);
+    padding: 0.1em 0.5em;
+    background-clip: padding-box;
+    border-radius: 3px;
+    color: #545454;
+    font-size: 90%
+}
+
+// Required for copy button positioning
+.listingblock .content {
+    position: relative;
+}
+
+.copy-to-clipboard-button {
+    margin: 0;
+    padding: 0;
+    width: 36px;
+    height: 36px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    background: none;
+    border: none;
+
+    position: absolute;
+    top: 0;
+    right: 0;
+    background: url('../images/copy-icon.svg') center center no-repeat;
+
+    &.copy-to-clipboard-button__success {
+        color: green;
+        background: none;
+        font-size: 20px;
+        font-weight: bold;
+    }
+
+    &:hover:not(.copy-to-clipboard-button__success) {
+        filter: var(--gg-orange-filter);
+    }
+}
diff --git a/docs/_sass/docs.scss b/docs/_sass/docs.scss
new file mode 100644
index 0000000..58dc0f2
--- /dev/null
+++ b/docs/_sass/docs.scss
@@ -0,0 +1,238 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+section.page-docs {
+    display: grid;
+    transition: grid-template-columns 0.15s;
+    grid-template-columns: auto 1fr auto;
+    grid-template-rows: 100%;
+    grid-template-areas: 'left-nav content right-nav';
+    line-height: 20px;
+    max-width: 1440px;
+    margin: auto;
+    width: 100%;
+
+    &>article {
+        // box-shadow: -1px 13px 20px 0 #696c70;
+        border-left: 1px solid #eeeeee;
+        background-color: #ffffff;
+        padding: 0 50px 30px;
+        grid-area: content;
+        overflow: hidden;
+        font-family: sans-serif;
+        font-size: 16px;
+        color: #545454;
+        line-height: 1.6em;
+
+        h1, h2, h3:not(.discrete), h4, h5, strong, th {
+            font-family: 'Open Sans';
+        }
+
+        li {
+            margin-bottom: 0.5em;
+
+            > p {
+                margin-top: 0;
+                margin-bottom: 0;
+            }
+        }
+
+        @media (max-width: 800px) {
+            padding-left: 15px;
+            padding-right: 15px
+        }
+    }
+
+    .edit-link {
+        position:relative;
+        top: 10px;
+        right:10px;
+        float: right;
+        padding-top: calc(var(--header-height) + var(--padding-top));
+        margin-top: calc((-1 * var(--header-height)));
+    }
+
+    h1, h2, h3:not(.discrete), h4, h5 {
+        margin-bottom: 0;
+
+        &[id] {
+            margin-top:  var(--margin-top);
+            margin-bottom: calc(var(--margin-top) * 0.5);
+            // padding-top: calc(var(--header-height) + var(--padding-top));
+            z-index: -1;
+        }
+    }
+
+    .toc > ul {
+        margin: 0;
+    }
+
+
+    .content > .pygments.highlight {
+        margin-top: 0px;
+    }
+
+    .title {
+        font-style: italic;
+    }
+
+    .checkmark:before {
+        content: '\f14a';
+        visibility: visible;
+        font-family: FontAwesome;
+        color: #00a100;
+    }
+    .checkmark {
+        visibility: hidden;
+    }
+
+    .stretch {width: 100%;}
+    h1[id] {
+        --margin-top: 1em;
+    }
+    h2[id] {
+        --margin-top: 1.2em;
+    }
+    .toc > h2 {
+        --margin-top: 1em;
+    }
+
+    h3[id] {
+        --margin-top: 1.2em;
+    }
+    h4[id] {
+        --margin-top: 0.5em;
+    }
+    h5[id] {
+        --margin-top: 1.67em;
+    }
+    .imageblock .content, .image {
+        text-align: center;
+        display: block;
+    }
+    .imageblock, .image {
+        img:not([width]):not([height]) {
+            width: auto;
+            height: auto;
+            max-width: 100%;
+            max-height: 450px;
+        }
+    }
+    strong {
+        color: #757575;
+    }
+
+    th.valign-top,td.valign-top {
+        vertical-align:top;
+    }
+
+    table {
+        margin: 16px 0;
+    }
+
+    table tr td {
+        hyphens: auto;
+    }
+
+    table thead,table tfoot {
+        background:#f7f8f7;
+        color: #757575;
+    }
+    table tr.even,table tr.alt{background:#f8f8f7}
+    table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
+
+}
+.copyright {
+    margin-top: 3em;
+    padding-top: 1em;
+    border-top: 1px solid #f0f0f0;
+    font-size: 0.9em;
+    line-height: 1.8em;
+    color: #757575;
+}
+
+body.hide-left-nav {
+    .left-nav {
+        display: none;
+    }
+}
+
+.left-nav {
+    top: 0;
+    bottom: 0;
+    position: -webkit-sticky;
+    position: sticky;
+}
+.left-nav {
+    max-height: calc(100vh );
+    grid-area: left-nav;
+}
+.right-nav {
+    grid-area: right-nav;
+}
+.left-nav__overlay {
+    display: none;
+    background: rgba(0, 0, 0, 0.50);
+    z-index: 1;
+    position: fixed;
+    top: var(--header-height);
+    bottom: 0;
+    left: 0;
+    right: 0;
+}
+@media (max-width: 990px) {
+    body:not(.hide-left-nav) {
+        .left-nav__overlay {
+            display: block;
+        }
+    }
+    nav.left-nav {
+        background: #fafafa;
+        grid-area: left-nav;
+        box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.24), 0 0 4px 0 rgba(0, 0, 0, 0.12);
+        min-height: calc(100vh - var(--header-height));
+        max-height: calc(100vh - var(--header-height));
+        position: fixed;
+        bottom: 0;
+        top: var(--header-height);
+        z-index: 2;
+    }
+    section.page-docs > article {
+        grid-column-start: left-nav;
+        grid-column-end: content;
+        grid-row: content;
+    }
+}
+@media (max-width: 800px) {
+    nav.right-nav {
+        display: none;
+    }
+}
+
+:target:before {
+    content: "";
+    display: block;
+    margin-top: calc(var(--header-height) * -1);
+    height: var(--header-height);
+    width: 1px;
+}
+@media (min-width: 600px) and  (max-width: 900px) {
+    :target:before {
+        content: "";
+        display: block;
+        width: 1px;
+        margin-top: -150px;
+        height: 150px;
+    }
+}
diff --git a/docs/_sass/footer.scss b/docs/_sass/footer.scss
new file mode 100644
index 0000000..c8afea4
--- /dev/null
+++ b/docs/_sass/footer.scss
@@ -0,0 +1,48 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+body > footer {
+    border-top: 2px solid #dddddd;
+    height: var(--footer-height);
+    font-size: 16px;
+    color: #393939;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+
+
+    @media (max-width: 570px) {
+        .copyright__extra {
+            display: none;
+        }
+    }
+}
+.right-nav footer {
+    font-size: 12px;
+    padding: calc(var(--footer-gap) * 0.3) 0 5px;;
+    text-align: left;
+    margin: auto 0 0;
+
+    a {
+        margin: 0;
+    }
+
+    img {
+        width: 70px;
+    }
+
+    .copyright {
+        display: none;
+    }
+}
diff --git a/docs/_sass/github.scss b/docs/_sass/github.scss
new file mode 100644
index 0000000..069805c
--- /dev/null
+++ b/docs/_sass/github.scss
@@ -0,0 +1,223 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight .cm {
+  color: #777772;
+  font-style: italic;
+}
+.highlight .cp {
+  color: #797676;
+  font-weight: bold;
+}
+.highlight .c1 {
+  color: #777772;
+  font-style: italic;
+}
+.highlight .cs {
+  color: #797676;
+  font-weight: bold;
+  font-style: italic;
+}
+.highlight .c, .highlight .cd {
+  color: #777772;
+  font-style: italic;
+}
+.highlight .err {
+  color: #a61717;
+  background-color: #e3d2d2;
+}
+.highlight .gd {
+  color: #000000;
+  background-color: #ffdddd;
+}
+.highlight .ge {
+  color: #000000;
+  font-style: italic;
+}
+.highlight .gr {
+  color: #aa0000;
+}
+.highlight .gh {
+  color: #797676;
+}
+.highlight .gi {
+  color: #000000;
+  background-color: #ddffdd;
+}
+.highlight .go {
+  color: #888888;
+}
+.highlight .gp {
+  color: #555555;
+}
+.highlight .gs {
+  font-weight: bold;
+}
+.highlight .gu {
+  color: #aaaaaa;
+}
+.highlight .gt {
+  color: #aa0000;
+}
+.highlight .kc {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .kd {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .kn {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .kp {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .kr {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .kt {
+  color: #445588;
+  font-weight: bold;
+}
+.highlight .k, .highlight .kv {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .mf {
+  color: #009999;
+}
+.highlight .mh {
+  color: #009999;
+}
+.highlight .il {
+  color: #009999;
+}
+.highlight .mi {
+  color: #009999;
+}
+.highlight .mo {
+  color: #009999;
+}
+.highlight .m, .highlight .mb, .highlight .mx {
+  color: #009999;
+}
+.highlight .sb {
+  color: #d14;
+}
+.highlight .sc {
+  color: #d14;
+}
+.highlight .sd {
+  color: #d14;
+}
+.highlight .s2 {
+  color: #d14;
+}
+.highlight .se {
+  color: #d14;
+}
+.highlight .sh {
+  color: #d14;
+}
+.highlight .si {
+  color: #d14;
+}
+.highlight .sx {
+  color: #d14;
+}
+.highlight .sr {
+  color: #009926;
+}
+.highlight .s1 {
+  color: #d14;
+}
+.highlight .ss {
+  color: #990073;
+}
+.highlight .s {
+  color: #d14;
+}
+.highlight .na {
+  color: #008080;
+}
+.highlight .bp {
+  color: #797676;
+}
+.highlight .nb {
+  color: #0086B3;
+}
+.highlight .nc {
+  color: #445588;
+  font-weight: bold;
+}
+.highlight .no {
+  color: #008080;
+}
+.highlight .nd {
+  color: #3c5d5d;
+  font-weight: bold;
+}
+.highlight .ni {
+  color: #800080;
+}
+.highlight .ne {
+  color: #990000;
+  font-weight: bold;
+}
+.highlight .nf {
+  color: #990000;
+  font-weight: bold;
+}
+.highlight .nl {
+  color: #990000;
+  font-weight: bold;
+}
+.highlight .nn {
+  color: #555555;
+}
+.highlight .nt {
+  color: #000080;
+}
+.highlight .vc {
+  color: #008080;
+}
+.highlight .vg {
+  color: #008080;
+}
+.highlight .vi {
+  color: #008080;
+}
+.highlight .nv {
+  color: #008080;
+}
+.highlight .ow {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .o {
+  color: #000000;
+  font-weight: bold;
+}
+.highlight .w {
+  color: #bbbbbb;
+}
+.highlight {
+  background-color: #f8f8f8;
+}
diff --git a/docs/_sass/header.scss b/docs/_sass/header.scss
new file mode 100644
index 0000000..e45b349
--- /dev/null
+++ b/docs/_sass/header.scss
@@ -0,0 +1,374 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+header {
+
+    min-height: var(--header-height);
+    background: white;
+    display: grid;
+    grid-template-columns: auto auto 1fr auto auto auto;
+    grid-template-areas: 'left-toggle home nav search gh gg';
+    grid-template-rows: 40px;
+    flex-direction: row;
+    align-items: center;
+    justify-content: flex-start;
+    padding: 12px 20px;
+    box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.24), 0 0 4px 0 rgba(0, 0, 0, 0.12);
+    z-index: 1;
+
+    a:hover, button:hover {
+        opacity: 0.85;
+    }
+
+    li:hover .dropdown, a:focus + .dropdown {
+        display: block;
+    }
+
+    .dropdown-arrow {
+        margin-left: 5px;
+        margin-bottom: 3px;
+
+        width: 8px;
+        height: 4px;
+    }
+
+    .dropdown {
+        display: none;
+        position: fixed;
+        top: calc(var(--header-height) - 12px);
+        width: max-content;
+        background: white;
+        box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.24), 0 0 4px 0 rgba(0, 0, 0, 0.12);
+        border-radius: 4px;
+        padding-top: 10px;
+        padding-bottom: 12px;
+        z-index: 2;
+
+        li {
+            display: flex;
+        }
+
+        a {
+            color: grey !important;
+            font-size: 16px;
+            padding-top: 5px;
+            padding-bottom: 4px;
+            &:hover {
+                color: var(--gg-orange) !important;
+            }
+        }
+    }
+
+    .menu {
+        border: none;
+        background: none;
+        width: 40px;
+        height: 40px;
+        margin-right: 12px;
+        cursor: pointer;
+        grid-area: left-toggle;
+
+        img {
+            width: 18px;
+            height: 12px;
+        }
+    }
+
+    .search-toggle, .top-nav-toggle, .github, .search-close {
+        background: none;
+        border: none;
+        padding: 0;
+        width: 36px;
+        height: 36px;
+        display: inline-flex;
+        align-items: center;
+        justify-content: center;
+        color: var(--gg-dark-gray);
+        font-size: 26px;
+    }
+    .search-toggle {
+        grid-area: search;
+    }
+    .top-nav-toggle {
+        grid-area: top-toggle;
+    }
+
+    .home {
+        
+        grid-area: home;
+        margin-right: auto;
+        img {
+            height: 36px;
+        }
+    }
+	
+
+    .search {
+        margin-left: auto;
+        margin-right: 20px;
+        grid-area: search;
+
+        input[type='search'] {
+            color: var(--gg-dark-gray);
+            
+            background: rgba(255, 255, 255, 0.8);
+            border: 1px solid #cccccc;
+            padding: 10px 15px;
+            font-family: inherit;
+            max-width: 148px;
+            height: 37px;
+            font-size: 14px;
+            -webkit-appearance: unset;
+            appearance: unset;
+
+            &[disabled] {
+                opacity: 0.5;
+                cursor: not-allowed;
+            }
+        }
+
+    }
+
+
+    
+         
+
+    &>nav {
+        grid-area: nav;
+        font-size: 18px;
+        display: flex;
+        flex-direction: row;
+        margin: 0 20px;
+
+        li {
+            list-style: none;
+            margin-right: 0.5em;
+            display: flex;
+        }
+
+        a {
+            padding: 9px 14px;
+            color: var(--gg-dark-gray) !important;
+            text-decoration: none;
+            white-space: nowrap;
+
+            &.active {
+                border-radius: 3px;
+                background-color: #f0f0f0;
+            }
+        }
+    }
+
+    .github {
+        grid-area: gh;
+    }
+
+
+    .search-close {
+        margin-right: 10px;
+    }
+
+
+    @media (max-width: 900px) {
+        grid-template-columns: auto auto 1fr auto auto auto;
+        grid-template-areas: 
+            'left-toggle home spacer top-toggle search gh gg'
+            'nav         nav  nav    nav        nav    nav nav';
+
+        nav {
+            justify-content: center;
+            margin: 20px 0 10px;
+        }
+
+        & > nav > li {
+            position: relative;
+        }
+
+        .dropdown {
+            
+            top: calc(var(--header-height) + 25px);
+        }
+    }
+
+    @media (max-width: 600px) {
+        .search {
+            margin-right: 5px;
+            input[type='search'] {
+                max-width: 110px;
+            }
+        }
+    }
+
+    &:not(.narrow-header) {
+        .search-toggle, .top-nav-toggle, .search-close {
+            display: none;
+        }
+    }
+    &.narrow-header {
+        a.home {
+            top: 0;
+        }
+        &:not(.show-nav) {
+            nav {
+                display: none;
+            }
+        }
+        &.show-search {
+            .search-toggle, .home, .top-nav-toggle, .github, .menu {
+                display: none;
+            }
+            .search {
+                grid-column-start: home;
+                grid-column-end: github;
+                width: 100%;
+                display: flex;
+
+                input {
+                    max-width: initial;
+                    width: 100%;
+                }
+            }
+        }
+        &:not(.show-search) {
+            .search {
+                display: none;
+            }
+        }
+        nav {
+            flex-direction: column;
+            justify-content: stretch;
+
+            li {
+                display: flex;
+            }
+
+            a {
+                width: 100%;
+            }
+        }
+    }
+}
+.swiftype-widget {
+
+    .autocomplete {
+        background-color: white;
+        display: block;
+        list-style-type: none;
+        margin: 0;
+        padding: 0;
+        box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.37);
+        position: absolute;
+        border-radius: 3px;
+        text-align: left;
+        right: 75px !important;
+        min-width: 350px;
+
+        ul {
+
+            background-color: white;
+            display: block;
+            list-style-type: none;
+            margin: 0;
+            padding: 0;
+            border-radius: 3px;
+            text-align: left;
+            max-height: 70vh;
+            overflow: auto;
+
+            li {
+                border-top: 1px solid #e5e5e5;
+                border-bottom: 1px solid #fff;
+                cursor: pointer;
+                padding: 10px 8px;
+                font-size: 13px;
+                list-style-type: none;
+                background-image: none;
+                margin: 0;
+              }
+
+            li.active {
+                border-top: 1px solid #cccccc;
+                border-bottom: 1px solid #cccccc;
+                background-color: #f0f0f0;
+            }
+            
+            p {
+                font-size: 13px;
+                line-height: 16px;
+                margin: 0;
+                padding: 0;
+
+                &.url {
+                    font-size: 11px;
+                    color: #999;
+                }
+            }
+            
+            a {
+                font-size: 15px;
+            }
+            em {
+                font-weight: bold
+            }
+        }
+    }   
+}
+section.hero {
+    background-image: url(../images/dev-internal-bg.jpg);
+    background-position: center;
+    background-position-x: left;
+    background-repeat: no-repeat;
+    background-size: cover;
+    display: grid;
+    grid-template-columns: 1fr auto;
+    grid-template-areas: 'title versions';
+    grid-template-rows: 60px;
+    align-items: center;
+    padding: 5px 30px;
+    flex: unset;
+    
+    
+    .title {
+        color: #f3f3f3;
+        text-transform: uppercase;
+        font-size: 22px;
+    }
+
+    select {
+        list-style: none;
+        
+        line-height: 28px;
+        border-radius: 3px;
+    
+        
+        color: #333333;
+        line-height: 24px;
+        padding: 5px 10px;
+        white-space: nowrap;
+        font-size: 14px;
+        background:  #f0f0f0 url("/assets/images/arrow-down.svg") no-repeat center right 5px;
+    }
+}
+
+@media (max-width: 450px) {
+    section.hero {
+        grid-template-rows: auto;
+        padding: 15px;
+    
+        .title {
+            font-size: 18px;
+        }
+    }
+
+}
diff --git a/docs/_sass/layout.scss b/docs/_sass/layout.scss
new file mode 100644
index 0000000..cd0c288
--- /dev/null
+++ b/docs/_sass/layout.scss
@@ -0,0 +1,45 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+body {
+    --header-height: 64px;
+    --footer-height: 104px;
+    --footer-gap: 60px;
+
+    @media (min-width: 451px) and (max-width: 850px) {
+        --header-height: 111px;        
+    }
+
+    padding: 0;
+    margin: 0;
+    display: flex;
+    flex-direction: column;
+    min-height: 100vh;
+
+    &>section {
+        flex: 1;
+    }
+}
+header {
+    position: -webkit-sticky;
+    position: sticky;
+    top: 0;
+    z-index: 2;
+}
+body > footer {
+    margin: var(--footer-gap) 30px 0;
+}
+* {
+    box-sizing: border-box;
+}
diff --git a/docs/_sass/left-nav.scss b/docs/_sass/left-nav.scss
new file mode 100644
index 0000000..0fd55fd
--- /dev/null
+++ b/docs/_sass/left-nav.scss
@@ -0,0 +1,109 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+.left-nav {
+    padding: 10px 20px;
+    width: 289px;
+    overflow-y: auto;
+/*    height: calc(100vh - var(--header-height)); */
+    font-family: 'Open Sans';
+    padding-top: var(--padding-top);
+
+
+    li {
+        list-style: none;
+    }    
+    a, button {
+        text-decoration: none;
+        color: #757575;
+        font-size: 16px;
+        display: inline-flex;
+        width: 100%;
+        margin: 2px 0;
+        padding: 0.25em 0.375em;
+        background: none;
+        border: none;
+        cursor: pointer;
+        font: inherit;
+        text-align: left;
+
+        &.active, &:hover {
+            color: var(--link-color);
+        }
+    }
+
+	*:focus {
+	   	 outline: none;
+	}
+
+    .nav-group {
+        margin-left: 6px;
+        font-size: 14px;
+    }
+
+    nav {
+        border-left: 2px solid #dddddd;
+//        margin-top: 5px;
+        margin-bottom: 5px;
+
+        &.collapsed {
+            display: none;
+        }
+    }
+
+    nav > li > a, nav > li > button {
+        padding-left: 20px;
+        text-align: left;
+
+        &.active {
+            border-left: var(--orange-line-thickness) solid var(--active-color);
+            padding-left: calc(20px - var(--orange-line-thickness));
+        }
+    }
+
+    nav.sub_pages {
+        border: none;
+    }
+
+	nav.sub_pages a, nav.sub_pages button {
+        padding-left: 32px;
+
+        &.active {
+            padding-left: calc(32px - var(--orange-line-thickness));
+        }
+	}
+
+    .parent {
+        color: #393939;
+    }
+
+    .state-indicator {
+        margin-left: auto;
+        margin-top: 5px;
+        width: 6.2px;
+        height: 10px;
+        flex: 0 0 auto;
+        transition: transform 0.1s;
+        filter: invert(49%) sepia(4%) saturate(5%) hue-rotate(23deg) brightness(92%) contrast(90%);
+    }
+
+    button:hover .state-indicator,
+    button.current .state-indicator {
+        filter: invert(47%) sepia(61%) saturate(1950%) hue-rotate(345deg) brightness(100%) contrast(95%);
+    }
+
+    button.expanded .state-indicator {
+        transform: rotate(90deg);
+    }
+}
diff --git a/docs/_sass/right-nav.scss b/docs/_sass/right-nav.scss
new file mode 100644
index 0000000..68589c0
--- /dev/null
+++ b/docs/_sass/right-nav.scss
@@ -0,0 +1,73 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+.right-nav {
+    width: 289px;
+    padding: 12px 26px;
+    overflow-y: auto;
+    height: calc(100vh - var(--header-height));
+    top: 0;
+    position: -webkit-sticky;
+    position: sticky;
+    display: flex;
+    flex-direction: column;
+    font-family: 'Open sans';
+    padding-top: var(--padding-top);
+
+    h6 {
+        margin: 12px 0;
+        font-size: 16px;
+        font-weight: normal;
+    }
+
+    ul {
+        list-style: none;
+        padding: 0;
+        margin: 0;
+        // margin-bottom: auto;
+    }
+
+    li {
+        padding: 0;
+    }
+
+    a {
+        --border-width: 0px;
+        font-size: 14px;
+        color: #757575;
+        padding-left: calc(15px * var(--nesting-level) + 8px - var(--border-width));
+        margin: 0.3em 0;
+        display: inline-block;
+
+        &:hover {
+          color: var(--link-color);
+        }
+
+        &.active {
+            --border-width: var(--orange-line-thickness);
+            border-left: var(--border-width) solid var(--link-color);
+            color: #393939;
+        }
+    }
+
+    .sectlevel1 {
+        border-left: 2px solid #dddddd;
+    }
+
+    @for $i from 1 through 6 {
+        .sectlevel#{$i} {
+            --nesting-level: #{$i - 1};
+        }
+    }
+}
diff --git a/docs/_sass/rouge-base16-solarized.scss b/docs/_sass/rouge-base16-solarized.scss
new file mode 100644
index 0000000..10b1891
--- /dev/null
+++ b/docs/_sass/rouge-base16-solarized.scss
@@ -0,0 +1,99 @@
+//# MIT license.  See http://www.opensource.org/licenses/mit-license.php
+//
+//Copyright (c) 2012 Jeanine Adkisson.
+//
+//Permission is hereby granted, free of charge, to any person obtaining a copy
+//of this software and associated documentation files (the "Software"), to deal
+//in the Software without restriction, including without limitation the rights
+//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+//copies of the Software, and to permit persons to whom the Software is
+//furnished to do so, subject to the following conditions:
+//
+//The above copyright notice and this permission notice shall be included in
+//all copies or substantial portions of the Software.
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+//THE SOFTWARE.
+
+.highlight table td { padding: 5px; }
+.highlight table pre { margin: 0; }
+.highlight, .highlight .w {
+  color: #586e75;
+}
+.highlight .err {
+  color: #002b36;
+  background-color: #dc322f;
+}
+.highlight .c, .highlight .cd, .highlight .cm, .highlight .c1, .highlight .cs {
+  color: #657b83;
+}
+.highlight .cp {
+  color: #b58900;
+}
+.highlight .nt {
+  color: #b58900;
+}
+.highlight .o, .highlight .ow {
+  color: #93a1a1;
+}
+.highlight .p, .highlight .pi {
+  color: #93a1a1;
+}
+.highlight .gi {
+  color: #859900;
+}
+.highlight .gd {
+  color: #dc322f;
+}
+.highlight .gh {
+  color: #268bd2;
+  background-color: #002b36;
+  font-weight: bold;
+}
+.highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv {
+  color: #6c71c4;
+}
+.highlight .kc {
+  color: #cb4b16;
+}
+.highlight .kt {
+  color: #cb4b16;
+}
+.highlight .kd {
+  color: #cb4b16;
+}
+.highlight .s, .highlight .sb, .highlight .sc, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 {
+  color: #859900;
+}
+.highlight .sr {
+  color: #2aa198;
+}
+.highlight .si {
+  color: #d33682;
+}
+.highlight .se {
+  color: #d33682;
+}
+.highlight .nn {
+  color: #b58900;
+}
+.highlight .nc {
+  color: #b58900;
+}
+.highlight .no {
+  color: #b58900;
+}
+.highlight .na {
+  color: #268bd2;
+}
+.highlight .m, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mb, .highlight .mx {
+  color: #859900;
+}
+.highlight .ss {
+  color: #859900;
+}
diff --git a/docs/_sass/text.scss b/docs/_sass/text.scss
new file mode 100644
index 0000000..711ba7d
--- /dev/null
+++ b/docs/_sass/text.scss
@@ -0,0 +1,62 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+body {
+    font-family: 'Open Sans', sans-serif;
+}
+
+h1, h2, h3, h4 {
+    color: #000;
+    font-weight: normal;
+    font-family: 'Open Sans';
+}
+
+h1 {
+    font-size: 36px;
+    line-height: 40px;
+}
+
+a {
+    text-decoration: none;
+    color: var(--link-color);
+}
+
+
+section {
+    color: #545454;
+}
+
+table {
+    border-collapse: collapse;
+
+    td, th {
+        text-align: left;
+        padding: 5px 10px;
+        border-bottom: 1px solid hsl(0, 0%, 85%);
+        border-top: 1px solid hsl(0, 0%, 85%);
+    }
+
+    td p.tableblock {
+        margin-top: 0.5em;
+        margin-bottom: 0.5em;
+
+        &:first-child {
+            margin-top: 0.125em;
+        }
+
+        &:last-child {
+            margin-bottom: 0.125em;
+        }
+    }
+}
diff --git a/docs/_sass/variables.scss b/docs/_sass/variables.scss
new file mode 100644
index 0000000..9b63c5b
--- /dev/null
+++ b/docs/_sass/variables.scss
@@ -0,0 +1,33 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+:root {
+    --gg-red: #ec1c24;
+    --gg-orange: #ec1c24;
+    --gg-orange-dark: #bc440b;
+    --gg-orange-filter: invert(47%) sepia(61%) saturate(1950%) hue-rotate(345deg) brightness(100%) contrast(95%);
+    --gg-dark-gray: #333333;
+    --orange-line-thickness: 3px;
+    --block-code-background: rgba(241, 241, 241, 20%);
+    --inline-code-background: rgba(241, 241, 241, 90%);
+    --padding-top: 25px; 
+    --link-color: #ec1c24;
+}
+
+@font-face {
+    font-family: 'Open Sans';
+    font-weight: 300;
+    font-display: swap;
+    font-style: normal;
+}
diff --git a/docs/assets/css/asciidoc-pygments.css b/docs/assets/css/asciidoc-pygments.css
new file mode 100644
index 0000000..6de1084
--- /dev/null
+++ b/docs/assets/css/asciidoc-pygments.css
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2013-2018 Dan Allen, Paul Rayner, and the Asciidoctor Project
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+pre.pygments .hll { background-color: #ffffcc }
+pre.pygments, pre.pygments code { background: #ffffff; }
+pre.pygments .tok-c { color: #008000 } /* Comment */
+pre.pygments .tok-err { border: 1px solid #FF0000 } /* Error */
+pre.pygments .tok-k { color: #0000ff } /* Keyword */
+pre.pygments .tok-ch { color: #008000 } /* Comment.Hashbang */
+pre.pygments .tok-cm { color: #008000 } /* Comment.Multiline */
+pre.pygments .tok-cp { color: #0000ff } /* Comment.Preproc */
+pre.pygments .tok-cpf { color: #008000 } /* Comment.PreprocFile */
+pre.pygments .tok-c1 { color: #008000 } /* Comment.Single */
+pre.pygments .tok-cs { color: #008000 } /* Comment.Special */
+pre.pygments .tok-ge { font-style: italic } /* Generic.Emph */
+pre.pygments .tok-gh { font-weight: bold } /* Generic.Heading */
+pre.pygments .tok-gp { font-weight: bold } /* Generic.Prompt */
+pre.pygments .tok-gs { font-weight: bold } /* Generic.Strong */
+pre.pygments .tok-gu { font-weight: bold } /* Generic.Subheading */
+pre.pygments .tok-kc { color: #0000ff } /* Keyword.Constant */
+pre.pygments .tok-kd { color: #0000ff } /* Keyword.Declaration */
+pre.pygments .tok-kn { color: #0000ff } /* Keyword.Namespace */
+pre.pygments .tok-kp { color: #0000ff } /* Keyword.Pseudo */
+pre.pygments .tok-kr { color: #0000ff } /* Keyword.Reserved */
+pre.pygments .tok-kt { color: #2b91af } /* Keyword.Type */
+pre.pygments .tok-s { color: #a31515 } /* Literal.String */
+pre.pygments .tok-nc { color: #2b91af } /* Name.Class */
+pre.pygments .tok-ow { color: #0000ff } /* Operator.Word */
+pre.pygments .tok-sa { color: #a31515 } /* Literal.String.Affix */
+pre.pygments .tok-sb { color: #a31515 } /* Literal.String.Backtick */
+pre.pygments .tok-sc { color: #a31515 } /* Literal.String.Char */
+pre.pygments .tok-dl { color: #a31515 } /* Literal.String.Delimiter */
+pre.pygments .tok-sd { color: #a31515 } /* Literal.String.Doc */
+pre.pygments .tok-s2 { color: #a31515 } /* Literal.String.Double */
+pre.pygments .tok-se { color: #a31515 } /* Literal.String.Escape */
+pre.pygments .tok-sh { color: #a31515 } /* Literal.String.Heredoc */
+pre.pygments .tok-si { color: #a31515 } /* Literal.String.Interpol */
+pre.pygments .tok-sx { color: #a31515 } /* Literal.String.Other */
+pre.pygments .tok-sr { color: #a31515 } /* Literal.String.Regex */
+pre.pygments .tok-s1 { color: #a31515 } /* Literal.String.Single */
+pre.pygments .tok-ss { color: #a31515 } /* Literal.String.Symbol */
diff --git a/docs/assets/css/docs.scss b/docs/assets/css/docs.scss
new file mode 100644
index 0000000..2e05a98
--- /dev/null
+++ b/docs/assets/css/docs.scss
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+---
+---
+// Docs-specific global styles
+body {
+}
diff --git a/docs/assets/css/styles.scss b/docs/assets/css/styles.scss
new file mode 100644
index 0000000..f23e704
--- /dev/null
+++ b/docs/assets/css/styles.scss
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+---
+---
+@import "variables";
+@import "header";
+@import "code";
+@import "rouge-base16-solarized";
+@import "text";
+@import "callouts";
+@import "layout";
+@import "left-nav";
+@import "right-nav";
+@import "footer";
+
+@import "docs";
diff --git a/docs/assets/images/apple-blob.svg b/docs/assets/images/apple-blob.svg
new file mode 100644
index 0000000..308bf94
--- /dev/null
+++ b/docs/assets/images/apple-blob.svg
@@ -0,0 +1,16 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="111" height="274" viewBox="0 0 111 274">
+    <defs>
+        <linearGradient id="a" x1="50%" x2="50%" y1="0%" y2="100%">
+            <stop offset="0%" stop-color="#FCA44F"/>
+            <stop offset="100%" stop-color="#F86B27"/>
+        </linearGradient>
+        <linearGradient id="b" x1="50%" x2="50%" y1="0%" y2="100%">
+            <stop offset="0%" stop-color="#F1474E"/>
+            <stop offset="100%" stop-color="#DF2226"/>
+        </linearGradient>
+    </defs>
+    <g fill="none" fill-rule="evenodd" transform="translate(-13.406 3.425)">
+        <path fill="url(#a)" d="M120.697 3.889L142.52 48.75c2.899 5.96.418 13.141-5.542 16.04a12 12 0 0 1-5.25 1.209H88.315c-6.628 0-12-5.373-12-12a12 12 0 0 1 1.187-5.204L99.093 3.934c2.875-5.972 10.046-8.483 16.017-5.609a12 12 0 0 1 5.587 5.564z" transform="rotate(-7 110 35)"/>
+        <rect width="195" height="196" x="27" y="60.979" fill="url(#b)" opacity=".9" rx="50" transform="rotate(-19 124.5 158.979)"/>
+    </g>
+</svg>
diff --git a/docs/assets/images/arrow-down-white.svg b/docs/assets/images/arrow-down-white.svg
new file mode 100644
index 0000000..12a5613
--- /dev/null
+++ b/docs/assets/images/arrow-down-white.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="8" height="4" viewBox="0 0 8 4">
+    <path fill="#f3f3f3" fill-rule="nonzero" d="M0 0l4 4 4-4z"/>
+</svg>
diff --git a/docs/assets/images/arrow-down.svg b/docs/assets/images/arrow-down.svg
new file mode 100644
index 0000000..170a167
--- /dev/null
+++ b/docs/assets/images/arrow-down.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="8" height="4" viewBox="0 0 8 4">
+    <path fill="#333" fill-rule="nonzero" d="M0 0l4 4 4-4z"/>
+</svg>
diff --git a/docs/assets/images/background-lines.svg b/docs/assets/images/background-lines.svg
new file mode 100644
index 0000000..50524eb
--- /dev/null
+++ b/docs/assets/images/background-lines.svg
@@ -0,0 +1,54 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="998" viewBox="0 0 1440 998">
+    <g fill="none" fill-rule="evenodd" stroke="#979797" opacity=".06">
+        <path d="M1087.77 102.125C914.927 152.38 790.92 262.896 715.745 433.67 602.985 689.833 378.618 770.826 265.85 780.258c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1106.995 96.612C934.152 146.868 810.144 257.383 734.97 428.158 622.21 684.32 397.843 765.313 285.075 774.746c-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1126.22 91.1c-172.843 50.255-296.85 160.77-372.024 331.545C641.436 678.807 417.068 759.8 304.3 769.233c-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1145.446 85.586C972.603 135.842 848.594 246.358 773.42 417.132 660.66 673.294 436.294 754.288 323.525 763.72c-112.768 9.432-535.598 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1164.671 80.074C991.828 130.33 867.82 240.845 792.646 411.62 679.886 667.782 455.519 748.775 342.75 758.207c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1183.896 74.56c-172.843 50.257-296.851 160.772-372.025 331.547-112.76 256.162-337.127 337.155-449.895 346.588-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1203.122 69.048C1030.278 119.304 906.27 229.82 831.096 400.594 718.336 656.756 493.97 737.75 381.201 747.182c-112.769 9.432-535.599 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1222.347 63.535c-172.843 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.127 337.156-449.896 346.588-112.769 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1241.572 58.023C1068.73 108.279 944.72 218.794 869.547 389.569 756.787 645.73 532.42 726.724 419.65 736.156c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.125 182.837-187.229 243.16"/>
+        <path d="M1260.797 52.51c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.837-187.229 243.161"/>
+        <path d="M1280.023 46.997C1107.179 97.253 983.17 207.77 907.997 378.543 795.237 634.705 570.87 715.698 458.102 725.131c-112.769 9.432-535.599 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1299.248 41.484C1126.405 91.74 1002.396 202.256 927.223 373.03c-112.76 256.162-337.128 337.156-449.896 346.588-112.769 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1318.473 35.972c-172.843 50.256-296.852 160.771-372.025 331.546C833.688 623.68 609.32 704.673 496.552 714.105c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1337.698 30.459c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.837-187.229 243.161"/>
+        <path d="M1356.923 24.946c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.895 346.588-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1376.149 19.433c-172.843 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.128 337.156-449.896 346.588C441.459 707 18.63 817.833-114.442 970.508c-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1395.374 13.92c-172.843 50.257-296.852 160.772-372.025 331.547-112.76 256.162-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1414.6 8.408c-172.844 50.256-296.852 160.771-372.026 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.837-187.229 243.161"/>
+        <path d="M1433.824 2.895c-172.843 50.256-296.851 160.772-372.025 331.546C949.04 590.603 724.672 671.596 611.904 681.03c-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1453.05-2.618c-172.844 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.128 337.156-449.896 346.588C518.36 684.95 95.53 795.782-37.541 948.457c-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1472.275-8.13c-172.843 50.256-296.852 160.771-372.025 331.546C987.49 579.578 763.123 660.57 650.354 670.003c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1491.5-13.643c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588C556.811 673.923 133.981 784.757.91 937.43c-88.715 101.784-151.125 182.837-187.229 243.161"/>
+        <path d="M1510.725-19.156C1337.882 31.1 1213.874 141.616 1138.7 312.39c-112.76 256.162-337.127 337.155-449.895 346.588-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1529.95-24.669c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.156-449.895 346.588C595.26 662.898 172.43 773.731 39.36 926.406c-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1549.176-30.181c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1568.401-35.694c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.229 243.161"/>
+        <path d="M1587.626-41.207C1414.783 9.05 1290.775 119.565 1215.601 290.34c-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94C8.32 1011.652-54.089 1092.705-90.194 1153.029"/>
+        <path d="M1606.852-46.72C1434.008 3.536 1310 114.052 1234.826 284.826 1122.066 540.988 897.7 621.982 784.931 631.414c-112.769 9.433-535.599 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1626.077-52.232c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1645.302-57.745C1472.459-7.49 1348.45 103.026 1273.277 273.8 1160.517 529.963 936.15 610.956 823.38 620.389c-112.768 9.432-535.598 120.266-668.67 272.94C65.996 995.114 3.586 1076.167-32.52 1136.49"/>
+        <path d="M1664.527-63.258c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94C85.221 989.6 22.812 1070.655-13.293 1130.978"/>
+        <path d="M1683.752-68.77C1510.91-18.516 1386.901 92 1311.727 262.774 1198.967 518.937 974.6 599.931 861.832 609.363c-112.769 9.433-535.599 120.266-668.67 272.941-88.716 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1702.978-74.283c-172.844 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1722.203-79.796C1549.36-29.54 1425.35 80.975 1350.178 251.75c-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1741.428-85.309c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.838-187.229 243.161"/>
+        <path d="M1760.653-90.822C1587.81-40.566 1463.802 69.95 1388.628 240.724c-112.76 256.162-337.127 337.156-449.895 346.588-112.769 9.433-535.599 120.266-668.67 272.941-88.716 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1779.879-96.334c-172.844 50.256-296.852 160.771-372.026 331.546-112.76 256.162-337.127 337.155-449.895 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1799.104-101.847c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1818.33-107.36c-172.844 50.256-296.852 160.772-372.026 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.838-187.229 243.161"/>
+        <path d="M1837.554-112.873C1664.711-62.616 1540.703 47.9 1465.53 218.674c-112.76 256.161-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1856.78-118.385C1683.936-68.13 1559.928 42.386 1484.754 213.16c-112.76 256.162-337.127 337.155-449.895 346.587-112.769 9.433-535.599 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1876.005-123.898c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1895.23-129.41c-172.843 50.255-296.852 160.77-372.025 331.545-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.838-187.23 243.161"/>
+        <path d="M1914.455-134.924c-172.843 50.257-296.851 160.772-372.025 331.547-112.76 256.161-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1933.68-140.436C1760.838-90.18 1636.83 20.335 1561.656 191.11c-112.76 256.162-337.127 337.155-449.895 346.587C998.99 547.13 576.16 657.964 443.09 810.638c-88.716 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1952.906-145.949c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94C373.6 906.91 311.19 987.963 275.084 1048.287"/>
+        <path d="M1972.131-151.462c-172.843 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.838-187.23 243.161"/>
+        <path d="M1991.356-156.975c-172.843 50.257-296.851 160.772-372.025 331.547-112.76 256.162-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M2010.581-162.487c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.895 346.587-112.769 9.433-535.599 120.267-668.67 272.941-88.716 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M2029.807-168c-172.844 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+    </g>
+</svg>
diff --git a/docs/assets/images/cancel.svg b/docs/assets/images/cancel.svg
new file mode 100644
index 0000000..1ca9a6a
--- /dev/null
+++ b/docs/assets/images/cancel.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="14px" height="14px" viewBox="0 0 14 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
+    <title>Cancel-icon</title>
+    <desc>Created with Sketch.</desc>
+    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Pathes" transform="translate(-718.000000, -27.000000)" fill="#FFFFFF">
+            <polyline id="Cancel-icon" points="732 28.41 730.59 27 725 32.59 719.41 27 718 28.41 723.59 34 718 39.59 719.41 41 725 35.41 730.59 41 732 39.59 726.41 34 732 28.41"></polyline>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/docs/assets/images/checkmark-green.svg b/docs/assets/images/checkmark-green.svg
new file mode 100644
index 0000000..7f4bd06
--- /dev/null
+++ b/docs/assets/images/checkmark-green.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="20" height="15" viewBox="0 0 20 15">
+    <path fill="#157136" fill-rule="evenodd" d="M19.753.348a.846.846 0 0 0-1.189 0L6.666 12.167 1.436 7.01a.846.846 0 0 0-1.19 0 .827.827 0 0 0 0 1.177l5.828 5.745a.855.855 0 0 0 1.19 0l12.49-12.407a.826.826 0 0 0 0-1.177c-.329-.326.328.325 0 0z"/>
+</svg>
diff --git a/docs/assets/images/copy-icon.svg b/docs/assets/images/copy-icon.svg
new file mode 100644
index 0000000..9ee5957
--- /dev/null
+++ b/docs/assets/images/copy-icon.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="15" height="18" viewBox="0 0 15 18">
+    <defs>
+        <path id="a" d="M589 97.75h-9c-.825 0-1.5.675-1.5 1.5v10.5h1.5v-10.5h9v-1.5zm2.25 3H583c-.825 0-1.5.675-1.5 1.5v10.5c0 .825.675 1.5 1.5 1.5h8.25c.825 0 1.5-.675 1.5-1.5v-10.5c0-.825-.675-1.5-1.5-1.5zm0 12H583v-10.5h8.25v10.5z"/>
+    </defs>
+    <use fill="#757575" fill-rule="nonzero" transform="translate(-578 -97)" xlink:href="#a"/>
+</svg>
diff --git a/docs/assets/images/cpp.svg b/docs/assets/images/cpp.svg
new file mode 100644
index 0000000..2ad3e6d
--- /dev/null
+++ b/docs/assets/images/cpp.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="58" height="66" viewBox="0 0 58 66">
+    <g fill="none" fill-rule="nonzero">
+        <path fill="#00599C" d="M57.262 48.952c.455-.789.738-1.677.738-2.474V18.79c0-.797-.282-1.685-.738-2.474L29 32.634l28.262 16.318z"/>
+        <path fill="#004482" d="M31.511 64.67L55.49 50.829c.69-.4 1.318-1.088 1.773-1.876L29 32.634.738 48.952c.455.788 1.083 1.477 1.773 1.876L26.49 64.67c1.38.797 3.641.797 5.022 0z"/>
+        <path fill="#659AD2" d="M57.262 16.317c-.455-.788-1.083-1.477-1.773-1.876L31.51.598c-1.38-.797-3.641-.797-5.022 0L2.51 14.441C1.131 15.24 0 17.196 0 18.791v27.687c0 .797.283 1.685.738 2.474L29 32.634l28.262-16.317z"/>
+        <path fill="#FFF" d="M29 51.968c-10.66 0-19.333-8.673-19.333-19.334 0-10.66 8.673-19.333 19.333-19.333 6.879 0 13.294 3.702 16.742 9.66l-8.366 4.842A9.708 9.708 0 0 0 29 22.968c-5.33 0-9.667 4.336-9.667 9.666S23.67 42.301 29 42.301c3.44 0 6.65-1.853 8.376-4.836l8.367 4.841c-3.448 5.96-9.864 9.662-16.743 9.662z"/>
+        <path fill="#FFF" d="M48.333 31.56h-2.148v-2.148h-2.148v2.148H41.89v2.148h2.148v2.149h2.148v-2.149h2.148zM56.389 31.56H54.24v-2.148h-2.148v2.148h-2.149v2.148h2.149v2.149h2.148v-2.149h2.148z"/>
+    </g>
+</svg>
diff --git a/docs/assets/images/dev-internal-bg.jpg b/docs/assets/images/dev-internal-bg.jpg
new file mode 100644
index 0000000..847a3f5
Binary files /dev/null and b/docs/assets/images/dev-internal-bg.jpg differ
diff --git a/docs/assets/images/dotnet.svg b/docs/assets/images/dotnet.svg
new file mode 100644
index 0000000..5801271
--- /dev/null
+++ b/docs/assets/images/dotnet.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="57" height="57" viewBox="0 0 57 57">
+    <g fill="none" fill-rule="nonzero">
+        <path fill="#672572" d="M.118.118h56.763v56.763H.118z"/>
+        <g fill="#FFF">
+            <path d="M36.649 21.809c.29-.258.436-.58.436-.967 0-.353-.117-.644-.348-.872-.177-.18-.47-.357-.876-.526-.361-.153-.6-.286-.714-.394-.126-.118-.19-.28-.19-.49 0-.196.075-.355.228-.48.15-.122.352-.184.605-.184.406 0 .765.113 1.078.34v-.766a2.25 2.25 0 0 0-1.016-.221c-.492 0-.893.13-1.206.392-.31.262-.468.59-.468.983 0 .352.1.638.301.858.167.186.45.364.848.539.386.169.645.315.778.437.133.12.2.273.2.459 0 .441-.302.663-.903.663-.45 0-.86-.153-1.235-.455v.817c.335.19.727.286 1.17 [...]
+            <path d="M50.668 18.881c.36 0 .66-.122.905-.362.246-.24.368-.538.368-.893 0-.362-.122-.664-.37-.9a1.242 1.242 0 0 0-.894-.349c-.362 0-.663.122-.907.364a1.213 1.213 0 0 0-.364.894c0 .361.12.658.36.893.237.233.538.353.902.353zm-.796-2.045c.213-.213.479-.32.8-.32.31 0 .577.107.792.32.215.213.324.48.324.796 0 .32-.109.588-.326.799a1.075 1.075 0 0 1-.79.324 1.08 1.08 0 0 1-.79-.32 1.084 1.084 0 0 1-.327-.803c0-.317.106-.58.317-.796zM19.176 17.364h1v4.749h-1zM30.949 22.226c.723 0 1 [...]
+        </g>
+    </g>
+</svg>
diff --git a/docs/assets/images/edition-ce.svg b/docs/assets/images/edition-ce.svg
new file mode 100644
index 0000000..fad4eb5
--- /dev/null
+++ b/docs/assets/images/edition-ce.svg
@@ -0,0 +1,16 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="86" height="74" viewBox="0 0 86 74">
+    <defs>
+        <path id="a" d="M.022.27h85.154v72.867H.022z"/>
+    </defs>
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#DF2226" d="M46.604 43.541a4.004 4.004 0 0 1-4.006 4.004 3.998 3.998 0 0 1-3.995-4.004 3.998 3.998 0 0 1 3.995-4.003 4.004 4.004 0 0 1 4.006 4.003"/>
+        <path fill="#DF2226" d="M42.602 40.9a2.65 2.65 0 0 0-2.648 2.642 2.649 2.649 0 0 0 2.648 2.64 2.648 2.648 0 0 0 2.645-2.64 2.649 2.649 0 0 0-2.645-2.642m0 8.001c-2.957 0-5.365-2.405-5.365-5.359a5.372 5.372 0 0 1 5.365-5.361 5.371 5.371 0 0 1 5.362 5.361 5.369 5.369 0 0 1-5.362 5.359"/>
+        <path fill="#DF2226" d="M41.073 45.073L29.516 31.201a.582.582 0 0 1 .074-.828.583.583 0 0 1 .753 0l13.873 11.56a2.227 2.227 0 0 1 .282 3.14 2.229 2.229 0 0 1-3.425 0M13.345 44.517H1.142a1.142 1.142 0 0 1 0-2.283h12.203a1.142 1.142 0 1 1 0 2.283M83.873 44.517H71.67a1.142 1.142 0 0 1 0-2.283h12.203a1.142 1.142 0 0 1 0 2.283"/>
+        <g transform="translate(0 .696)">
+            <mask id="b" fill="#fff">
+                <use xlink:href="#a"/>
+            </mask>
+            <path fill="#DF2226" d="M13.165 73.137h-.003a1.14 1.14 0 0 1-.806-.338C4.402 64.772.022 54.131.022 42.845.022 19.367 19.126.269 42.602.269c23.477 0 42.575 19.098 42.575 42.576 0 11.286-4.377 21.924-12.33 29.954-.217.217-.487.258-.81.338-.303 0-.593-.121-.807-.332l-8.656-8.632a1.142 1.142 0 0 1 0-1.614 1.133 1.133 0 0 1 1.61 0l7.838 7.809c7.022-7.494 10.875-17.224 10.875-27.523 0-22.218-18.078-40.296-40.296-40.296S2.306 20.627 2.306 42.845c0 10.299 3.852 20.029 10.871 27.523l7 [...]
+        </g>
+    </g>
+</svg>
diff --git a/docs/assets/images/edition-ee.svg b/docs/assets/images/edition-ee.svg
new file mode 100644
index 0000000..fbc466d
--- /dev/null
+++ b/docs/assets/images/edition-ee.svg
@@ -0,0 +1,25 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="84" height="84" viewBox="0 0 84 84">
+    <defs>
+        <path id="a" d="M.559.511h34.1v39.027H.56z"/>
+        <path id="c" d="M.333.109h34.099v11.383H.333z"/>
+    </defs>
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#713C80" d="M2.164 69.539l14.888 8.59 14.888-8.59V52.352L17.052 43.74 2.164 52.352V69.54zM17.052 80.46c-.19 0-.371-.052-.54-.145L.54 71.096a1.084 1.084 0 0 1-.54-.931V51.726c0-.385.21-.743.54-.932l15.972-9.24a1.116 1.116 0 0 1 1.08 0l15.972 9.24c.334.19.537.547.537.932v18.439c0 .382-.203.736-.537.932l-15.972 9.22a1.114 1.114 0 0 1-.54.144zM51.654 69.539l14.885 8.59 14.888-8.59V52.352L66.54 43.74l-14.885 8.613V69.54zM66.539 80.46a1.1 1.1 0 0 1-.537-.145l-15.972-9.22a1. [...]
+        <path fill="#713C80" d="M29.045 73.711l13.643 7.888 12.763-7.375-5.418-3.127a1.066 1.066 0 0 1-.544-.936V51.726c0-.385.207-.736.544-.932l15.965-9.24c.337-.193.75-.186 1.083 0L72.52 44.7V29.937l-12.78-7.372v6.608c0 .386-.206.747-.54.933L43.228 39.32c-.337.2-.746.2-1.076 0L26.18 30.106a1.061 1.061 0 0 1-.54-.933v-6.608l-12.76 7.372v13.719l3.63-2.102a1.123 1.123 0 0 1 1.084 0l15.968 9.24c.334.196.54.547.54.932V70.16c0 .385-.206.746-.54.936l-4.517 2.614zm13.643 10.217c-.185 0-.375-.0 [...]
+        <g transform="translate(25.08 -.072)">
+            <mask id="b" fill="#fff">
+                <use xlink:href="#a"/>
+            </mask>
+            <path fill="#713C80" d="M2.722 28.62l14.885 8.589 14.889-8.59V11.433l-14.889-8.59-14.885 8.59v17.186zm14.885 10.918c-.185 0-.371-.049-.536-.145L1.099 30.177a1.075 1.075 0 0 1-.54-.928V10.81c0-.389.206-.746.54-.935L17.07.655a1.075 1.075 0 0 1 1.076 0l15.972 9.22c.337.189.54.546.54.935V29.25c0 .381-.203.736-.54.928l-15.972 9.216c-.165.096-.35.145-.54.145z" mask="url(#b)"/>
+        </g>
+        <g transform="translate(49.16 50.528)">
+            <mask id="d" fill="#fff">
+                <use xlink:href="#c"/>
+            </mask>
+            <path fill="#713C80" d="M17.383 11.492c-.19 0-.372-.048-.54-.144L.874 2.128C.358 1.83.18 1.168.48.656c.299-.523.96-.698 1.475-.402l15.429 8.91L32.81.253c.52-.3 1.18-.12 1.476.402.3.513.124 1.173-.392 1.472l-15.972 9.22a1.087 1.087 0 0 1-.54.144" mask="url(#d)"/>
+        </g>
+        <path fill="#713C80" d="M66.543 80.46c-.599 0-1.08-.485-1.08-1.073V60.94c0-.598.481-1.08 1.08-1.08.598 0 1.08.482 1.08 1.08v18.446c0 .588-.482 1.073-1.08 1.073M17.059 62.02c-.19 0-.372-.048-.54-.144L.547 52.656c-.516-.298-.691-.959-.392-1.472.296-.522.96-.698 1.476-.402l15.428 8.91 15.428-8.91c.516-.3 1.177-.12 1.476.402.3.513.12 1.174-.395 1.473l-15.969 9.219a1.087 1.087 0 0 1-.54.144"/>
+        <path fill="#713C80" d="M17.059 80.46c-.599 0-1.08-.485-1.08-1.073V60.94c0-.598.481-1.08 1.08-1.08.599 0 1.08.482 1.08 1.08v18.446c0 .588-.481 1.073-1.08 1.073M42.695 21.033c-.19 0-.372-.048-.54-.145l-15.972-9.222a1.073 1.073 0 0 1-.396-1.47c.3-.522.96-.7 1.476-.402l15.432 8.91 15.428-8.91c.516-.299 1.176-.12 1.476.403.299.512.12 1.17-.396 1.469l-15.972 9.222c-.168.097-.35.145-.536.145"/>
+        <path fill="#713C80" d="M42.695 39.472a1.08 1.08 0 0 1-1.08-1.076V19.954a1.078 1.078 0 1 1 2.156 0v18.442c0 .591-.481 1.076-1.076 1.076"/>
+    </g>
+</svg>
diff --git a/docs/assets/images/edition-ue.svg b/docs/assets/images/edition-ue.svg
new file mode 100644
index 0000000..0d788ed
--- /dev/null
+++ b/docs/assets/images/edition-ue.svg
@@ -0,0 +1,28 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="86" height="87" viewBox="0 0 86 87">
+    <defs>
+        <path id="a" d="M.841.473h15.423v15.365H.841z"/>
+        <path id="c" d="M1.26.484h11.02v10.983H1.26z"/>
+        <path id="e" d="M0 88.393h85.903V2.866H0z"/>
+    </defs>
+    <g fill="none" fill-rule="evenodd" transform="translate(0 -2)">
+        <path fill="#F16623" d="M42.953 31.386c-7.892 0-14.314 6.39-14.314 14.242 0 7.854 6.422 14.244 14.314 14.244s14.31-6.39 14.31-14.244c0-7.852-6.418-14.242-14.31-14.242m0 30.696c-9.113 0-16.524-7.381-16.524-16.454 0-9.07 7.41-16.452 16.524-16.452 9.11 0 16.523 7.381 16.523 16.452 0 9.073-7.413 16.454-16.523 16.454"/>
+        <g transform="translate(34.4 2.393)">
+            <mask id="b" fill="#fff">
+                <use xlink:href="#a"/>
+            </mask>
+            <path fill="#F16623" d="M8.553 2.683c-3.036 0-5.504 2.454-5.504 5.47 0 3.018 2.468 5.472 5.504 5.472 3.035 0 5.5-2.454 5.5-5.472 0-3.016-2.465-5.47-5.5-5.47m0 13.155C4.3 15.838.84 12.392.84 8.153c0-4.235 3.46-7.68 7.712-7.68 4.251 0 7.711 3.445 7.711 7.68 0 4.24-3.46 7.685-7.711 7.685" mask="url(#b)"/>
+        </g>
+        <path fill="#F16623" d="M5.51 13.844a3.292 3.292 0 0 0-3.297 3.283 3.292 3.292 0 0 0 3.297 3.28c1.82 0 3.3-1.474 3.3-3.28 0-1.81-1.48-3.283-3.3-3.283m0 8.772c-3.039 0-5.51-2.462-5.51-5.49 0-3.027 2.471-5.492 5.51-5.492 3.041 0 5.512 2.465 5.512 5.493 0 3.027-2.47 5.49-5.512 5.49M12.12 35.77c-3.037 0-5.505 2.454-5.505 5.472 0 3.019 2.468 5.473 5.504 5.473 3.033 0 5.501-2.454 5.501-5.473 0-3.018-2.468-5.472-5.5-5.472m0 13.155c-4.252 0-7.712-3.446-7.712-7.683 0-4.234 3.46-7.682 7.71 [...]
+        <g transform="translate(51.6 76.927)">
+            <mask id="d" fill="#fff">
+                <use xlink:href="#c"/>
+            </mask>
+            <path fill="#F16623" d="M6.77 2.694c-1.821 0-3.3 1.47-3.3 3.285 0 1.803 1.479 3.274 3.3 3.274 1.82 0 3.296-1.47 3.296-3.274a3.291 3.291 0 0 0-3.297-3.285m0 8.775c-3.038 0-5.51-2.468-5.51-5.49C1.26 2.946 3.732.484 6.77.484c3.039 0 5.51 2.462 5.51 5.495 0 3.022-2.471 5.49-5.51 5.49" mask="url(#d)"/>
+        </g>
+        <path fill="#F16623" d="M31.313 35.8L8.695 20.227l1.252-1.817L32.565 33.98z"/>
+        <mask id="f" fill="#fff">
+            <use xlink:href="#e"/>
+        </mask>
+        <path fill="#F16623" d="M41.69 30.728h2.21V17.466h-2.21zM56.71 38.684l-1.087-1.926 17.11-9.632 1.087 1.926zM67.224 57.816l-10.32-6.052 1.121-1.906 10.32 6.051zM55.147 79.531l-7.955-19.049 2.041-.848 7.952 19.046zM36.293 67.897l-2.099-.685 2.449-7.497 2.1.688zM12.95 79.834l-1.665-1.454 19.82-22.74 1.669 1.45zM27.595 44.535l-9.116-.82.2-2.201 9.114.82zM42.12 55.189c.578.06 1.086.06 1.665 0l.37-1.669a.997.997 0 0 1 .705-.745 6.945 6.945 0 0 0 1.493-.62c.324-.18.72-.168 1.032.032l1.4 [...]
+    </g>
+</svg>
diff --git a/docs/assets/images/events-nav-arrow.svg b/docs/assets/images/events-nav-arrow.svg
new file mode 100644
index 0000000..217fdaa
--- /dev/null
+++ b/docs/assets/images/events-nav-arrow.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="14" height="26" viewBox="0 0 14 26">
+    <path fill="none" fill-rule="evenodd" stroke="#F86B27" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 1L1.444 12.556 13 24.11"/>
+</svg>
diff --git a/docs/assets/images/feature-easy-installation.svg b/docs/assets/images/feature-easy-installation.svg
new file mode 100644
index 0000000..0d788ed
--- /dev/null
+++ b/docs/assets/images/feature-easy-installation.svg
@@ -0,0 +1,28 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="86" height="87" viewBox="0 0 86 87">
+    <defs>
+        <path id="a" d="M.841.473h15.423v15.365H.841z"/>
+        <path id="c" d="M1.26.484h11.02v10.983H1.26z"/>
+        <path id="e" d="M0 88.393h85.903V2.866H0z"/>
+    </defs>
+    <g fill="none" fill-rule="evenodd" transform="translate(0 -2)">
+        <path fill="#F16623" d="M42.953 31.386c-7.892 0-14.314 6.39-14.314 14.242 0 7.854 6.422 14.244 14.314 14.244s14.31-6.39 14.31-14.244c0-7.852-6.418-14.242-14.31-14.242m0 30.696c-9.113 0-16.524-7.381-16.524-16.454 0-9.07 7.41-16.452 16.524-16.452 9.11 0 16.523 7.381 16.523 16.452 0 9.073-7.413 16.454-16.523 16.454"/>
+        <g transform="translate(34.4 2.393)">
+            <mask id="b" fill="#fff">
+                <use xlink:href="#a"/>
+            </mask>
+            <path fill="#F16623" d="M8.553 2.683c-3.036 0-5.504 2.454-5.504 5.47 0 3.018 2.468 5.472 5.504 5.472 3.035 0 5.5-2.454 5.5-5.472 0-3.016-2.465-5.47-5.5-5.47m0 13.155C4.3 15.838.84 12.392.84 8.153c0-4.235 3.46-7.68 7.712-7.68 4.251 0 7.711 3.445 7.711 7.68 0 4.24-3.46 7.685-7.711 7.685" mask="url(#b)"/>
+        </g>
+        <path fill="#F16623" d="M5.51 13.844a3.292 3.292 0 0 0-3.297 3.283 3.292 3.292 0 0 0 3.297 3.28c1.82 0 3.3-1.474 3.3-3.28 0-1.81-1.48-3.283-3.3-3.283m0 8.772c-3.039 0-5.51-2.462-5.51-5.49 0-3.027 2.471-5.492 5.51-5.492 3.041 0 5.512 2.465 5.512 5.493 0 3.027-2.47 5.49-5.512 5.49M12.12 35.77c-3.037 0-5.505 2.454-5.505 5.472 0 3.019 2.468 5.473 5.504 5.473 3.033 0 5.501-2.454 5.501-5.473 0-3.018-2.468-5.472-5.5-5.472m0 13.155c-4.252 0-7.712-3.446-7.712-7.683 0-4.234 3.46-7.682 7.71 [...]
+        <g transform="translate(51.6 76.927)">
+            <mask id="d" fill="#fff">
+                <use xlink:href="#c"/>
+            </mask>
+            <path fill="#F16623" d="M6.77 2.694c-1.821 0-3.3 1.47-3.3 3.285 0 1.803 1.479 3.274 3.3 3.274 1.82 0 3.296-1.47 3.296-3.274a3.291 3.291 0 0 0-3.297-3.285m0 8.775c-3.038 0-5.51-2.468-5.51-5.49C1.26 2.946 3.732.484 6.77.484c3.039 0 5.51 2.462 5.51 5.495 0 3.022-2.471 5.49-5.51 5.49" mask="url(#d)"/>
+        </g>
+        <path fill="#F16623" d="M31.313 35.8L8.695 20.227l1.252-1.817L32.565 33.98z"/>
+        <mask id="f" fill="#fff">
+            <use xlink:href="#e"/>
+        </mask>
+        <path fill="#F16623" d="M41.69 30.728h2.21V17.466h-2.21zM56.71 38.684l-1.087-1.926 17.11-9.632 1.087 1.926zM67.224 57.816l-10.32-6.052 1.121-1.906 10.32 6.051zM55.147 79.531l-7.955-19.049 2.041-.848 7.952 19.046zM36.293 67.897l-2.099-.685 2.449-7.497 2.1.688zM12.95 79.834l-1.665-1.454 19.82-22.74 1.669 1.45zM27.595 44.535l-9.116-.82.2-2.201 9.114.82zM42.12 55.189c.578.06 1.086.06 1.665 0l.37-1.669a.997.997 0 0 1 .705-.745 6.945 6.945 0 0 0 1.493-.62c.324-.18.72-.168 1.032.032l1.4 [...]
+    </g>
+</svg>
diff --git a/docs/assets/images/feature-fast.svg b/docs/assets/images/feature-fast.svg
new file mode 100644
index 0000000..5889878
--- /dev/null
+++ b/docs/assets/images/feature-fast.svg
@@ -0,0 +1,16 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="86" height="74" viewBox="0 0 86 74">
+    <defs>
+        <path id="a" d="M.022 1.27h85.154v72.867H.022z"/>
+    </defs>
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#F16623" d="M46.604 43.541a4.004 4.004 0 0 1-4.006 4.004 3.998 3.998 0 0 1-3.995-4.004 3.998 3.998 0 0 1 3.995-4.003 4.004 4.004 0 0 1 4.006 4.003"/>
+        <path fill="#F16623" d="M42.602 40.9a2.65 2.65 0 0 0-2.648 2.642 2.649 2.649 0 0 0 2.648 2.64 2.648 2.648 0 0 0 2.645-2.64 2.649 2.649 0 0 0-2.645-2.642m0 8.001c-2.957 0-5.365-2.405-5.365-5.359a5.372 5.372 0 0 1 5.365-5.361 5.371 5.371 0 0 1 5.362 5.361 5.369 5.369 0 0 1-5.362 5.359"/>
+        <path fill="#F16623" d="M41.073 45.073L29.516 31.201a.582.582 0 0 1 .074-.828.583.583 0 0 1 .753 0l13.873 11.56a2.227 2.227 0 0 1 .282 3.14 2.229 2.229 0 0 1-3.425 0M13.345 44.517H1.142a1.142 1.142 0 0 1 0-2.283h12.203a1.142 1.142 0 1 1 0 2.283M83.873 44.517H71.67a1.142 1.142 0 0 1 0-2.283h12.203a1.142 1.142 0 0 1 0 2.283"/>
+        <g transform="translate(0 -.304)">
+            <mask id="b" fill="#fff">
+                <use xlink:href="#a"/>
+            </mask>
+            <path fill="#F16623" d="M13.165 74.137h-.003a1.14 1.14 0 0 1-.806-.338C4.402 65.772.022 55.131.022 43.845c0-23.478 19.104-42.576 42.58-42.576 23.477 0 42.575 19.098 42.575 42.576 0 11.286-4.377 21.924-12.33 29.954-.217.217-.487.258-.81.338-.303 0-.593-.121-.807-.332l-8.656-8.632a1.142 1.142 0 0 1 0-1.614 1.133 1.133 0 0 1 1.61 0l7.838 7.809c7.022-7.494 10.875-17.224 10.875-27.523 0-22.218-18.078-40.296-40.296-40.296S2.306 21.627 2.306 43.845c0 10.299 3.852 20.029 10.871 27.52 [...]
+        </g>
+    </g>
+</svg>
diff --git a/docs/assets/images/feature-reliable.svg b/docs/assets/images/feature-reliable.svg
new file mode 100644
index 0000000..d677c70
--- /dev/null
+++ b/docs/assets/images/feature-reliable.svg
@@ -0,0 +1,25 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="84" height="84" viewBox="0 0 84 84">
+    <defs>
+        <path id="a" d="M1.559 2.511h34.1v39.027H1.56z"/>
+        <path id="c" d="M1.333 1.109h34.099v11.383H1.333z"/>
+    </defs>
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#FFF" d="M2.164 69.539l14.888 8.59 14.888-8.59V52.352L17.052 43.74 2.164 52.352V69.54zM17.052 80.46c-.19 0-.371-.052-.54-.145L.54 71.096a1.084 1.084 0 0 1-.54-.931V51.726c0-.385.21-.743.54-.932l15.972-9.24a1.116 1.116 0 0 1 1.08 0l15.972 9.24c.334.19.537.547.537.932v18.439c0 .382-.203.736-.537.932l-15.972 9.22a1.114 1.114 0 0 1-.54.144zM51.654 69.539l14.885 8.59 14.888-8.59V52.352L66.54 43.74l-14.885 8.613V69.54zM66.539 80.46a1.1 1.1 0 0 1-.537-.145l-15.972-9.22a1.076 [...]
+        <path fill="#FFF" d="M29.045 73.711l13.643 7.888 12.763-7.375-5.418-3.127a1.066 1.066 0 0 1-.544-.936V51.726c0-.385.207-.736.544-.932l15.965-9.24c.337-.193.75-.186 1.083 0L72.52 44.7V29.937l-12.78-7.372v6.608c0 .386-.206.747-.54.933L43.228 39.32c-.337.2-.746.2-1.076 0L26.18 30.106a1.061 1.061 0 0 1-.54-.933v-6.608l-12.76 7.372v13.719l3.63-2.102a1.123 1.123 0 0 1 1.084 0l15.968 9.24c.334.196.54.547.54.932V70.16c0 .385-.206.746-.54.936l-4.517 2.614zm13.643 10.217c-.185 0-.375-.048- [...]
+        <g transform="translate(24.08 -2.072)">
+            <mask id="b" fill="#fff">
+                <use xlink:href="#a"/>
+            </mask>
+            <path fill="#FFF" d="M3.722 30.62l14.885 8.589 14.889-8.59V13.433l-14.889-8.59-14.885 8.59v17.186zm14.885 10.918c-.185 0-.371-.049-.536-.145L2.099 32.177a1.075 1.075 0 0 1-.54-.928V12.81c0-.389.206-.746.54-.935l15.972-9.22a1.075 1.075 0 0 1 1.076 0l15.972 9.22c.337.189.54.546.54.935V31.25c0 .381-.203.736-.54.928l-15.972 9.216c-.165.096-.35.145-.54.145z" mask="url(#b)"/>
+        </g>
+        <g transform="translate(48.16 49.528)">
+            <mask id="d" fill="#fff">
+                <use xlink:href="#c"/>
+            </mask>
+            <path fill="#FFF" d="M18.383 12.492c-.19 0-.372-.048-.54-.144L1.874 3.128c-.516-.299-.695-.96-.395-1.472.299-.523.96-.698 1.475-.402l15.429 8.91 15.428-8.91c.52-.3 1.18-.12 1.476.402.3.513.124 1.173-.392 1.472l-15.972 9.22a1.087 1.087 0 0 1-.54.144" mask="url(#d)"/>
+        </g>
+        <path fill="#FFF" d="M66.543 80.46c-.599 0-1.08-.485-1.08-1.073V60.94c0-.598.481-1.08 1.08-1.08.598 0 1.08.482 1.08 1.08v18.446c0 .588-.482 1.073-1.08 1.073M17.059 62.02c-.19 0-.372-.048-.54-.144L.547 52.656c-.516-.298-.691-.959-.392-1.472.296-.522.96-.698 1.476-.402l15.428 8.91 15.428-8.91c.516-.3 1.177-.12 1.476.402.3.513.12 1.174-.395 1.473l-15.969 9.219a1.087 1.087 0 0 1-.54.144"/>
+        <path fill="#FFF" d="M17.059 80.46c-.599 0-1.08-.485-1.08-1.073V60.94c0-.598.481-1.08 1.08-1.08.599 0 1.08.482 1.08 1.08v18.446c0 .588-.481 1.073-1.08 1.073M42.695 21.033c-.19 0-.372-.048-.54-.145l-15.972-9.222a1.073 1.073 0 0 1-.396-1.47c.3-.522.96-.7 1.476-.402l15.432 8.91 15.428-8.91c.516-.299 1.176-.12 1.476.403.299.512.12 1.17-.396 1.469l-15.972 9.222c-.168.097-.35.145-.536.145"/>
+        <path fill="#FFF" d="M42.695 39.472a1.08 1.08 0 0 1-1.08-1.076V19.954a1.078 1.078 0 1 1 2.156 0v18.442c0 .591-.481 1.076-1.076 1.076"/>
+    </g>
+</svg>
diff --git a/docs/assets/images/github-gray.svg b/docs/assets/images/github-gray.svg
new file mode 100644
index 0000000..664368e
--- /dev/null
+++ b/docs/assets/images/github-gray.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path fill="#333" fill-rule="nonzero" d="M12 0C5.373 0 0 5.373 0 12c0 5.303 3.438 9.8 8.207 11.386.6.11.819-.26.819-.577 0-.286-.011-1.232-.017-2.234-3.337.725-4.042-1.415-4.042-1.415-.547-1.386-1.333-1.755-1.333-1.755-1.09-.744.083-.73.083-.73 1.205.084 1.84 1.237 1.84 1.237 1.07 1.834 2.809 1.304 3.491.996.11-.773.42-1.304.762-1.602-2.664-.304-5.466-1.333-5.466-5.932 0-1.31.468-2.38 1.234-3.22-.122-.305-.535-1.526.119-3.177 0 0 1.006-.322 3.3 1.23.957-.267 1.983-.399 3.003-.403 1.0 [...]
+</svg>
diff --git a/docs/assets/images/github-white.svg b/docs/assets/images/github-white.svg
new file mode 100644
index 0000000..5ae1ae6
--- /dev/null
+++ b/docs/assets/images/github-white.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+    <path fill="#FFF" fill-rule="nonzero" d="M12 0C5.373 0 0 5.373 0 12c0 5.303 3.438 9.8 8.207 11.386.6.11.819-.26.819-.577 0-.286-.011-1.232-.017-2.234-3.337.725-4.042-1.415-4.042-1.415-.547-1.386-1.333-1.755-1.333-1.755-1.09-.744.083-.73.083-.73 1.205.084 1.84 1.237 1.84 1.237 1.07 1.834 2.809 1.304 3.491.996.11-.773.42-1.304.762-1.602-2.664-.304-5.466-1.333-5.466-5.932 0-1.31.468-2.38 1.234-3.22-.122-.305-.535-1.526.119-3.177 0 0 1.006-.322 3.3 1.23.957-.267 1.983-.399 3.003-.403 1.0 [...]
+</svg>
diff --git a/docs/assets/images/glowing-box.svg b/docs/assets/images/glowing-box.svg
new file mode 100644
index 0000000..c384c4a
--- /dev/null
+++ b/docs/assets/images/glowing-box.svg
@@ -0,0 +1,170 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="347" height="366" viewBox="0 0 347 366">
+    <defs>
+        <path id="a" d="M62.597 186.739c-2.392-.01-4.672-.5-6.38-1.486L2.575 154.282c-1.983-1.144-2.78-2.734-2.494-4.353H0V0h126.242v149.929h-.049c.057 1.722-1.129 3.549-3.593 4.972l-51.503 29.734c-2.387 1.378-5.438 2.091-8.34 2.104h-.16z"/>
+        <linearGradient id="b" x1="50%" x2="50%" y1="100%" y2="18.88%">
+            <stop offset="0%" stop-color="#F86B27"/>
+            <stop offset="100%" stop-color="#F9F9F9"/>
+        </linearGradient>
+        <path id="d" d="M6.886 6.98c-9.181 9.181-9.181 24.068 0 33.249 9.182 9.182 24.068 9.182 33.249 0 9.182-9.181 9.182-24.068 0-33.249A23.433 23.433 0 0 0 23.511.094 23.437 23.437 0 0 0 6.886 6.98"/>
+        <path id="f" d="M.206 10.482c0 5.377 4.36 9.736 9.736 9.736 5.378 0 9.737-4.359 9.737-9.736 0-5.378-4.359-9.736-9.737-9.736C4.566.746.206 5.104.206 10.482"/>
+        <path id="h" d="M2.202 10.533c-4.299 8.655-.77 19.157 7.884 23.457 8.655 4.299 19.156.77 23.456-7.884a17.425 17.425 0 0 0 1.832-7.665v-.216c-.04-6.395-3.597-12.535-9.715-15.575A17.425 17.425 0 0 0 17.886.819c-6.434 0-12.627 3.562-15.684 9.714"/>
+        <path id="j" d="M95.387 4.612L7.023 55.629c-4.13 2.385-6.5 5.581-6.5 8.769 0 2.67 1.658 5.098 4.668 6.835l92.032 53.135c3.029 1.749 7.086 2.606 11.336 2.606 5.112 0 10.499-1.241 14.693-3.663l88.365-51.018c4.131-2.385 6.5-5.581 6.5-8.769 0-2.671-1.657-5.098-4.668-6.836L121.416 3.554c-3.027-1.748-7.085-2.605-11.334-2.605-5.112 0-10.499 1.241-14.695 3.663m2.336 118.891L5.691 70.368c-2.688-1.552-4.168-3.672-4.168-5.97 0-2.821 2.187-5.702 6-7.904L95.887 5.476c4.059-2.342 9.263-3.544 1 [...]
+        <path id="l" d="M74.607 3.655L36.262 25.793H.546V125.89h.01c-.145 2.003.971 3.934 3.433 5.356l72.056 41.601c5.123 2.958 14.071 2.587 19.988-.828l69.183-39.943c3.073-1.774 4.71-4.021 4.867-6.186h.027V25.793h-35.735L94.596 2.826C92.275 1.486 89.168.83 85.914.829c-3.928 0-8.071.958-11.307 2.826"/>
+        <linearGradient id="m" x1="50%" x2="50%" y1="0%" y2="98.762%">
+            <stop offset="0%" stop-color="#DF2226"/>
+            <stop offset="100%" stop-color="#713C80"/>
+        </linearGradient>
+        <path id="o" d="M74.607 3.665L5.424 43.608c-5.916 3.416-6.559 8.583-1.435 11.54L76.045 96.75c5.123 2.957 14.071 2.586 19.988-.828l69.183-39.944c5.916-3.415 6.558-8.582 1.434-11.54L94.596 2.837C92.274 1.497 89.168.84 85.914.84c-3.928 0-8.071.957-11.307 2.825"/>
+        <linearGradient id="p" x1="-.815%" x2="99.309%" y1="50.001%" y2="49.999%">
+            <stop offset="0%" stop-color="#713C80"/>
+            <stop offset="100%" stop-color="#DF2226"/>
+        </linearGradient>
+        <path id="r" d="M.247 1.705l2.79 3.181V28.48c0 5.152 3.132 11.135 6.996 13.366L61.377 71.49c.055.032.107.052.16.082l1.658 1.889 2.608-1.521c.036-.019.071-.042.107-.063l.247-.144-.008-.007c1.366-.914 2.225-2.835 2.225-5.524V37.808L3.037.086.247 1.705z"/>
+        <linearGradient id="s" x1="-84.629%" x2="93.369%" y1="17.044%" y2="61.111%">
+            <stop offset="0%" stop-color="#781416"/>
+            <stop offset="100%" stop-color="#8C413D"/>
+        </linearGradient>
+        <path id="u" d="M.615 1.995l2.79 3.181V28.77c0 5.151 3.132 11.135 6.995 13.367l51.346 29.644c.053.03.106.052.16.081l1.657 1.889 2.607-1.52c.037-.019.072-.043.108-.063l.246-.144-.007-.008c1.365-.915 2.225-2.834 2.225-5.524V38.098L3.405.376.615 1.995z"/>
+        <linearGradient id="v" x1="-84.629%" x2="93.369%" y1="17.044%" y2="61.111%">
+            <stop offset="0%" stop-color="#781416"/>
+            <stop offset="100%" stop-color="#8C413D"/>
+        </linearGradient>
+        <path id="x" d="M.615 29.389c0 5.151 3.132 11.136 6.995 13.366L58.956 72.4c3.863 2.23 6.996-.138 6.996-5.289V38.717L.615.996v28.393z"/>
+        <linearGradient id="y" x1="-4.361%" x2="157.759%" y1="50.276%" y2="49.409%">
+            <stop offset="0%" stop-color="#DF2226"/>
+            <stop offset="100%" stop-color="#F86B27"/>
+        </linearGradient>
+    </defs>
+    <g fill="none" fill-rule="evenodd">
+        <g transform="translate(112)">
+            <mask id="c" fill="#fff">
+                <use xlink:href="#a"/>
+            </mask>
+            <path fill="url(#b)" d="M126.242 0H0v149.929h.081c-.286 1.619.511 3.209 2.494 4.353l53.642 30.971c3.813 2.202 10.476 1.925 14.88-.618l51.503-29.734c2.464-1.423 3.65-3.25 3.593-4.972h.049V0z" mask="url(#c)"/>
+        </g>
+        <g transform="translate(0 262.5)">
+            <mask id="e" fill="#fff">
+                <use xlink:href="#d"/>
+            </mask>
+            <path d="M6.886 6.98c-9.181 9.181-9.181 24.068 0 33.249 9.182 9.182 24.068 9.182 33.249 0 9.182-9.181 9.182-24.068 0-33.249A23.433 23.433 0 0 0 23.511.094 23.437 23.437 0 0 0 6.886 6.98" mask="url(#e)"/>
+        </g>
+        <g transform="translate(44 109.5)">
+            <mask id="g" fill="#fff">
+                <use xlink:href="#f"/>
+            </mask>
+            <path d="M.206 10.482c0 5.377 4.36 9.736 9.736 9.736 5.378 0 9.737-4.359 9.737-9.736 0-5.378-4.359-9.736-9.737-9.736C4.566.746.206 5.104.206 10.482" mask="url(#g)"/>
+        </g>
+        <g transform="translate(315 196.5)">
+            <mask id="i" fill="#fff">
+                <use xlink:href="#h"/>
+            </mask>
+            <path d="M2.202 10.533c-4.299 8.655-.77 19.157 7.884 23.457 8.655 4.299 19.156.77 23.456-7.884a17.425 17.425 0 0 0 1.832-7.665v-.216c-.04-6.395-3.597-12.535-9.715-15.575A17.425 17.425 0 0 0 17.886.819c-6.434 0-12.627 3.562-15.684 9.714" mask="url(#i)"/>
+        </g>
+        <path fill="#757575" d="M337.354 285.698c-7.036 1.365-14.658-.82-17.023-4.884-2.366-4.062 1.421-8.464 8.458-9.829 7.037-1.365 14.659.821 17.024 4.884 2.365 4.062-1.422 8.463-8.459 9.83M29.748 364.935c-9.791 1.899-20.395-1.143-23.686-6.795-3.291-5.652 1.978-11.775 11.769-13.675 9.79-1.9 20.395 1.143 23.685 6.795 3.29 5.653-1.978 11.775-11.768 13.675M56.081 159.338c-3.515.682-7.32-.41-8.503-2.44-1.18-2.03.711-4.227 4.225-4.91 3.516-.68 7.322.412 8.504 2.44 1.18 2.03-.71 4.228-4.226 [...]
+        <path fill="#DF2226" d="M120.757 79.471a2.494 2.494 0 1 1-4.988 0 2.494 2.494 0 0 1 4.988 0M77.548 333.106a3.005 3.005 0 1 1-6.01 0 3.005 3.005 0 0 1 6.01 0"/>
+        <path fill="#F86B27" d="M57.036 319.807a1.547 1.547 0 1 1-3.094 0 1.547 1.547 0 0 1 3.094 0M319.627 262.7a1.6 1.6 0 1 1-3.199-.001 1.6 1.6 0 0 1 3.199 0M23.789 154.769a2.25 2.25 0 1 1-4.501 0 2.25 2.25 0 1 1 4.5 0"/>
+        <path fill="#713C80" d="M191.996 72.7a2.25 2.25 0 1 1-4.501-.001 2.25 2.25 0 0 1 4.5 0"/>
+        <path fill="#F86B27" d="M32.951 149.781a1.247 1.247 0 1 1-2.494 0 1.247 1.247 0 0 1 2.494 0"/>
+        <path fill="#DF2226" d="M247.481 80.738a1.473 1.473 0 1 1-2.946 0 1.473 1.473 0 0 1 2.946 0"/>
+        <path fill="#F86B27" d="M31.24 228.566l-.538-1.926 4.28-1.197-1.197-4.28 1.926-.539 1.736 6.206z"/>
+        <path fill="#F86B27" d="M27.463 235.276l-.539-1.926 4.28-1.197-1.196-4.28 1.926-.539 1.735 6.206z"/>
+        <path fill="#F86B27" d="M31.474 233.116l-1.735-6.206 6.206-1.736.54 1.925-4.282 1.198 1.197 4.28z"/>
+        <path fill="#713C80" d="M179.164 77.977a2.764 2.764 0 0 0-2.761 2.76 2.765 2.765 0 0 0 2.76 2.762 2.764 2.764 0 0 0 2.76-2.762 2.764 2.764 0 0 0-2.76-2.76m0 7.521a4.767 4.767 0 0 1-4.76-4.76 4.766 4.766 0 0 1 4.76-4.76 4.765 4.765 0 0 1 4.76 4.76 4.766 4.766 0 0 1-4.76 4.76"/>
+        <path fill="#F86B27" d="M281.002 318.256l2.573 2.574 2.575-2.574-2.575-2.574-2.573 2.574zm2.573 5.402l-5.401-5.402 5.401-5.402 5.404 5.402-5.404 5.402z"/>
+        <path fill="#DF2226" d="M300.805 133.69l-5.783-5.783 1.414-1.414 5.783 5.783z"/>
+        <path fill="#DF2226" d="M296.436 133.69l-1.414-1.414 5.783-5.783 1.414 1.414z"/>
+        <g transform="translate(64 231.5)">
+            <mask id="k" fill="#fff">
+                <use xlink:href="#j"/>
+            </mask>
+            <path d="M95.387 4.612L7.023 55.629c-4.13 2.385-6.5 5.581-6.5 8.769 0 2.67 1.658 5.098 4.668 6.835l92.032 53.135c3.029 1.749 7.086 2.606 11.336 2.606 5.112 0 10.499-1.241 14.693-3.663l88.365-51.018c4.131-2.385 6.5-5.581 6.5-8.769 0-2.671-1.657-5.098-4.668-6.836L121.416 3.554c-3.027-1.748-7.085-2.605-11.334-2.605-5.112 0-10.499 1.241-14.695 3.663m2.336 118.891L5.691 70.368c-2.688-1.552-4.168-3.672-4.168-5.97 0-2.821 2.187-5.702 6-7.904L95.887 5.476c4.059-2.342 9.263-3.544 14.1 [...]
+        </g>
+        <path fill="#757575" fill-opacity=".3" d="M164.566 339.775l-68.002-39.26c-4.835-2.792-4.229-7.669 1.354-10.89l65.292-37.698c5.583-3.222 14.028-3.573 18.862-.78l68.003 39.26c4.835 2.792 4.23 7.668-1.354 10.89l-65.29 37.697c-5.584 3.222-14.03 3.573-18.865.781"/>
+        <g transform="translate(88 149.5)">
+            <mask id="n" fill="#fff">
+                <use xlink:href="#l"/>
+            </mask>
+            <path fill="url(#m)" d="M74.607 3.655L36.262 25.793H.546V125.89h.01c-.145 2.003.971 3.934 3.433 5.356l72.056 41.601c5.123 2.958 14.071 2.587 19.988-.828l69.183-39.943c3.073-1.774 4.71-4.021 4.867-6.186h.027V25.793h-35.735L94.596 2.826C92.275 1.486 89.168.83 85.914.829c-3.928 0-8.071.958-11.307 2.826" mask="url(#n)"/>
+        </g>
+        <g>
+            <path fill="#D4088C" d="M97.595 175.293h-9.05v100.098h.012c-.104 1.421.442 2.801 1.64 3.995-.765-1.021-1.112-2.144-1.028-3.293h-.012V175.996h9.145a13.392 13.392 0 0 0-.707-.703"/>
+            <path fill="#F86B27" d="M246.671 175.293c-.064.201-.134.401-.205.602h11.001v100.097h-.026c-.098 1.342-.766 2.715-1.99 3.988 1.627-1.436 2.518-3.033 2.632-4.589h.026V175.293h-11.438z"/>
+            <path fill="#DF2226" d="M113.786 293.328v-116.1H100.81v108.608zM121.754 297.929V185.025h-3.545v110.857zM128.1 301.592V186.388h-3.545v113.157z" style="mix-blend-mode:overlay"/>
+        </g>
+        <g transform="translate(88 125.5)">
+            <mask id="q" fill="#fff">
+                <use xlink:href="#o"/>
+            </mask>
+            <path fill="url(#p)" d="M74.607 3.665L5.424 43.608c-5.916 3.416-6.559 8.583-1.435 11.54L76.045 96.75c5.123 2.957 14.071 2.586 19.988-.828l69.183-39.944c5.916-3.415 6.558-8.582 1.434-11.54L94.596 2.837C92.274 1.497 89.168.84 85.914.84c-3.928 0-8.071.957-11.307 2.825" mask="url(#q)"/>
+        </g>
+        <g>
+            <path fill="#D4088C" d="M164.838 222.25l-72.056-41.602c-5.123-2.957-4.481-8.124 1.435-11.54l69.184-39.942c2.93-1.692 6.604-2.632 10.19-2.795-3.834.05-7.835.977-10.984 2.795l-69.183 39.942c-5.916 3.416-6.558 8.583-1.435 11.54l72.056 41.602c2.585 1.493 6.145 2.132 9.797 1.966-3.368.044-6.608-.582-9.004-1.966"/>
+            <path fill="#F86B27" d="M254.65 169.938l-72.055-41.602c-2.59-1.494-6.156-2.133-9.814-1.964 3.327-.028 6.522.597 8.89 1.964l72.057 41.602c5.123 2.958 4.48 8.125-1.435 11.54l-69.183 39.943c-2.926 1.689-6.594 2.628-10.174 2.793 3.868-.032 7.917-.957 11.097-2.793l69.183-39.943c5.915-3.415 6.558-8.582 1.435-11.54"/>
+            <path fill="#F86B27" d="M166.415 210.252l-53.646-30.972c-3.814-2.202-3.335-6.049 1.069-8.591l51.507-29.738c4.404-2.543 11.067-2.819 14.88-.617l53.646 30.972c3.815 2.203 3.336 6.049-1.068 8.592l-51.507 29.737c-4.404 2.543-11.067 2.82-14.881.617"/>
+            <path fill="#4A2754" d="M113.837 176.475l51.507-29.737c4.404-2.543 11.067-2.819 14.881-.617l53.645 30.972c.5.288.921.606 1.274.944 2.05-2.315 1.691-5.019-1.274-6.73l-53.645-30.973c-3.814-2.202-10.477-1.926-14.88.617l-51.508 29.737c-3.828 2.21-4.686 5.404-2.342 7.648.588-.662 1.362-1.295 2.342-1.86"/>
+            <path fill="#F86B27" d="M186.088 229.354l60.952-35.256c.558-.322 1.01-1.185 1.01-1.929v-1c0-.743-.452-1.085-1.01-.763l-60.952 35.256c-.558.322-1.01 1.185-1.01 1.929v1c0 .743.452 1.085 1.01.763"/>
+            <path fill="#C7531B" d="M245.706 193.336c.558-.322 1.01-1.186 1.01-1.93v-.812l.325-.188c.558-.321 1.01.02 1.01.763v1c0 .744-.452 1.607-1.01 1.93l-60.952 35.255c-.558.322-1.01-.02-1.01-.763v-.187l60.627-35.068z"/>
+            <path fill="#F86B27" d="M186.088 240.081l60.952-35.255c.558-.323 1.01-1.186 1.01-1.93v-1c0-.743-.452-1.085-1.01-.763l-60.952 35.256c-.558.322-1.01 1.185-1.01 1.928v1c0 .744.452 1.086 1.01.764"/>
+            <path fill="#C7531B" d="M245.706 204.063c.558-.322 1.01-1.186 1.01-1.929v-.813l.325-.188c.558-.321 1.01.02 1.01.763v1c0 .744-.452 1.607-1.01 1.93l-60.952 35.255c-.558.322-1.01-.019-1.01-.764v-.186l60.627-35.068z"/>
+            <path fill="#F86B27" d="M186.088 250.808l60.952-35.255c.558-.322 1.01-1.185 1.01-1.93v-1c0-.742-.452-1.084-1.01-.762l-60.952 35.256c-.558.32-1.01 1.185-1.01 1.928v1c0 .743.452 1.085 1.01.763"/>
+            <path fill="#C7531B" d="M245.706 214.79c.558-.322 1.01-1.186 1.01-1.929v-.813l.325-.188c.558-.321 1.01.02 1.01.763v1c0 .744-.452 1.607-1.01 1.93l-60.952 35.255c-.558.322-1.01-.02-1.01-.763v-.187l60.627-35.068z"/>
+            <path fill="#F86B27" d="M186.088 261.535l60.952-35.255c.558-.323 1.01-1.186 1.01-1.93v-1c0-.743-.452-1.085-1.01-.763l-60.952 35.256c-.558.322-1.01 1.185-1.01 1.928v1c0 .744.452 1.086 1.01.764"/>
+            <path fill="#C7531B" d="M245.706 225.517c.558-.322 1.01-1.186 1.01-1.929v-.813l.325-.188c.558-.32 1.01.02 1.01.763v1c0 .744-.452 1.607-1.01 1.93l-60.952 35.255c-.558.322-1.01-.019-1.01-.764v-.186l60.627-35.068z"/>
+            <path fill="#F86B27" d="M186.088 272.262l60.952-35.255c.558-.322 1.01-1.185 1.01-1.93v-1c0-.742-.452-1.084-1.01-.762l-60.952 35.256c-.558.32-1.01 1.185-1.01 1.928v1c0 .743.452 1.085 1.01.763"/>
+            <path fill="#C7531B" d="M245.706 236.244c.558-.322 1.01-1.186 1.01-1.929v-.813l.325-.188c.558-.32 1.01.02 1.01.763v1c0 .744-.452 1.607-1.01 1.93l-60.952 35.255c-.558.322-1.01-.02-1.01-.763v-.187l60.627-35.068z"/>
+            <path fill="#F86B27" d="M186.088 282.99l60.952-35.257c.558-.32 1.01-1.185 1.01-1.929v-1c0-.743-.452-1.085-1.01-.762l-60.952 35.255c-.558.322-1.01 1.185-1.01 1.928v1c0 .744.452 1.086 1.01.764"/>
+            <path fill="#C7531B" d="M245.706 246.972c.558-.322 1.01-1.186 1.01-1.93v-.812l.325-.188c.558-.322 1.01.02 1.01.763v1c0 .743-.452 1.607-1.01 1.929l-60.952 35.256c-.558.322-1.01-.02-1.01-.764v-.187l60.627-35.067z"/>
+            <path fill="#F86B27" d="M186.088 293.716l60.952-35.255c.558-.322 1.01-1.185 1.01-1.93v-1c0-.743-.452-1.085-1.01-.762l-60.952 35.256c-.558.32-1.01 1.185-1.01 1.928v1c0 .743.452 1.085 1.01.763"/>
+            <path fill="#C7531B" d="M245.706 257.698c.558-.322 1.01-1.186 1.01-1.929v-.813l.325-.188c.558-.322 1.01.02 1.01.764v1c0 .743-.452 1.606-1.01 1.93l-60.952 35.254c-.558.322-1.01-.02-1.01-.763v-.187l60.627-35.068z"/>
+            <path fill="#F86B27" d="M186.088 304.443l60.952-35.256c.558-.32 1.01-1.185 1.01-1.929v-1c0-.743-.452-1.085-1.01-.762l-60.952 35.255c-.558.322-1.01 1.185-1.01 1.928v1c0 .744.452 1.086 1.01.764"/>
+            <path fill="#C7531B" d="M245.706 268.426c.558-.322 1.01-1.186 1.01-1.93v-.812l.325-.188c.558-.322 1.01.02 1.01.763v1c0 .743-.452 1.607-1.01 1.929l-60.952 35.256c-.558.322-1.01-.02-1.01-.764v-.187l60.627-35.067z"/>
+            <path fill="#F86B27" d="M186.088 315.17l60.952-35.255c.558-.322 1.01-1.185 1.01-1.93v-1c0-.743-.452-1.085-1.01-.762l-60.952 35.256c-.558.32-1.01 1.185-1.01 1.928v1c0 .743.452 1.085 1.01.763"/>
+            <path fill="#C7531B" d="M245.706 279.152c.558-.322 1.01-1.186 1.01-1.929v-.813l.325-.188c.558-.32 1.01.02 1.01.764v1c0 .743-.452 1.606-1.01 1.93l-60.952 35.254c-.558.322-1.01-.02-1.01-.763v-.187l60.627-35.068z"/>
+            <path fill="#F86B27" d="M174.956 231.099a1.636 1.636 0 1 1-3.272 0 1.636 1.636 0 0 1 3.272 0"/>
+            <path fill="#C7531B" d="M173.32 232.121a1.636 1.636 0 0 1-1.605-1.329 1.636 1.636 0 1 0 3.21 0 1.636 1.636 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 241.825a1.636 1.636 0 1 1-3.272.002 1.636 1.636 0 0 1 3.272-.002"/>
+            <path fill="#C7531B" d="M173.32 242.848a1.635 1.635 0 0 1-1.605-1.33 1.636 1.636 0 1 0 3.21 0 1.635 1.635 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 252.553a1.636 1.636 0 1 1-3.272 0 1.636 1.636 0 0 1 3.272 0"/>
+            <path fill="#C7531B" d="M173.32 253.575a1.635 1.635 0 0 1-1.605-1.329 1.636 1.636 0 1 0 3.21 0 1.635 1.635 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 263.28a1.636 1.636 0 1 1-3.272 0 1.636 1.636 0 0 1 3.272 0"/>
+            <path fill="#C7531B" d="M173.32 264.303a1.636 1.636 0 0 1-1.605-1.33 1.636 1.636 0 1 0 3.21 0 1.636 1.636 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 274.007a1.636 1.636 0 1 1-3.272 0 1.636 1.636 0 0 1 3.272 0"/>
+            <path fill="#C7531B" d="M173.32 275.03a1.635 1.635 0 0 1-1.605-1.33 1.636 1.636 0 1 0 3.21 0 1.635 1.635 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 284.733a1.636 1.636 0 1 1-3.272.002 1.636 1.636 0 0 1 3.272-.002"/>
+            <path fill="#C7531B" d="M173.32 285.757a1.636 1.636 0 0 1-1.605-1.33 1.636 1.636 0 1 0 3.21 0 1.636 1.636 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 295.46a1.636 1.636 0 1 1-3.272 0 1.636 1.636 0 0 1 3.272 0"/>
+            <path fill="#C7531B" d="M173.32 296.483a1.635 1.635 0 0 1-1.605-1.329 1.636 1.636 0 1 0 3.21 0 1.635 1.635 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 306.188a1.636 1.636 0 1 1-3.272 0 1.636 1.636 0 0 1 3.272 0"/>
+            <path fill="#C7531B" d="M173.32 307.21a1.636 1.636 0 0 1-1.605-1.33 1.636 1.636 0 1 0 3.21 0 1.636 1.636 0 0 1-1.605 1.33"/>
+            <path fill="#F86B27" d="M174.956 316.915a1.636 1.636 0 1 1-3.272 0 1.636 1.636 0 0 1 3.272 0"/>
+            <path fill="#C7531B" d="M173.32 317.938a1.635 1.635 0 0 1-1.605-1.33 1.636 1.636 0 1 0 3.21 0 1.635 1.635 0 0 1-1.605 1.33"/>
+            <path fill="#4A2754" d="M145.675 227.347a.92.92 0 0 0-.463.119c-.423.244-.665.839-.665 1.63v65.839c0 1.599.97 3.459 2.158 4.145l2.441 1.41c.468.27.91.31 1.245.12.422-.244.665-.84.665-1.631V233.14c0-1.6-.969-3.458-2.158-4.146l-2.44-1.41c-.276-.158-.543-.238-.783-.238m4.254 73.88c-.327 0-.678-.104-1.03-.308l-2.442-1.41c-1.327-.765-2.406-2.817-2.406-4.574v-65.838c0-.975.332-1.726.912-2.061.494-.286 1.113-.243 1.742.12l2.441 1.41c1.327.765 2.406 2.818 2.406 4.575v65.838c0 .974-.3 [...]
+        </g>
+        <g transform="translate(172 99.5)">
+            <mask id="t" fill="#fff">
+                <use xlink:href="#r"/>
+            </mask>
+            <path fill="url(#s)" d="M.247 1.705l2.79 3.181V28.48c0 5.152 3.132 11.135 6.996 13.366L61.377 71.49c.055.032.107.052.16.082l1.658 1.889 2.608-1.521c.036-.019.071-.042.107-.063l.247-.144-.008-.007c1.366-.914 2.225-2.835 2.225-5.524V37.808L3.037.086.247 1.705z" mask="url(#t)"/>
+        </g>
+        <g>
+            <path fill="#F86B27" d="M172.247 101.205l65.336 37.722v28.394c0 5.151-3.13 7.52-6.996 5.288l-51.344-29.644c-3.864-2.23-6.996-8.215-6.996-13.366v-28.394z"/>
+            <path fill="#4A2754" d="M170.707 211.602l-12.507 7.274-56.137-32.411 11.628-6.68z"/>
+        </g>
+        <g transform="translate(108 137.5)">
+            <mask id="w" fill="#fff">
+                <use xlink:href="#u"/>
+            </mask>
+            <path fill="url(#v)" d="M.615 1.995l2.79 3.181V28.77c0 5.151 3.132 11.135 6.995 13.367l51.346 29.644c.053.03.106.052.16.081l1.657 1.889 2.607-1.52c.037-.019.072-.043.108-.063l.246-.144-.007-.008c1.365-.915 2.225-2.834 2.225-5.524V38.098L3.405.376.615 1.995z" mask="url(#w)"/>
+        </g>
+        <g transform="translate(108 138.5)">
+            <mask id="z" fill="#fff">
+                <use xlink:href="#x"/>
+            </mask>
+            <path fill="url(#y)" d="M.615 29.389c0 5.151 3.132 11.136 6.995 13.366L58.956 72.4c3.863 2.23 6.996-.138 6.996-5.289V38.717L.615.996v28.393z" mask="url(#z)"/>
+        </g>
+        <g>
+            <path fill="#38025B" d="M247.724 165.956l-9.852-5.787 9.852 5.787z"/>
+            <path fill="#DF2226" d="M3.612 196.375a1.473 1.473 0 1 1-2.946 0 1.473 1.473 0 0 1 2.946 0"/>
+        </g>
+    </g>
+</svg>
diff --git a/docs/assets/images/integrations/hibernate.svg b/docs/assets/images/integrations/hibernate.svg
new file mode 100644
index 0000000..38e4f31
--- /dev/null
+++ b/docs/assets/images/integrations/hibernate.svg
@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="32" height="34" viewBox="0 0 32 34">
+    <g fill="none" fill-rule="nonzero">
+        <path fill="#59666C" d="M19.209 22.367l-.117.344 6.143 10.418.347.246L32 22.277l-6.418-11.142-6.373 11.232zM6.284.038L0 11.136l6.53 11.23 6.216-11.23-.016-.454L6.57.264 6.285.038z"/>
+        <path fill="#BCAE79" d="M6.284.038l6.463 11.098h12.835L19.075.037H6.285zm.245 22.329l6.329 11.008h12.724L19.21 22.367H6.529z"/>
+    </g>
+</svg>
diff --git a/docs/assets/images/integrations/kafka.svg b/docs/assets/images/integrations/kafka.svg
new file mode 100644
index 0000000..db145e2
--- /dev/null
+++ b/docs/assets/images/integrations/kafka.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="33" height="52" viewBox="0 0 33 52">
+    <path fill="#000" fill-rule="nonzero" d="M25.248 28.802c-2.024 0-3.84.897-5.083 2.31l-3.186-2.256c.338-.931.533-1.93.533-2.977a8.697 8.697 0 0 0-.515-2.929l3.179-2.231a6.758 6.758 0 0 0 5.072 2.298 6.786 6.786 0 0 0 6.78-6.78 6.786 6.786 0 0 0-6.78-6.778 6.786 6.786 0 0 0-6.778 6.779c0 .669.1 1.314.282 1.925l-3.18 2.232a8.75 8.75 0 0 0-5.422-3.15v-3.833c3.071-.645 5.385-3.373 5.385-6.633A6.786 6.786 0 0 0 8.755 0a6.786 6.786 0 0 0-6.778 6.779c0 3.216 2.254 5.91 5.263 6.602v3.883C3.13 [...]
+</svg>
diff --git a/docs/assets/images/integrations/more.svg b/docs/assets/images/integrations/more.svg
new file mode 100644
index 0000000..42a3af1
--- /dev/null
+++ b/docs/assets/images/integrations/more.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg width="33.459" height="8" version="1.1" viewBox="0 0 8.8528 2.1167" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <metadata>
+  <rdf:RDF>
+   <cc:Work rdf:about="">
+    <dc:format>image/svg+xml</dc:format>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <dc:title/>
+   </cc:Work>
+  </rdf:RDF>
+ </metadata>
+ <g transform="translate(-5.163 -286.42)" fill="#ededed" stroke="#8e8e8e" stroke-width=".13935">
+  <circle cx="9.525" cy="287.47" r=".98866" style="paint-order:markers fill stroke"/>
+  <circle cx="6.2213" cy="287.47" r=".98866" style="paint-order:markers fill stroke"/>
+  <circle cx="12.957" cy="287.47" r=".98866" style="paint-order:markers fill stroke"/>
+ </g>
+</svg>
diff --git a/docs/assets/images/integrations/oracle.svg b/docs/assets/images/integrations/oracle.svg
new file mode 100644
index 0000000..484c750
--- /dev/null
+++ b/docs/assets/images/integrations/oracle.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="92" height="12" viewBox="0 0 92 12">
+    <path fill="#F80000" fill-rule="nonzero" d="M38.297 7.504h5.853l-3.095-4.98-5.68 9.003H32.79L39.699.713c.3-.437.8-.7 1.356-.7.537 0 1.038.254 1.329.682l6.936 10.832h-2.585l-1.22-2.012H39.59l-1.293-2.011zm26.852 2.011V.121h-2.194v10.313c0 .283.11.556.32.765.208.21.49.328.8.328h10.004l1.292-2.012H65.15zM28.858 7.831a3.854 3.854 0 1 0 0-7.71H19.26v11.406h2.193V2.133h7.258c1.02 0 1.839.828 1.839 1.848s-.82 1.848-1.839 1.848l-6.184-.01 6.548 5.708h3.186L27.856 7.83h1.002zM5.762 11.527A5.7 [...]
+</svg>
diff --git a/docs/assets/images/integrations/osgi.svg b/docs/assets/images/integrations/osgi.svg
new file mode 100644
index 0000000..dae8409
--- /dev/null
+++ b/docs/assets/images/integrations/osgi.svg
@@ -0,0 +1,17 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="42" height="39" viewBox="0 0 42 39">
+    <g fill="none" fill-rule="nonzero">
+        <path fill="#FF7300" d="M9.376 12.332S15.346.008 21.069.008c5.722 0 11.483 12.324 11.483 12.324l-.936 1.815S27.87 9.256 21.069 9.256c-6.802 0-10.7 4.89-10.7 4.89l-.993-1.814z"/>
+        <path fill="#FFB780" d="M13.537 12.488a13.108 13.108 0 0 0-2.595 2.374c1.753 2.27 5.022 5.247 10.128 5.247 5.077 0 8.24-2.942 9.927-5.206a13.129 13.129 0 0 0-2.557-2.368c-1.64 1.413-4.071 2.779-7.37 2.779-3.35 0-5.852-1.4-7.533-2.826z"/>
+        <path fill="#F30" d="M31.034 9.46c-.033.06-.642 1.174-1.886 2.42 1.62 1.16 2.468 2.267 2.468 2.267l.936-1.816s-.565-1.21-1.518-2.872zm-20.108.03c-.97 1.645-1.552 2.841-1.552 2.841l.997 1.816s.872-1.096 2.514-2.25c-1.301-1.26-1.948-2.388-1.96-2.408z"/>
+        <g>
+            <path fill="#FF7300" d="M36.238 18.719s7.688 11.333 4.826 16.288c-2.86 4.956-16.414 3.783-16.414 3.783l-1.103-1.718s6.108-.798 9.509-6.688c3.4-5.891 1.114-11.712 1.114-11.712l2.068.047z"/>
+            <path fill="#FFB780" d="M34.022 22.245a13.108 13.108 0 0 0-.759-3.435c-2.841.383-7.054 1.726-9.607 6.148-2.538 4.397-1.573 8.607-.455 11.2 1.148-.194 2.271-.54 3.33-1.03-.405-2.127-.372-4.915 1.278-7.772 1.675-2.901 4.137-4.369 6.213-5.111z"/>
+            <path fill="#F30" d="M27.897 38.912c-.036-.059-.696-1.143-1.154-2.843-1.814.822-3.197 1.003-3.197 1.003l1.105 1.719s1.331.115 3.246.121zm10.028-17.43a44.635 44.635 0 0 0-1.685-2.764l-2.071-.045s.513 1.304.692 3.303c1.742-.497 3.042-.494 3.064-.493z"/>
+        </g>
+        <g>
+            <path fill="#FF7300" d="M17.276 38.79s-13.658.99-16.52-3.966c-2.86-4.955 4.932-16.106 4.932-16.106l2.04-.097s-2.364 5.69 1.037 11.58 9.586 6.82 9.586 6.82l-1.075 1.768z"/>
+            <path fill="#FFB780" d="M15.33 35.107c1.066.503 2.195.86 3.354 1.06 1.09-2.652 2.032-6.972-.52-11.394-2.54-4.396-6.668-5.665-9.473-5.994a13.129 13.129 0 0 0-.771 3.399c2.043.713 4.441 2.136 6.09 4.992 1.676 2.902 1.715 5.768 1.32 7.937z"/>
+            <path fill="#F30" d="M3.958 21.469c.07-.002 1.339-.031 3.04.422.195-1.982.73-3.27.73-3.27l-2.041.097s-.766 1.095-1.729 2.75zm10.08 17.4c1.911.016 3.238-.078 3.238-.078l1.074-1.771s-1.385-.208-3.206-1.052c-.44 1.757-1.094 2.88-1.105 2.9z"/>
+        </g>
+    </g>
+</svg>
diff --git a/docs/assets/images/integrations/spark.svg b/docs/assets/images/integrations/spark.svg
new file mode 100644
index 0000000..c0cb1b8
--- /dev/null
+++ b/docs/assets/images/integrations/spark.svg
@@ -0,0 +1,7 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="72" height="38" viewBox="0 0 72 38">
+    <g fill="none" fill-rule="evenodd">
+        <path fill="#E25A1C" d="M65.712 19.035c-.062-.133-.09-.2-.124-.264-.9-1.71-1.798-3.423-2.706-5.13-.091-.171-.08-.273.045-.42 1.432-1.672 2.856-3.351 4.281-5.028a.451.451 0 0 0 .115-.227c-.417.11-.834.217-1.25.327-1.73.459-3.46.915-5.188 1.38-.162.043-.235-.004-.315-.137-.982-1.641-1.97-3.278-2.956-4.916a.67.67 0 0 0-.215-.24c-.079.438-.16.875-.237 1.312-.275 1.544-.55 3.088-.823 4.632-.03.166-.071.332-.085.5-.014.16-.096.218-.24.264-2.039.64-4.075 1.286-6.111 1.931a.676.676 0 0 0 [...]
+        <path fill="#3C3A3E" d="M62.981 33.422c-1.263-.002-2.526-.008-3.789-.003-.166 0-.261-.048-.354-.19-1.495-2.278-2.997-4.55-4.498-6.825-.048-.072-.099-.142-.184-.264l-.955 7.265h-3.308c.039-.322.073-.634.113-.944l.972-7.398c.31-2.356.618-4.712.932-7.068.01-.07.056-.16.113-.196 1.139-.743 2.28-1.478 3.423-2.214.016-.011.04-.013.098-.03l-1.03 7.863.04.028 5.414-6c.053.305.099.566.143.828.129.749.252 1.499.39 2.246.027.15-.013.244-.113.349-1.159 1.212-2.313 2.43-3.468 3.645l-.157.17c. [...]
+        <path fill="#3C3A3E" fill-rule="nonzero" d="M66.6 33.403v-1.296h-.007l-.508 1.296h-.162l-.509-1.296h-.008v1.296h-.256V31.85h.396l.463 1.179.456-1.18h.392v1.553h-.256zm-2.252-1.345v1.345h-.256v-1.345h-.487v-.207h1.229v.207h-.486zM17.664 15.711h.76l-.179-1.152-.581 1.152zm.88.745h-1.266l-.402.788h-.897l1.978-3.696h.864l.674 3.696h-.831l-.12-.788zM23.075 14.293h-.451l-.152.853h.45c.273 0 .49-.18.49-.516 0-.223-.136-.337-.337-.337zm-1.092-.745h1.185c.62 0 1.054.37 1.054 1.005 0 .8-.5 [...]
+    </g>
+</svg>
diff --git a/docs/assets/images/integrations/spring.svg b/docs/assets/images/integrations/spring.svg
new file mode 100644
index 0000000..0e5f74e
--- /dev/null
+++ b/docs/assets/images/integrations/spring.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="37" height="37" viewBox="0 0 37 37">
+    <path fill="#77BC1F" fill-rule="nonzero" d="M33.598 1.925a17.06 17.06 0 0 1-1.972 3.502A18.534 18.534 0 0 0 18.524 0C8.362 0 0 8.372 0 18.548c0 5.076 2.079 9.936 5.754 13.438l.684.607a18.525 18.525 0 0 0 11.932 4.364c9.661 0 17.783-7.574 18.471-17.225.505-4.725-.88-10.7-3.243-17.807zM8.386 32.092c-.298.37-.755.587-1.231.587-.871 0-1.583-.717-1.583-1.587 0-.871.717-1.588 1.583-1.588a1.593 1.593 0 0 1 1.232 2.589zm25.135-5.552c-4.57 6.096-14.333 4.042-20.593 4.335 0 0-1.111.067-2.227.2 [...]
+</svg>
diff --git a/docs/assets/images/java.svg b/docs/assets/images/java.svg
new file mode 100644
index 0000000..962f9d7
--- /dev/null
+++ b/docs/assets/images/java.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="56" height="76" viewBox="0 0 56 76">
+    <g fill="none" fill-rule="nonzero">
+        <path fill="#5382A1" d="M18.059 58.51s-2.887 1.679 2.054 2.247c5.987.683 9.047.585 15.645-.664 0 0 1.734 1.088 4.157 2.03-14.79 6.339-33.473-.367-21.856-3.613M16.251 50.238s-3.238 2.397 1.708 2.908c6.395.66 11.446.714 20.185-.969 0 0 1.209 1.226 3.11 1.896-17.882 5.229-37.8.412-25.003-3.835"/>
+        <path fill="#E76F00" d="M31.487 36.206c3.645 4.196-.957 7.972-.957 7.972s9.253-4.777 5.004-10.759c-3.97-5.578-7.013-8.35 9.464-17.907 0 0-25.864 6.46-13.51 20.694"/>
+        <path fill="#5382A1" d="M51.048 64.628s2.137 1.76-2.353 3.122c-8.537 2.586-35.532 3.367-43.03.103-2.697-1.172 2.359-2.8 3.949-3.141 1.658-.36 2.606-.293 2.606-.293-2.998-2.112-19.377 4.147-8.32 5.94 30.155 4.89 54.97-2.203 47.148-5.731M19.447 41.667s-13.731 3.262-4.863 4.446c3.745.502 11.21.388 18.163-.194 5.683-.48 11.39-1.499 11.39-1.499s-2.005.858-3.454 1.848C26.739 49.935-.2 48.229 7.556 44.478c6.559-3.17 11.891-2.81 11.891-2.81M44.08 55.436c14.174-7.366 7.62-14.444 3.046-13. [...]
+        <path fill="#E76F00" d="M35.534.081s7.85 7.853-7.446 19.929c-12.266 9.686-2.797 15.21-.005 21.52-7.16-6.46-12.414-12.147-8.89-17.44 5.175-7.768 19.508-11.535 16.34-24.009"/>
+        <path fill="#5382A1" d="M20.84 75.396c13.606.87 34.5-.484 34.994-6.922 0 0-.95 2.44-11.244 4.38-11.613 2.185-25.936 1.93-34.431.529 0 0 1.739 1.44 10.68 2.013"/>
+    </g>
+</svg>
diff --git a/docs/assets/images/left-nav-arrow.svg b/docs/assets/images/left-nav-arrow.svg
new file mode 100644
index 0000000..747a83d
--- /dev/null
+++ b/docs/assets/images/left-nav-arrow.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="7" height="10" viewBox="0 0 7 10">
+    <path fill="#F86D24" fill-rule="nonzero" d="M1.175 0L0 1.175 3.817 5 0 8.825 1.175 10l5-5z"/>
+</svg>
diff --git a/docs/assets/images/lines-bg-1.svg b/docs/assets/images/lines-bg-1.svg
new file mode 100644
index 0000000..c6f714a
--- /dev/null
+++ b/docs/assets/images/lines-bg-1.svg
@@ -0,0 +1,54 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="519" viewBox="0 0 1440 519">
+    <g fill="none" fill-rule="evenodd" stroke="#979797" opacity=".104">
+        <path d="M186.834 10.225c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.94 534.119-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M167.138 13.698c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.941 534.119-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M147.442 17.17c177.381-30.6 337.277 14.317 479.687 134.751 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.941 534.118-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M127.746 20.644c177.38-30.6 337.276 14.316 479.686 134.75 213.615 180.65 450.778 155.08 556.271 114.139 105.494-40.941 534.118-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M108.05 24.117c177.38-30.6 337.276 14.316 479.686 134.75 213.615 180.65 450.778 155.08 556.271 114.139 105.494-40.941 534.118-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M88.353 27.59C265.735-3.01 425.63 41.906 568.04 162.34c213.615 180.65 450.778 155.08 556.271 114.139 105.494-40.941 534.118-126.673 720.637-47.865 124.345 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M68.657 31.063c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.778 155.08 556.271 114.139 105.493-40.941 534.118-126.673 720.636-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M48.961 34.536c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.941 534.119-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M29.265 38.008c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.652 450.777 155.08 556.27 114.14 105.494-40.941 534.119-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M9.569 41.481c177.381-30.6 337.277 14.317 479.687 134.75 213.614 180.652 450.777 155.08 556.27 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-10.127 44.954c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-29.823 48.427c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.345 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-49.52 51.9c177.382-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.493-40.941 534.118-126.674 720.637-47.865 124.345 52.54 215.962 97.987 274.851 136.344"/>
+        <path d="M-69.216 55.373c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.14 105.494-40.941 534.119-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-88.912 58.846c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.14 105.494-40.941 534.119-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-108.608 62.32c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.079 556.27 114.138 105.494-40.94 534.118-126.673 720.637-47.864 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-128.304 65.792c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.494-40.942 534.118-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.851 136.344"/>
+        <path d="M-148 69.265c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.494-40.942 534.118-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.851 136.344"/>
+        <path d="M-167.697 72.738C9.685 42.138 169.58 87.055 311.99 207.488c213.615 180.651 450.778 155.08 556.271 114.14 105.493-40.942 534.118-126.674 720.637-47.865 124.345 52.539 215.963 97.987 274.851 136.344"/>
+        <path d="M-187.393 76.211c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.778 155.08 556.27 114.14 105.494-40.942 534.119-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-207.089 79.684c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.14 105.494-40.942 534.119-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-226.785 83.157c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.139 105.494-40.94 534.119-126.673 720.637-47.864 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-246.481 86.63C-69.1 56.03 90.796 100.947 233.206 221.38 446.82 402.031 683.983 376.46 789.476 335.52c105.494-40.94 534.118-126.673 720.637-47.864 124.346 52.539 215.963 97.987 274.851 136.344"/>
+        <path d="M-266.177 90.103c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.139 105.494-40.94 534.118-126.673 720.637-47.864 124.346 52.539 215.963 97.987 274.851 136.343"/>
+        <path d="M-285.873 93.576c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.139 105.494-40.94 534.118-126.673 720.637-47.864 124.345 52.539 215.963 97.987 274.851 136.343"/>
+        <path d="M-305.57 97.049c177.382-30.6 337.277 14.317 479.687 134.75 213.615 180.65 450.778 155.08 556.271 114.139 105.493-40.94 534.118-126.673 720.637-47.865 124.345 52.54 215.962 97.988 274.851 136.344"/>
+        <path d="M-325.266 100.522c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.94 534.119-126.673 720.637-47.865 124.346 52.54 215.963 97.988 274.852 136.344"/>
+        <path d="M-344.962 103.995c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.94 534.119-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M-364.658 107.468c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.941 534.118-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M-384.354 110.94c177.38-30.6 337.276 14.317 479.686 134.751 213.615 180.65 450.778 155.08 556.271 114.139 105.494-40.941 534.118-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-404.05 114.414c177.38-30.6 337.276 14.316 479.686 134.75 213.615 180.65 450.778 155.08 556.271 114.139 105.494-40.941 534.118-126.673 720.637-47.865 124.345 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-423.747 117.887c177.382-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.778 155.08 556.271 114.139 105.493-40.941 534.118-126.673 720.637-47.865 124.345 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-443.443 121.36c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.778 155.08 556.27 114.139 105.494-40.941 534.119-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M-463.139 124.833c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.941 534.119-126.673 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M-482.835 128.306c177.381-30.6 337.277 14.316 479.687 134.75 213.615 180.65 450.777 155.08 556.27 114.139 105.494-40.941 534.119-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M-502.531 131.778c177.381-30.6 337.277 14.317 479.686 134.75 213.615 180.652 450.778 155.08 556.271 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-522.227 135.251c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.652 450.778 155.08 556.271 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-541.924 138.724c177.382-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.345 52.54 215.963 97.987 274.851 136.344"/>
+        <path d="M-561.62 142.197c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.493-40.941 534.118-126.674 720.637-47.865 124.345 52.54 215.962 97.987 274.851 136.344"/>
+        <path d="M-581.316 145.67c177.381-30.6 337.277 14.317 479.687 134.75C111.986 461.072 349.148 435.5 454.64 394.56c105.494-40.941 534.119-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M-601.012 149.143c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.14 105.494-40.941 534.119-126.674 720.637-47.865 124.346 52.54 215.963 97.987 274.852 136.344"/>
+        <path d="M-620.708 152.616c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-640.404 156.09c177.38-30.6 337.276 14.316 479.686 134.75C52.897 471.49 290.06 445.919 395.553 404.978c105.494-40.94 534.118-126.673 720.637-47.864 124.346 52.539 215.963 97.987 274.851 136.344"/>
+        <path d="M-660.1 159.562c177.38-30.6 337.276 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.494-40.941 534.118-126.674 720.637-47.865 124.345 52.539 215.963 97.987 274.851 136.344"/>
+        <path d="M-679.797 163.035c177.382-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.778 155.08 556.271 114.14 105.493-40.942 534.118-126.674 720.637-47.865 124.345 52.539 215.962 97.987 274.851 136.344"/>
+        <path d="M-699.493 166.508c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.778 155.08 556.27 114.14 105.494-40.942 534.119-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-719.189 169.981c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.14 105.494-40.942 534.119-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-738.885 173.454c177.381-30.6 337.277 14.317 479.687 134.75 213.615 180.651 450.777 155.08 556.27 114.14 105.494-40.942 534.119-126.674 720.637-47.865 124.346 52.539 215.963 97.987 274.852 136.344"/>
+        <path d="M-758.581 176.927c177.38-30.6 337.277 14.317 479.686 134.75 213.615 180.651 450.778 155.08 556.271 114.139 105.494-40.94 534.118-126.673 720.637-47.864 124.346 52.539 215.963 97.987 274.851 136.344"/>
+        <path d="M-778.277 180.4c177.38-30.6 337.276 14.317 479.686 134.75C-84.976 495.801 152.187 470.23 257.68 429.29c105.494-40.94 534.118-126.673 720.637-47.864 124.346 52.539 215.963 97.987 274.851 136.344"/>
+    </g>
+</svg>
diff --git a/docs/assets/images/lines-bg-2.svg b/docs/assets/images/lines-bg-2.svg
new file mode 100644
index 0000000..42c4afa
--- /dev/null
+++ b/docs/assets/images/lines-bg-2.svg
@@ -0,0 +1,54 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="553" viewBox="0 0 1440 553">
+    <g fill="none" fill-rule="evenodd" stroke="#979797" opacity=".1">
+        <path d="M196.463 545.723c178.34 24.391 336.571-26.078 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.483 106.857 37.235 538.213 107.956 721.867 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M176.657 542.94C354.998 567.33 513.23 516.86 651.35 391.53c207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.926-145.853"/>
+        <path d="M156.852 540.156c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.717 551.948-133.482 106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M137.047 537.373c178.34 24.39 336.571-26.079 474.691-151.41 207.18-187.995 445.091-170.716 551.95-133.482 106.857 37.234 538.212 107.956 721.867 22.685 122.436-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M117.241 534.59c178.341 24.39 336.572-26.08 474.692-151.41 207.18-187.995 445.09-170.717 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M97.436 531.806c178.34 24.39 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.854"/>
+        <path d="M77.63 529.022c178.342 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.091-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M57.825 526.239c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.925-145.853"/>
+        <path d="M38.02 523.456c178.34 24.39 336.571-26.08 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M18.214 520.672c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.091-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-1.59 517.889c178.34 24.39 336.57-26.08 474.69-151.41 207.181-187.995 445.092-170.716 551.95-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.925-145.853"/>
+        <path d="M-21.396 515.105c178.34 24.391 336.571-26.079 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.483 106.857 37.234 538.213 107.956 721.867 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-41.202 512.322c178.341 24.39 336.572-26.079 474.692-151.41C640.67 172.918 878.58 190.197 985.44 227.43c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.926-145.853"/>
+        <path d="M-61.007 509.538C117.334 533.93 275.565 483.46 413.685 358.13c207.18-187.996 445.09-170.717 551.948-133.483 106.858 37.235 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-80.812 506.755c178.34 24.39 336.571-26.079 474.691-151.41C601.06 167.35 838.97 184.63 945.83 221.864c106.857 37.234 538.212 107.955 721.867 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-100.618 503.971c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.717 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-120.423 501.188c178.341 24.39 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-140.228 498.404c178.34 24.391 336.571-26.078 474.691-151.409C541.643 159 779.554 176.278 886.412 213.513c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-160.034 495.62c178.341 24.392 336.572-26.078 474.692-151.408 207.18-187.996 445.09-170.717 551.949-133.483 106.858 37.234 538.213 107.956 721.868 22.686C1710.91 176.568 1800.886 127.95 1858.4 87.56"/>
+        <path d="M-179.84 492.837c178.342 24.391 336.572-26.078 474.693-151.409 207.18-187.995 445.09-170.716 551.948-133.482C953.66 245.18 1385.015 315.9 1568.67 230.63c122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-199.645 490.054c178.342 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.091-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686C1671.3 171 1761.276 122.383 1818.79 81.995"/>
+        <path d="M-219.45 487.27c178.341 24.392 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-239.255 484.487c178.34 24.391 336.571-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-259.06 481.704c178.34 24.39 336.571-26.08 474.691-151.41C422.811 142.3 660.721 159.578 767.58 196.812c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.926-145.853"/>
+        <path d="M-278.866 478.92c178.341 24.391 336.572-26.079 474.692-151.409 207.18-187.996 445.09-170.717 551.949-133.483 106.857 37.234 538.213 107.956 721.867 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-298.671 476.137c178.34 24.39 336.571-26.079 474.691-151.41C383.2 136.733 621.111 154.012 727.97 191.246c106.857 37.234 538.213 107.955 721.867 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-318.477 473.353c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.996 445.09-170.717 551.949-133.483 106.858 37.235 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.925-145.853"/>
+        <path d="M-338.282 470.57C-159.941 494.96-1.71 444.49 136.41 319.16 343.59 131.166 581.5 148.445 688.358 185.679c106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-358.087 467.786c178.34 24.391 336.571-26.078 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.482 106.857 37.234 538.212 107.955 721.867 22.685 122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-377.893 465.003c178.341 24.39 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.925-145.853"/>
+        <path d="M-397.698 462.22c178.34 24.39 336.571-26.08 474.692-151.41 207.18-187.995 445.09-170.717 551.948-133.482 106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-417.503 459.436c178.34 24.39 336.571-26.079 474.691-151.41C264.368 120.032 502.28 137.31 609.137 174.545c106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.412-105.465 269.926-145.854"/>
+        <path d="M-437.309 456.652c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-457.114 453.869c178.34 24.391 336.571-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-476.92 451.086c178.341 24.39 336.572-26.08 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685C1394.025 132.032 1484 83.415 1541.515 43.026"/>
+        <path d="M-496.725 448.302c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.857 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.925-145.853"/>
+        <path d="M-516.53 445.519c178.34 24.39 336.571-26.08 474.691-151.41 207.18-187.995 445.091-170.716 551.95-133.482 106.857 37.234 538.213 107.955 721.867 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-536.336 442.735c178.341 24.391 336.572-26.079 474.692-151.409 207.18-187.996 445.09-170.717 551.949-133.483 106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.926-145.853"/>
+        <path d="M-556.141 439.952c178.341 24.39 336.572-26.079 474.692-151.41C125.73 100.548 363.64 117.827 470.499 155.06c106.858 37.234 538.214 107.955 721.868 22.685C1314.804 120.9 1404.78 72.281 1462.293 31.892"/>
+        <path d="M-575.946 437.168c178.34 24.391 336.571-26.079 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.483 106.857 37.235 538.212 107.956 721.867 22.686 122.436-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-595.752 434.385c178.341 24.39 336.572-26.079 474.692-151.41C86.12 94.98 324.03 112.26 430.889 149.494c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.925-145.853"/>
+        <path d="M-615.557 431.601c178.34 24.391 336.572-26.078 474.692-151.409C66.315 92.196 304.225 109.475 411.083 146.71c106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-635.362 428.818c178.34 24.39 336.571-26.079 474.691-151.41C46.51 89.414 284.42 106.693 391.278 143.927c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-655.168 426.034c178.341 24.391 336.572-26.078 474.692-151.409C26.704 86.63 264.614 103.908 371.473 141.143c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-674.973 423.25c178.34 24.392 336.571-26.078 474.692-151.408C6.899 83.846 244.809 101.125 351.667 138.359c106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.854"/>
+        <path d="M-694.779 420.467c178.341 24.391 336.572-26.078 474.692-151.409C-12.907 81.063 225.004 98.342 331.862 135.576 438.72 172.81 870.075 243.53 1053.73 158.26c122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-714.584 417.684c178.341 24.391 336.572-26.079 474.692-151.41C-32.712 78.28 205.198 95.559 312.057 132.793c106.858 37.234 538.213 107.956 721.868 22.686C1156.36 98.63 1246.336 50.013 1303.85 9.625"/>
+        <path d="M-734.39 414.9c178.342 24.392 336.572-26.078 474.692-151.409C-52.518 75.496 185.393 92.775 292.252 130.01c106.857 37.234 538.213 107.955 721.867 22.685C1136.556 95.847 1226.531 47.23 1284.045 6.841"/>
+        <path d="M-754.195 412.117c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686C1116.75 93.064 1206.725 44.446 1264.24 4.058"/>
+        <path d="M-774 409.334c178.341 24.39 336.572-26.08 474.692-151.41C-92.128 69.93 145.782 87.208 252.64 124.442c106.858 37.234 538.214 107.955 721.868 22.685C1096.945 90.28 1186.92 41.663 1244.434 1.274"/>
+    </g>
+</svg>
diff --git a/docs/assets/images/lines-bg-3.svg b/docs/assets/images/lines-bg-3.svg
new file mode 100644
index 0000000..42c4afa
--- /dev/null
+++ b/docs/assets/images/lines-bg-3.svg
@@ -0,0 +1,54 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="553" viewBox="0 0 1440 553">
+    <g fill="none" fill-rule="evenodd" stroke="#979797" opacity=".1">
+        <path d="M196.463 545.723c178.34 24.391 336.571-26.078 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.483 106.857 37.235 538.213 107.956 721.867 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M176.657 542.94C354.998 567.33 513.23 516.86 651.35 391.53c207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.926-145.853"/>
+        <path d="M156.852 540.156c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.717 551.948-133.482 106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M137.047 537.373c178.34 24.39 336.571-26.079 474.691-151.41 207.18-187.995 445.091-170.716 551.95-133.482 106.857 37.234 538.212 107.956 721.867 22.685 122.436-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M117.241 534.59c178.341 24.39 336.572-26.08 474.692-151.41 207.18-187.995 445.09-170.717 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M97.436 531.806c178.34 24.39 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.854"/>
+        <path d="M77.63 529.022c178.342 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.091-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M57.825 526.239c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.925-145.853"/>
+        <path d="M38.02 523.456c178.34 24.39 336.571-26.08 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M18.214 520.672c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.091-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-1.59 517.889c178.34 24.39 336.57-26.08 474.69-151.41 207.181-187.995 445.092-170.716 551.95-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.925-145.853"/>
+        <path d="M-21.396 515.105c178.34 24.391 336.571-26.079 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.483 106.857 37.234 538.213 107.956 721.867 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-41.202 512.322c178.341 24.39 336.572-26.079 474.692-151.41C640.67 172.918 878.58 190.197 985.44 227.43c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.926-145.853"/>
+        <path d="M-61.007 509.538C117.334 533.93 275.565 483.46 413.685 358.13c207.18-187.996 445.09-170.717 551.948-133.483 106.858 37.235 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-80.812 506.755c178.34 24.39 336.571-26.079 474.691-151.41C601.06 167.35 838.97 184.63 945.83 221.864c106.857 37.234 538.212 107.955 721.867 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-100.618 503.971c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.717 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-120.423 501.188c178.341 24.39 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-140.228 498.404c178.34 24.391 336.571-26.078 474.691-151.409C541.643 159 779.554 176.278 886.412 213.513c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-160.034 495.62c178.341 24.392 336.572-26.078 474.692-151.408 207.18-187.996 445.09-170.717 551.949-133.483 106.858 37.234 538.213 107.956 721.868 22.686C1710.91 176.568 1800.886 127.95 1858.4 87.56"/>
+        <path d="M-179.84 492.837c178.342 24.391 336.572-26.078 474.693-151.409 207.18-187.995 445.09-170.716 551.948-133.482C953.66 245.18 1385.015 315.9 1568.67 230.63c122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-199.645 490.054c178.342 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.091-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686C1671.3 171 1761.276 122.383 1818.79 81.995"/>
+        <path d="M-219.45 487.27c178.341 24.392 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-239.255 484.487c178.34 24.391 336.571-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-259.06 481.704c178.34 24.39 336.571-26.08 474.691-151.41C422.811 142.3 660.721 159.578 767.58 196.812c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.926-145.853"/>
+        <path d="M-278.866 478.92c178.341 24.391 336.572-26.079 474.692-151.409 207.18-187.996 445.09-170.717 551.949-133.483 106.857 37.234 538.213 107.956 721.867 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-298.671 476.137c178.34 24.39 336.571-26.079 474.691-151.41C383.2 136.733 621.111 154.012 727.97 191.246c106.857 37.234 538.213 107.955 721.867 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-318.477 473.353c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.996 445.09-170.717 551.949-133.483 106.858 37.235 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.925-145.853"/>
+        <path d="M-338.282 470.57C-159.941 494.96-1.71 444.49 136.41 319.16 343.59 131.166 581.5 148.445 688.358 185.679c106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-358.087 467.786c178.34 24.391 336.571-26.078 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.482 106.857 37.234 538.212 107.955 721.867 22.685 122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-377.893 465.003c178.341 24.39 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.925-145.853"/>
+        <path d="M-397.698 462.22c178.34 24.39 336.571-26.08 474.692-151.41 207.18-187.995 445.09-170.717 551.948-133.482 106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-417.503 459.436c178.34 24.39 336.571-26.079 474.691-151.41C264.368 120.032 502.28 137.31 609.137 174.545c106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.412-105.465 269.926-145.854"/>
+        <path d="M-437.309 456.652c178.341 24.391 336.572-26.078 474.692-151.409 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-457.114 453.869c178.34 24.391 336.571-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.948-133.482 106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-476.92 451.086c178.341 24.39 336.572-26.08 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.955 721.868 22.685C1394.025 132.032 1484 83.415 1541.515 43.026"/>
+        <path d="M-496.725 448.302c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.857 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.925-145.853"/>
+        <path d="M-516.53 445.519c178.34 24.39 336.571-26.08 474.691-151.41 207.18-187.995 445.091-170.716 551.95-133.482 106.857 37.234 538.213 107.955 721.867 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-536.336 442.735c178.341 24.391 336.572-26.079 474.692-151.409 207.18-187.996 445.09-170.717 551.949-133.483 106.858 37.234 538.213 107.956 721.868 22.686 122.436-56.847 212.411-105.465 269.926-145.853"/>
+        <path d="M-556.141 439.952c178.341 24.39 336.572-26.079 474.692-151.41C125.73 100.548 363.64 117.827 470.499 155.06c106.858 37.234 538.214 107.955 721.868 22.685C1314.804 120.9 1404.78 72.281 1462.293 31.892"/>
+        <path d="M-575.946 437.168c178.34 24.391 336.571-26.079 474.691-151.409 207.18-187.996 445.091-170.717 551.95-133.483 106.857 37.235 538.212 107.956 721.867 22.686 122.436-56.847 212.412-105.465 269.926-145.853"/>
+        <path d="M-595.752 434.385c178.341 24.39 336.572-26.079 474.692-151.41C86.12 94.98 324.03 112.26 430.889 149.494c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.411-105.464 269.925-145.853"/>
+        <path d="M-615.557 431.601c178.34 24.391 336.572-26.078 474.692-151.409C66.315 92.196 304.225 109.475 411.083 146.71c106.858 37.234 538.214 107.955 721.868 22.685 122.437-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-635.362 428.818c178.34 24.39 336.571-26.079 474.691-151.41C46.51 89.414 284.42 106.693 391.278 143.927c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.846 212.412-105.464 269.926-145.853"/>
+        <path d="M-655.168 426.034c178.341 24.391 336.572-26.078 474.692-151.409C26.704 86.63 264.614 103.908 371.473 141.143c106.858 37.234 538.213 107.955 721.868 22.685 122.436-56.847 212.411-105.464 269.925-145.853"/>
+        <path d="M-674.973 423.25c178.34 24.392 336.571-26.078 474.692-151.408C6.899 83.846 244.809 101.125 351.667 138.359c106.858 37.234 538.214 107.956 721.868 22.686 122.437-56.847 212.412-105.465 269.926-145.854"/>
+        <path d="M-694.779 420.467c178.341 24.391 336.572-26.078 474.692-151.409C-12.907 81.063 225.004 98.342 331.862 135.576 438.72 172.81 870.075 243.53 1053.73 158.26c122.436-56.847 212.412-105.464 269.926-145.853"/>
+        <path d="M-714.584 417.684c178.341 24.391 336.572-26.079 474.692-151.41C-32.712 78.28 205.198 95.559 312.057 132.793c106.858 37.234 538.213 107.956 721.868 22.686C1156.36 98.63 1246.336 50.013 1303.85 9.625"/>
+        <path d="M-734.39 414.9c178.342 24.392 336.572-26.078 474.692-151.409C-52.518 75.496 185.393 92.775 292.252 130.01c106.857 37.234 538.213 107.955 721.867 22.685C1136.556 95.847 1226.531 47.23 1284.045 6.841"/>
+        <path d="M-754.195 412.117c178.341 24.391 336.572-26.079 474.692-151.41 207.18-187.995 445.09-170.716 551.949-133.482 106.858 37.234 538.213 107.956 721.868 22.686C1116.75 93.064 1206.725 44.446 1264.24 4.058"/>
+        <path d="M-774 409.334c178.341 24.39 336.572-26.08 474.692-151.41C-92.128 69.93 145.782 87.208 252.64 124.442c106.858 37.234 538.214 107.955 721.868 22.685C1096.945 90.28 1186.92 41.663 1244.434 1.274"/>
+    </g>
+</svg>
diff --git a/docs/assets/images/lines-bg-4.svg b/docs/assets/images/lines-bg-4.svg
new file mode 100644
index 0000000..87b0a9b
--- /dev/null
+++ b/docs/assets/images/lines-bg-4.svg
@@ -0,0 +1,54 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1440" height="973" viewBox="0 0 1440 973">
+    <g fill="none" fill-rule="evenodd" stroke="#979797" opacity=".06">
+        <path d="M1087.77 102.125C914.927 152.38 790.92 262.896 715.745 433.67 602.985 689.833 378.618 770.826 265.85 780.258c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1106.995 96.612C934.152 146.868 810.144 257.383 734.97 428.158 622.21 684.32 397.843 765.313 285.075 774.746c-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1126.22 91.1c-172.843 50.255-296.85 160.77-372.024 331.545C641.436 678.807 417.068 759.8 304.3 769.233c-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1145.446 85.586C972.603 135.842 848.594 246.358 773.42 417.132 660.66 673.294 436.294 754.288 323.525 763.72c-112.768 9.432-535.598 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1164.671 80.074C991.828 130.33 867.82 240.845 792.646 411.62 679.886 667.782 455.519 748.775 342.75 758.207c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1183.896 74.56c-172.843 50.257-296.851 160.772-372.025 331.547-112.76 256.162-337.127 337.155-449.895 346.588-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1203.122 69.048C1030.278 119.304 906.27 229.82 831.096 400.594 718.336 656.756 493.97 737.75 381.201 747.182c-112.769 9.432-535.599 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1222.347 63.535c-172.843 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.127 337.156-449.896 346.588-112.769 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1241.572 58.023C1068.73 108.279 944.72 218.794 869.547 389.569 756.787 645.73 532.42 726.724 419.65 736.156c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.125 182.837-187.229 243.16"/>
+        <path d="M1260.797 52.51c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.837-187.229 243.161"/>
+        <path d="M1280.023 46.997C1107.179 97.253 983.17 207.77 907.997 378.543 795.237 634.705 570.87 715.698 458.102 725.131c-112.769 9.432-535.599 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1299.248 41.484C1126.405 91.74 1002.396 202.256 927.223 373.03c-112.76 256.162-337.128 337.156-449.896 346.588-112.769 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1318.473 35.972c-172.843 50.256-296.852 160.771-372.025 331.546C833.688 623.68 609.32 704.673 496.552 714.105c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1337.698 30.459c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.837-187.229 243.161"/>
+        <path d="M1356.923 24.946c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.895 346.588-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1376.149 19.433c-172.843 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.128 337.156-449.896 346.588C441.459 707 18.63 817.833-114.442 970.508c-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1395.374 13.92c-172.843 50.257-296.852 160.772-372.025 331.547-112.76 256.162-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1414.6 8.408c-172.844 50.256-296.852 160.771-372.026 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.837-187.229 243.161"/>
+        <path d="M1433.824 2.895c-172.843 50.256-296.851 160.772-372.025 331.546C949.04 590.603 724.672 671.596 611.904 681.03c-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1453.05-2.618c-172.844 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.128 337.156-449.896 346.588C518.36 684.95 95.53 795.782-37.541 948.457c-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1472.275-8.13c-172.843 50.256-296.852 160.771-372.025 331.546C987.49 579.578 763.123 660.57 650.354 670.003c-112.768 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1491.5-13.643c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588C556.811 673.923 133.981 784.757.91 937.43c-88.715 101.784-151.125 182.837-187.229 243.161"/>
+        <path d="M1510.725-19.156C1337.882 31.1 1213.874 141.616 1138.7 312.39c-112.76 256.162-337.127 337.155-449.895 346.588-112.769 9.432-535.599 120.266-668.67 272.94-88.716 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1529.95-24.669c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.156-449.895 346.588C595.26 662.898 172.43 773.731 39.36 926.406c-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1549.176-30.181c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1568.401-35.694c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.229 243.161"/>
+        <path d="M1587.626-41.207C1414.783 9.05 1290.775 119.565 1215.601 290.34c-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94C8.32 1011.652-54.089 1092.705-90.194 1153.029"/>
+        <path d="M1606.852-46.72C1434.008 3.536 1310 114.052 1234.826 284.826 1122.066 540.988 897.7 621.982 784.931 631.414c-112.769 9.433-535.599 120.266-668.67 272.941-88.715 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1626.077-52.232c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1645.302-57.745C1472.459-7.49 1348.45 103.026 1273.277 273.8 1160.517 529.963 936.15 610.956 823.38 620.389c-112.768 9.432-535.598 120.266-668.67 272.94C65.996 995.114 3.586 1076.167-32.52 1136.49"/>
+        <path d="M1664.527-63.258c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94C85.221 989.6 22.812 1070.655-13.293 1130.978"/>
+        <path d="M1683.752-68.77C1510.91-18.516 1386.901 92 1311.727 262.774 1198.967 518.937 974.6 599.931 861.832 609.363c-112.769 9.433-535.599 120.266-668.67 272.941-88.716 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1702.978-74.283c-172.844 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1722.203-79.796C1549.36-29.54 1425.35 80.975 1350.178 251.75c-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1741.428-85.309c-172.843 50.256-296.851 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.124 182.838-187.229 243.161"/>
+        <path d="M1760.653-90.822C1587.81-40.566 1463.802 69.95 1388.628 240.724c-112.76 256.162-337.127 337.156-449.895 346.588-112.769 9.433-535.599 120.266-668.67 272.941-88.716 101.783-151.125 182.837-187.23 243.16"/>
+        <path d="M1779.879-96.334c-172.844 50.256-296.852 160.771-372.026 331.546-112.76 256.162-337.127 337.155-449.895 346.587-112.769 9.433-535.598 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1799.104-101.847c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1818.33-107.36c-172.844 50.256-296.852 160.772-372.026 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.838-187.229 243.161"/>
+        <path d="M1837.554-112.873C1664.711-62.616 1540.703 47.9 1465.53 218.674c-112.76 256.161-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1856.78-118.385C1683.936-68.13 1559.928 42.386 1484.754 213.16c-112.76 256.162-337.127 337.155-449.895 346.587-112.769 9.433-535.599 120.267-668.67 272.941-88.715 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1876.005-123.898c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+        <path d="M1895.23-129.41c-172.843 50.255-296.852 160.77-372.025 331.545-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.838-187.23 243.161"/>
+        <path d="M1914.455-134.924c-172.843 50.257-296.851 160.772-372.025 331.547-112.76 256.161-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M1933.68-140.436C1760.838-90.18 1636.83 20.335 1561.656 191.11c-112.76 256.162-337.127 337.155-449.895 346.587C998.99 547.13 576.16 657.964 443.09 810.638c-88.716 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M1952.906-145.949c-172.843 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94C373.6 906.91 311.19 987.963 275.084 1048.287"/>
+        <path d="M1972.131-151.462c-172.843 50.256-296.852 160.772-372.025 331.546-112.76 256.162-337.127 337.155-449.896 346.588-112.768 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.838-187.23 243.161"/>
+        <path d="M1991.356-156.975c-172.843 50.257-296.851 160.772-372.025 331.547-112.76 256.162-337.127 337.155-449.896 346.587-112.768 9.433-535.598 120.266-668.67 272.941-88.715 101.783-151.124 182.837-187.229 243.16"/>
+        <path d="M2010.581-162.487c-172.843 50.256-296.851 160.771-372.025 331.546-112.76 256.162-337.127 337.155-449.895 346.587-112.769 9.433-535.599 120.267-668.67 272.941-88.716 101.784-151.125 182.837-187.23 243.16"/>
+        <path d="M2029.807-168c-172.844 50.256-296.852 160.771-372.025 331.546-112.76 256.162-337.128 337.155-449.896 346.588-112.769 9.432-535.598 120.266-668.67 272.94-88.715 101.784-151.125 182.837-187.23 243.161"/>
+    </g>
+</svg>
diff --git a/docs/assets/images/menu-icon.svg b/docs/assets/images/menu-icon.svg
new file mode 100644
index 0000000..0bf1e7f
--- /dev/null
+++ b/docs/assets/images/menu-icon.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 18 12">
+    <path fill="#333" d="M0 12h18v-2H0v2zm0-5h18V5H0v2zm0-7v2h18V0H0z"/>
+</svg>
diff --git a/docs/assets/images/mousepad-blob.svg b/docs/assets/images/mousepad-blob.svg
new file mode 100644
index 0000000..a05769b
--- /dev/null
+++ b/docs/assets/images/mousepad-blob.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="216" height="382" viewBox="0 0 216 382">
+    <defs>
+        <linearGradient id="a" x1="50%" x2="50%" y1="0%" y2="100%">
+            <stop offset="0%" stop-color="#9634B2"/>
+            <stop offset="100%" stop-color="#713C80"/>
+        </linearGradient>
+    </defs>
+    <path fill="url(#a)" fill-rule="evenodd" d="M1419.757 436.537l160.517 46.028c48.154 13.808 75.997 64.038 62.189 112.192l-46.028 160.517c-13.808 48.154-64.038 75.997-112.192 62.189l-160.517-46.028c-48.154-13.808-75.997-64.038-62.189-112.192l46.028-160.517c13.808-48.154 64.038-75.997 112.192-62.189z" opacity=".7" transform="translate(-1258 -433)"/>
+</svg>
diff --git a/docs/assets/images/piece-of-paper-with-folded-top-right-corner.svg b/docs/assets/images/piece-of-paper-with-folded-top-right-corner.svg
new file mode 100644
index 0000000..aa493a7
--- /dev/null
+++ b/docs/assets/images/piece-of-paper-with-folded-top-right-corner.svg
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="177.42053"
+   height="229.022"
+   viewBox="0 0 177.42053 229.022"
+   version="1.1"
+   id="svg24"
+   sodipodi:docname="piece-of-paper-with-folded-top-right-corner.svg"
+   inkscape:version="0.92.1 r15371">
+  <metadata
+     id="metadata28">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="2482"
+     inkscape:window-height="1057"
+     id="namedview26"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="1.026087"
+     inkscape:cx="89"
+     inkscape:cy="114.946"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg24" />
+  <defs
+     id="defs4">
+    <path
+       id="a"
+       d="M 0,6.37 H 177.418 V 235.385 H 0 Z"
+       inkscape:connector-curvature="0" />
+    <path
+       id="c"
+       d="m 1.588,6.374 h 65.06 V 71.43 H 1.588 Z"
+       inkscape:connector-curvature="0" />
+  </defs>
+  <g
+     id="g22"
+     style="fill:none;fill-rule:evenodd"
+     transform="translate(0,-0.92398933)">
+    <g
+       transform="translate(0,-5.446)"
+       id="g11">
+      <mask
+         id="b"
+         fill="#fff">
+        <use
+           xlink:href="#a"
+           id="use6"
+           x="0"
+           y="0"
+           width="100%"
+           height="100%" />
+      </mask>
+      <path
+         d="m 7.027,11.692 c -0.942,0 -1.703,0.762 -1.703,1.703 v 214.962 c 0,0.942 0.761,1.703 1.703,1.703 h 163.37 c 0.935,0 1.704,-0.761 1.704,-1.703 V 69.867 L 113.919,11.692 Z m 163.37,223.699 H 7.028 C 3.15,235.39 0,232.227 0,228.357 V 13.395 C 0,9.532 3.15,6.37 7.027,6.37 h 108 a 2.64,2.64 0 0 1 1.883,0.782 l 59.732,59.732 c 0.492,0.499 0.776,1.184 0.776,1.883 v 159.591 c 0,3.87 -3.15,7.034 -7.02,7.034 z"
+         mask="url(#b)"
+         id="path9"
+         inkscape:connector-curvature="0"
+         style="fill:#ffffff" />
+    </g>
+    <g
+       transform="translate(110.77,-5.446)"
+       id="g18">
+      <mask
+         id="d"
+         fill="#fff">
+        <use
+           xlink:href="#c"
+           id="use13"
+           x="0"
+           y="0"
+           width="100%"
+           height="100%" />
+      </mask>
+      <path
+         d="m 6.919,15.458 v 48.94 c 0,0.94 0.761,1.702 1.703,1.702 h 48.94 L 6.918,15.458 Z M 63.986,71.43 H 8.622 c -3.87,0 -7.034,-3.157 -7.034,-7.034 V 9.033 c 0,-1.08 0.65,-2.049 1.648,-2.457 A 2.68,2.68 0 0 1 6.144,7.15 l 59.732,59.732 c 0.754,0.762 0.983,1.904 0.574,2.915 a 2.69,2.69 0 0 1 -2.464,1.634 z"
+         mask="url(#d)"
+         id="path16"
+         inkscape:connector-curvature="0"
+         style="fill:#ffffff" />
+    </g>
+    <path
+       d="M 88.71,46.81 H 33.978 a 2.671,2.671 0 0 1 -2.665,-2.665 2.671,2.671 0 0 1 2.665,-2.665 h 54.734 a 2.671,2.671 0 0 1 2.665,2.665 2.671,2.671 0 0 1 -2.665,2.666 m 11.702,30.674 h -66.44 a 2.6655,2.6655 0 0 1 0,-5.331 h 66.44 a 2.671,2.671 0 0 1 2.666,2.665 2.671,2.671 0 0 1 -2.666,2.666 m 44.473,30.667 H 33.972 a 2.67,2.67 0 0 1 -2.658,-2.666 2.67,2.67 0 0 1 2.658,-2.665 h 110.915 a 2.667,2.667 0 0 1 0,5.33 m 0,61.335 H 33.972 a 2.67,2.67 0 0 1 -2.658,-2.665 2.67,2.67 0 0 1 2.65 [...]
+       id="path20"
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff" />
+  </g>
+</svg>
diff --git a/docs/assets/images/scala.svg b/docs/assets/images/scala.svg
new file mode 100644
index 0000000..5f27789
--- /dev/null
+++ b/docs/assets/images/scala.svg
@@ -0,0 +1,31 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="43" height="73" viewBox="0 0 43 73">
+    <defs>
+        <linearGradient id="a" x1=".171%" x2="99.819%" y1="49.649%" y2="49.649%">
+            <stop offset="0%" stop-color="#656565"/>
+            <stop offset="100%" stop-color="#010101"/>
+        </linearGradient>
+        <linearGradient id="b" x1=".171%" x2="99.819%" y1="49.82%" y2="49.82%">
+            <stop offset="0%" stop-color="#656565"/>
+            <stop offset="100%" stop-color="#010101"/>
+        </linearGradient>
+        <linearGradient id="c" x1=".171%" x2="99.819%" y1="50.052%" y2="50.052%">
+            <stop offset="0%" stop-color="#9F1C20"/>
+            <stop offset="100%" stop-color="#ED2224"/>
+        </linearGradient>
+        <linearGradient id="d" x1=".171%" x2="99.819%" y1="50.259%" y2="50.259%">
+            <stop offset="0%" stop-color="#9F1C20"/>
+            <stop offset="100%" stop-color="#ED2224"/>
+        </linearGradient>
+        <linearGradient id="e" x1=".171%" x2="99.819%" y1="50.44%" y2="50.44%">
+            <stop offset="0%" stop-color="#9F1C20"/>
+            <stop offset="100%" stop-color="#ED2224"/>
+        </linearGradient>
+    </defs>
+    <g fill="none" fill-rule="nonzero">
+        <path fill="url(#a)" d="M.61 27.854s41.78 4.178 41.78 11.142V22.283s0-6.963-41.78-11.141v16.712z"/>
+        <path fill="url(#b)" d="M.61 50.138s41.78 4.178 41.78 11.141V44.567s0-6.964-41.78-11.142v16.713z"/>
+        <path fill="url(#c)" d="M42.39 0v16.713s0 6.963-41.78 11.141V11.142S42.39 6.964 42.39 0"/>
+        <path fill="url(#d)" d="M.61 33.425s41.78-4.178 41.78-11.142v16.713s0 6.964-41.78 11.142V33.425z"/>
+        <path fill="url(#e)" d="M.61 72.421V55.71s41.78-4.179 41.78-11.142v16.712s0 6.964-41.78 11.142"/>
+    </g>
+</svg>
diff --git a/docs/assets/images/search.svg b/docs/assets/images/search.svg
new file mode 100644
index 0000000..4123a57
--- /dev/null
+++ b/docs/assets/images/search.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="18px" height="19px" viewBox="0 0 18 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: sketchtool 53.2 (72643) - https://sketchapp.com -->
+    <title>76A07A59-5A01-45B5-86ED-1007B13A770C</title>
+    <desc>Created with sketchtool.</desc>
+    <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="Article-320" transform="translate(-248.000000, -22.000000)" fill="#333" fill-rule="nonzero">
+            <g id="screen">
+                <g id="GitHub-icon" transform="translate(248.000000, 19.000000)">
+                    <path d="M6.6146307,16.2292614 C2.96147085,16.2292614 0,13.2677905 0,9.6146307 C0,5.96147085 2.96147085,3 6.6146307,3 C10.2677905,3 13.2292614,5.96147085 13.2292614,9.6146307 C13.2292614,11.4412106 12.4888937,13.0948683 11.291881,14.291881 L17.8421457,20.9358099 C18.0561908,21.149855 18.0509881,21.4930606 17.8360963,21.7079524 C17.6197064,21.9243423 17.2755046,21.9255525 17.0639538,21.7140017 L10.4488725,15.0052562 C9.36728942,15.7759493 8.04389847,16.2292614 6.614630 [...]
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>
\ No newline at end of file
diff --git a/docs/assets/images/violent-blob.svg b/docs/assets/images/violent-blob.svg
new file mode 100644
index 0000000..4bef98b
--- /dev/null
+++ b/docs/assets/images/violent-blob.svg
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 735 673" style="enable-background:new 0 0 735 673;" xml:space="preserve">
+<style type="text/css">
+	.st0{opacity:0.85;}
+	.st1{opacity:0.85;fill:url(#Rectangle-3_2_);}
+	.st2{opacity:0.85;fill:url(#Rectangle-3_3_);}
+</style>
+<g id="Page-1" class="st0">
+	<g id="Group" transform="translate(-55.973403, -60.591451)">
+		
+			<linearGradient id="Rectangle-3_2_" gradientUnits="userSpaceOnUse" x1="3.5474" y1="693.9244" x2="3.5474" y2="692.9244" gradientTransform="matrix(715.9998 0 0 -661.9999 -2125.9568 459438.9375)">
+			<stop  offset="0" style="stop-color:#C07670"/>
+			<stop  offset="1" style="stop-color:#8C413D"/>
+		</linearGradient>
+		<path id="Rectangle-3" class="st1" d="M213.3,78.8C334-1.9,784,213.5,771.8,294.2S709.6,709.5,588.1,722
+			c-121.5,12.5-408.1-95.2-496.5-203.6S92.7,159.6,213.3,78.8z"/>
+		
+			<linearGradient id="Rectangle-3_3_" gradientUnits="userSpaceOnUse" x1="3.5511" y1="693.9073" x2="3.5511" y2="692.9073" gradientTransform="matrix(745.4993 -131.4516 -121.5537 -689.3654 82073.4297 478888.8438)">
+			<stop  offset="0" style="stop-color:#AA6FB7"/>
+			<stop  offset="1" style="stop-color:#713C80"/>
+		</linearGradient>
+		<path id="Rectangle-3_1_" class="st2" d="M168.1,121.7c110.8-106.2,619,35.5,621,121.7c2,86.2,11.6,443.9-112.7,479.3
+			S233.9,698.4,122,601.9S57.3,227.9,168.1,121.7z"/>
+	</g>
+</g>
+</svg>
diff --git a/docs/assets/images/watermelon-blob.svg b/docs/assets/images/watermelon-blob.svg
new file mode 100644
index 0000000..c2fe445
--- /dev/null
+++ b/docs/assets/images/watermelon-blob.svg
@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="63" height="91" viewBox="0 0 63 91">
+    <defs>
+        <linearGradient id="a" x1="50%" x2="50%" y1="0%" y2="100%">
+            <stop offset="0%" stop-color="#F1474E"/>
+            <stop offset="100%" stop-color="#DF2226"/>
+        </linearGradient>
+    </defs>
+    <path fill="url(#a)" fill-rule="evenodd" d="M67.752 1154.058l24.137 48.02c4.961 9.869.982 21.89-8.887 26.851a20 20 0 0 1-8.982 2.13H26c-11.046 0-20-8.953-20-20a20 20 0 0 1 2.093-8.905l23.882-48.02c4.919-9.89 16.924-13.92 26.814-9.001a20 20 0 0 1 8.963 8.925z" transform="rotate(-7 -9310.93 893.495)"/>
+</svg>
diff --git a/docs/assets/js/anchor.min.js b/docs/assets/js/anchor.min.js
new file mode 100644
index 0000000..e302d89
--- /dev/null
+++ b/docs/assets/js/anchor.min.js
@@ -0,0 +1,9 @@
+// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
+//
+// AnchorJS - v4.2.0 - 2019-01-01
+// https://github.com/bryanbraun/anchorjs
+// Copyright (c) 2019 Bryan Braun; Licensed MIT
+//
+// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
+!function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function f(A){A.icon=A.hasOwnProperty("icon")?A.icon:"",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.ariaLabel=A.hasOwnProperty("ariaLabel")?A.ariaLabel:"Anchor",A.class=A.hasOwnProperty( [...]
+// @license-end
\ No newline at end of file
diff --git a/docs/assets/js/code-copy-to-clipboard.js b/docs/assets/js/code-copy-to-clipboard.js
new file mode 100644
index 0000000..3fd42b2
--- /dev/null
+++ b/docs/assets/js/code-copy-to-clipboard.js
@@ -0,0 +1,70 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+
+const BUTTON_CLASSNAME = 'copy-to-clipboard-button'
+const BUTTON_CLASSNAME_SUCCESS = 'copy-to-clipboard-button__success'
+
+const TEMPLATE = document.createElement('button')
+TEMPLATE.classList.add(BUTTON_CLASSNAME)
+TEMPLATE.title = 'Copy to clipboard'
+TEMPLATE.type = 'button'
+
+const SECOND = 1000
+const RESULT_DISPLAY_DURATION = 0.5 * SECOND
+
+/**
+ * @param {HTMLElement?} el Element to copy text from
+ * @returns {boolean} Copy success/failure
+ */
+function copyCode(el) {
+	if (!el) return
+	if (!el.matches('code')) return
+
+	const range = document.createRange()
+	range.selectNode(el)
+	window.getSelection().addRange(range)
+
+	try {
+		return document.execCommand('copy')
+	} catch (err) {} finally {
+		window.getSelection().removeAllRanges()		
+	}
+}
+
+function init() {
+	for (const code of document.querySelectorAll('pre>code')) {
+		try {
+			const container = code.closest('.listingblock .content')
+			if (!container) break
+			const button = TEMPLATE.cloneNode(true)
+			container.appendChild(button)			
+		} catch (err) {}
+	}
+	document.addEventListener('click', e => {
+		if (e.target.classList.contains(BUTTON_CLASSNAME)) {
+			const result = copyCode(e.target.parentElement.querySelector('code'))
+			if (result) {
+				e.target.innerText = '✓'
+				e.target.classList.add(BUTTON_CLASSNAME_SUCCESS)
+				setTimeout(() => {
+					e.target.innerText = TEMPLATE.textContent
+					e.target.classList.remove(BUTTON_CLASSNAME_SUCCESS)
+				}, RESULT_DISPLAY_DURATION)
+			}
+		}
+	})
+}
+
+window.addEventListener('load', init)
diff --git a/docs/assets/js/code-tabs.js b/docs/assets/js/code-tabs.js
new file mode 100644
index 0000000..6d8118a
--- /dev/null
+++ b/docs/assets/js/code-tabs.js
@@ -0,0 +1,155 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+
+const TAB_BUTTON = document.createRange().createContextualFragment(`
+    <button class='code-tabs__tab'></button>
+`)
+
+const getAllCodeTabs = () => document.querySelectorAll('code-tabs')
+
+/**
+ * @typedef CodeTabsState
+ * @prop {string?} currentTab
+ * @prop {string[]} tabs
+ * @prop {number?} boundingClientRectTop
+ */
+
+/**
+ * @typedef {number} ScrollState
+ */
+
+class CodeTabs {
+    /** @param {HTMLElement} el */
+    constructor(el) {
+        this.el = el
+        this.el.codeTabs = this
+        /**
+         * @type {CodeTabsState}
+         */
+        this._state = {tabs: []}
+    }
+    get state() {
+        return this._state
+    }
+    /**
+     * @param {CodeTabsState} newState
+     */
+    set state(newState) {
+        const oldState = this._state
+        this._state = newState
+        this._render(oldState, newState)
+    }
+    connectedCallback() {
+        this._tabElements = this.el.querySelectorAll('code-tab')
+        this.state = {
+            currentTab: this._tabElements[0].dataset.tab,
+            tabs: [...this._tabElements].map(el => el.dataset.tab),
+        }
+    }
+    /**
+     * @private
+     * @param {CodeTabsState} oldState
+     * @param {CodeTabsState} newState
+     */
+    _render(oldState, newState) {
+        if (!oldState.tabs.length && newState.tabs.length) {
+            /** @type {HTMLElement} */
+            this.el.prepend(newState.tabs.reduce((nav, tab, i) => {
+                const button = TAB_BUTTON.firstElementChild.cloneNode()
+                button.dataset.tab = tab
+                button.innerText = tab
+                button.onclick = () => {
+                    const scrollState = this._rememberScrollState()
+                    this._openTab(tab)
+                    this._restoreScrollState(scrollState)
+                }
+                if (this._tabElements[i].dataset.unavailable) {
+                    button.classList.add('grey')      
+                }
+
+                this._tabElements[i].button = button
+                nav.appendChild(button)
+                return nav
+            }, document.createElement('NAV')))
+            this.el.classList.add('code-tabs__initialized')
+        }
+        if (oldState.currentTab !== newState.currentTab) {
+            for (const tab of this._tabElements) {
+                const hidden = tab.dataset.tab !== newState.currentTab
+                if (hidden) {
+                    tab.setAttribute('hidden', 'hidden')
+                } else {
+                    tab.removeAttribute('hidden')
+                }
+                tab.button.classList.toggle('active', !hidden)
+            }
+        }
+    }
+    /** 
+     * @private
+     * @param {string} tab
+     */
+    _openTab(tab, emitEvent = true) {
+        if (!this.state.tabs.includes(tab)) return
+        this.state = Object.assign({}, this.state, {currentTab: tab})
+        if (emitEvent) this.el.dispatchEvent(new CustomEvent('tabopen', {
+            bubbles: true,
+            detail: {tab}
+        }))
+    }
+    /** 
+     * @param {string} tab
+     */
+    openTab(tab) {
+        this._openTab(tab, false)
+    }
+
+    /**
+     * @private
+     * @returns {ScrollState}
+     */
+    _rememberScrollState() {
+        return this.el.getBoundingClientRect().top
+    }
+
+    /**
+     * @private
+     * @param {ScrollState} scrollState
+     * @returns {void}
+     */
+    _restoreScrollState(scrollState) {
+        const currentRectTop = this.el.getBoundingClientRect().top
+        const delta = currentRectTop - scrollState
+        document.scrollingElement.scrollBy(0, delta)
+    }
+}
+
+/**
+ * @param {NodeListOf<Element>} tabs
+ */
+const setupSameLanguageSync = (tabs) => {
+    document.addEventListener('tabopen', (e) => {
+        [...tabs].filter(tab => tab !== e.target).forEach(tab => {
+            tab.codeTabs.openTab(e.detail.tab)
+        })
+    })
+}
+
+// Edge does not support custom elements V1
+for (const el of getAllCodeTabs()) {
+    const instance = new CodeTabs(el)
+    instance.connectedCallback()
+}
+setupSameLanguageSync(getAllCodeTabs())
diff --git a/docs/assets/js/docs-menu.js b/docs/assets/js/docs-menu.js
new file mode 100644
index 0000000..8e598da
--- /dev/null
+++ b/docs/assets/js/docs-menu.js
@@ -0,0 +1,64 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+
+const button = document.querySelector('button.menu')
+const overlay = document.querySelector('.left-nav__overlay')
+
+const eventTypes = {
+    show: 'leftNavigationShow',
+    hide: 'leftNavigationHide'
+}
+
+/**
+ * @param {keyof eventTypes} type
+ */
+const emit = type => {
+    if (!CustomEvent) return
+    document.dispatchEvent(new CustomEvent(type, {bubbles: true}))
+}
+
+/**
+ * @param {boolean} force
+ */
+const toggleMenu = (force) => {
+    const body = document.querySelector('body')
+    const HIDE_CLASS = 'hide-left-nav'
+    body.classList.toggle(HIDE_CLASS, force)
+    emit(eventTypes[body.classList.contains(HIDE_CLASS) ? 'hide' : 'show'])
+}
+
+export const hideLeftNav = () => {
+    toggleMenu(true, false)
+}
+
+if (button && overlay) {
+    const query = window.matchMedia('(max-width: 990px)')
+
+    button.addEventListener('click', () => toggleMenu())
+    overlay.addEventListener('click', () => toggleMenu())
+    query.addListener((e) => {
+        toggleMenu(e.matches)
+    })
+    toggleMenu(query.matches)
+}
+
+document.addEventListener('click', e => {
+    if (e.target.matches('.left-nav button')) {
+        e.target.classList.toggle('expanded')
+        e.target.classList.toggle('collapsed')
+        e.target.nextElementSibling.classList.toggle('expanded')
+        e.target.nextElementSibling.classList.toggle('collapsed')
+    }
+})
diff --git a/docs/assets/js/index.js b/docs/assets/js/index.js
new file mode 100644
index 0000000..0fa36f7
--- /dev/null
+++ b/docs/assets/js/index.js
@@ -0,0 +1,51 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+
+import './code-tabs.js?1'
+import {hideLeftNav} from './docs-menu.js'
+//import {hideTopNav} from './top-navigation.js'
+import './page-nav.js'
+
+
+
+
+document.addEventListener('topNavigationShow', hideLeftNav)
+document.addEventListener('leftNavigationShow', hideTopNav)
+
+
+
+
+// enables search with Swiftype widget
+jQuery(document).ready(function(){
+
+    var customRenderFunction = function(document_type, item) {
+        var out = '<a href="' + Swiftype.htmlEscape(item['url']) + '" class="st-search-result-link">' + item.highlight['title'] + '</a>';
+        return out.concat('<p class="url">' + String(item['url']).replace("https://www.", '') + '</p><p class="body">' + item.highlight['body'] + '</p>');
+    }
+    
+/*    jQuery("#search-input").swiftype({
+        fetchFields: { 'page': ['url'] },
+        renderFunction: customRenderFunction,
+        highlightFields: {
+            'page': {
+                'title': {'size': 60, 'fallback': true },
+                'body': { 'size': 100, 'fallback':true }
+            }
+        },
+        engineKey: '_t6sDkq6YsFC_12W6UH2'
+    });
+    */
+    
+});
diff --git a/docs/assets/js/page-nav.js b/docs/assets/js/page-nav.js
new file mode 100644
index 0000000..8f48464
--- /dev/null
+++ b/docs/assets/js/page-nav.js
@@ -0,0 +1,37 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+
+const rightNav = document.querySelector('.right-nav .sectlevel1')
+
+if (IntersectionObserver && rightNav) {
+    const tocAnchors = [...rightNav.querySelectorAll('a[href]')]
+    let last;
+    tocAnchors.forEach((a, i, all) => {
+        const target = document.querySelector(`${a.hash}`)
+        if (!target) return
+        const observer = new IntersectionObserver((entries) => {
+            entries.forEach(entry => {
+                a.classList.toggle('visible', entry.isIntersecting)
+                if (entry.isIntersecting) last = a
+
+                const firstVisible = rightNav.querySelector('.visible')
+                tocAnchors.forEach(a => a.classList.remove('active'))
+                if (firstVisible) firstVisible.classList.add('active')
+                else if (last) last.classList.add('active')
+            })
+        });
+        observer.observe(target)
+    })
+}
diff --git a/docs/assets/js/top-navigation.js b/docs/assets/js/top-navigation.js
new file mode 100644
index 0000000..291ae92
--- /dev/null
+++ b/docs/assets/js/top-navigation.js
@@ -0,0 +1,92 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//       http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+
+const query = window.matchMedia('(max-width: 450px)')
+const header = document.querySelector('header')
+const search = document.querySelector('header .search input')
+
+let state = {
+    narrowMode: false,
+    showSearch: false,
+    showNav: false
+}
+
+const eventTypes = {
+    navShow: 'topNavigationShow',
+    navHide: 'topNavigationHide'
+}
+
+/**
+ * @param {keyof eventTypes} type
+ */
+const emit = type => {
+    if (!CustomEvent) return
+    header.dispatchEvent(new CustomEvent(type, {bubbles: true}))
+}
+
+/**
+ * @param {typeof state} newState
+ */
+const render = (newState) => {
+    if (state.narrowMode !== newState.narrowMode)
+        header.classList.toggle('narrow-header')
+    if (state.showSearch !== newState.showSearch) {
+        header.classList.toggle('show-search')
+        search.value = ''
+        if (newState.showSearch) search.focus()
+    }
+    if (state.showNav !== newState.showNav) {
+        header.classList.toggle('show-nav')
+        emit(eventTypes[newState.showNav ? 'navShow' : 'navHide'])        
+    }
+    state = newState
+}
+
+render(Object.assign({}, state, {narrowMode: query.matches}))
+
+query.addListener((e) => {
+    render(Object.assign({}, state, {
+        narrowMode: e.matches,
+        showSearch: false,
+        showNav: false
+    }))
+})
+
+document.querySelector('.top-nav-toggle').addEventListener('click', () => {
+    render(Object.assign({}, state, {
+        showNav: !state.showNav,
+        showSearch: false
+    }))
+})
+
+document.querySelector('.search-toggle').addEventListener('click', () => {
+    render(Object.assign({}, state, {
+        showSearch: !state.showSearch,
+        showNav: false
+    }))
+})
+
+search.addEventListener('blur', () => {
+    render(Object.assign({}, state, {
+        showSearch: false
+    }))
+})
+
+export const hideTopNav = () => {
+    render(Object.assign({}, state, {
+        showNav: false,
+        showSearch: false
+    }))
+}
diff --git a/docs/favicon.ico b/docs/favicon.ico
new file mode 100644
index 0000000..62d5ea6
Binary files /dev/null and b/docs/favicon.ico differ
diff --git a/docs/run.sh b/docs/run.sh
new file mode 100644
index 0000000..bcbe32c
--- /dev/null
+++ b/docs/run.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+rm -rf _site
+rm -rf .jekyll-cache
+
+bundle exec jekyll s -lI --force_polling --trace