diff --git a/.travis.yml b/.travis.yml
index c511e1e..50d943e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -33,8 +33,27 @@
 #    - .autoconf
 #    - $HOME/.m2
 
-install: true
+before_install:
+  - echo "${GENERATE_DOCS}"
+  - if [ "${GENERATE_DOCS}" = "true"  ] ; then sudo apt-get update ; fi
+  - if [ "${GENERATE_DOCS}" = "true"  ] ; then sudo apt-get -y install ruby-full build-essential zlib1g-dev ; fi
+  - if [ "${GENERATE_DOCS}" = "true"  ] ; then echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc ; fi
+  - if [ "${GENERATE_DOCS}" = "true"  ] ; then echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc ; fi
+  - if [ "${GENERATE_DOCS}" = "true"  ] ; then source ~/.bashrc ; fi
+install:
+  - if [ "${GENERATE_DOCS}" = "true"  ] ; then gem install jekyll bundler ; fi
+
 before_script:
+  - echo '<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' > ~/.m2/settings.xml
+  - echo 'xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">' >> ~/.m2/settings.xml
+  - echo ' <servers>' >> ~/.m2/settings.xml
+  - echo '  <server>' >> ~/.m2/settings.xml
+  - echo '   <id>github</id>' >> ~/.m2/settings.xml
+  - echo "   <username>${GIT_USERNAME}</username>" >> ~/.m2/settings.xml
+  - echo "   <password>${GIT_TOKEN}</password>" >> ~/.m2/settings.xml
+  - echo '  </server>' >> ~/.m2/settings.xml
+  - echo ' </servers>' >> ~/.m2/settings.xml
+  - echo '</settings>' >> ~/.m2/settings.xml
   - mkdir -p travis/tmp
   - echo "#" >> travis/wayang.properties
   - echo "# Licensed to the Apache Software Foundation (ASF) under one or more" >> travis/wayang.properties
@@ -62,9 +81,20 @@
   - cat travis/wayang.properties
   - rm -rf /home/travis/build/apache/incubator-wayang/target/rat.txt || echo "file doesn't exist"
   - rm -rf result.log || echo "file doesn't exist"
-  - mvn_opts=("-Dorg.slf4j.simpleLogger.defaultLogLevel=error" "-Dwayang.configuration=file://$(pwd)/travis/wayang.properties" "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=error" "-Dlog4j.rootLogger=ERROR")
+  - export LOG_LEVEL=error
+  - mvn_opts=("-Dorg.slf4j.simpleLogger.defaultLogLevel=${LOG_LEVEL}" "-Dwayang.configuration=file://$(pwd)/travis/wayang.properties" "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=${LOG_LEVEL}" "-Dlog4j.rootLogger=${LOG_LEVEL}")
+#  - chmod +x ./docs/script/cibuild
 script:
   #- jdk_switcher use openjdk8
   - bin/change-scala-version.sh 2.11.8 && mvn clean install -Pdistro "${mvn_opts[@]}" &> result.log
   - cat /home/travis/build/apache/incubator-wayang/target/rat.txt || echo "file doesn't exist"
   - tail -n 2000 result.log
+
+after_success:
+  # generate the documentation and create a update of the documentation if something change there
+  - if [ "${GENERATE_DOCS}" = "true" ] ; then mvn clean gem:exec@bundle-install gem:exec@generate-documentation gem:exec@generate-documentation-as-latest site -pl wayang-docs -Pweb-documentation ; fi
+
+env:
+  global:
+    - NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer
+    - GENERATE_DOCS="false"
diff --git a/jenkins.pom b/jenkins.pom
index 28b2687..047dcec 100644
--- a/jenkins.pom
+++ b/jenkins.pom
@@ -62,4 +62,4 @@
         </profile>
     </profiles>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/pom.xml b/pom.xml
index b031c07..8b6e143 100644
--- a/pom.xml
+++ b/pom.xml
@@ -214,6 +214,12 @@
 
             </build>
         </profile>
+        <profile>
+            <id>web-documentation</id>
+            <modules>
+                <module>wayang-docs</module>
+            </modules>
+        </profile>
 
         <profile>
             <!-- Perform steps to deploy Wayang. -->
@@ -857,7 +863,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-site-plugin</artifactId>
-                    <version>3.6</version>
+                    <version>3.7</version>
                     <configuration>
 
                     </configuration>
@@ -871,6 +877,7 @@
             <plugin>
                 <groupId>org.codehaus.gmaven</groupId>
                 <artifactId>groovy-maven-plugin</artifactId>
+                <version>2.1.1</version>
                 <executions>
                     <!-- Do some pre-build checks and report any findings to the user -->
                     <execution>
@@ -940,6 +947,11 @@
 
                         <exclude>**/*.log</exclude>
                         <exclude>**/0-to-10000.sequence_file</exclude>
+
+                        <exclude>**/*.svg</exclude>
+                        <exclude>**/Gemfile.lock</exclude>
+                        <exclude>**/.jekyll-cache/**</exclude>
+                        <exclude>**/README.md</exclude>
                         <!-- TODO: I am pretty sure we need to remove this and replace it with a different text -->
                         <exclude>src/test/resources/ulysses.txt</exclude>
                         <exclude>src/test/resources/test.edgelist</exclude>
diff --git a/wayang-docs/pom.xml b/wayang-docs/pom.xml
new file mode 100644
index 0000000..43abaf9
--- /dev/null
+++ b/wayang-docs/pom.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>wayang</artifactId>
+        <groupId>org.apache.wayang</groupId>
+        <version>0.6.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>wayang-docs</artifactId>
+    <description>Generation of the documentation with jekyll</description>
+
+    <properties>
+        <github.global.server>github</github.global.server>
+        <current.time>${maven.build.timestamp}</current.time>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>de.saumya.mojo</groupId>
+                <artifactId>gem-maven-plugin</artifactId>
+                <version>1.1.8</version>
+                <executions>
+                    <execution>
+                        <id>bundle-install</id>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <file>${env.GEM_HOME}/bin/bundle</file>
+                            <execArgs>install --gemfile=${project.basedir}/src/main/resources/Gemfile</execArgs>
+                        </configuration>
+                        <phase>generate-resources</phase>
+                    </execution>
+                    <execution>
+                        <id>generate-documentation</id>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <phase>generate-resources</phase>
+                        <configuration>
+                            <file>${env.GEM_HOME}/bin/jekyll</file>
+                            <execArgs>build --trace --source ${project.basedir}/src/main/resources --destination ${project.build.outputDirectory}/site/website/docs/${project.version} --baseurl /docs/${project.version}/ --config src/main/resources/_config.prod.yml</execArgs>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>generate-documentation-as-latest</id>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <phase>generate-resources</phase>
+                        <configuration>
+                            <file>${env.GEM_HOME}/bin/jekyll</file>
+                            <execArgs>build --trace --source ${project.basedir}/src/main/resources --destination ${project.build.outputDirectory}/site/website/docs/latest  --baseurl /docs/latest/  --config src/main/resources/_config.prod.yml</execArgs>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <!-- run me with: mvn gem:exec@jekyll-serve -->
+                        <id>jekyll-serve</id>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <file>${env.GEM_HOME}/bin/jekyll</file>
+                            <execArgs>serve --trace --source ${project.basedir}/src/main/resources --destination ${project.build.outputDirectory}</execArgs>
+                        </configuration>
+                        <phase>none</phase>
+                    </execution>
+                </executions>
+                <configuration>
+                    <gemHome>${env.GEM_HOME}/</gemHome>
+                    <gemPath>${env.GEM_HOME}/</gemPath>
+                    <supportNative>true</supportNative>
+                    <jrubyVersion>9.2.5.0</jrubyVersion>
+                    <addProjectClasspath>true</addProjectClasspath>
+                    <jrubyVerbose>false</jrubyVerbose>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>timestamp-property</id>
+                        <goals>
+                            <goal>timestamp-property</goal>
+                        </goals>
+                        <configuration>
+                            <name>current.time</name>
+                            <pattern>yyyy/MM/dd HH:mm:ss</pattern>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>com.github.github</groupId>
+                <artifactId>site-maven-plugin</artifactId>
+                <version>0.12</version>
+                <configuration>
+                    <noJekyll>true</noJekyll>
+                    <repositoryOwner>apache</repositoryOwner>
+                    <repositoryName>incubator-wayang-website</repositoryName>
+                    <branch>refs/heads/asf-site</branch>
+                    <message>Creating site for ${project.version} at ${current.time}</message>
+                    <outputDirectory>${project.build.outputDirectory}/site/website</outputDirectory>
+                    <includes>
+                        <include>**/*</include>
+                    </includes>
+                    <merge>true</merge>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>site</goal>
+                        </goals>
+                        <phase>site</phase>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+    </build>
+
+    <scm>
+        <url>https://github.com/apache/incubator-wayang-website</url>
+        <connection>scm:git:git://github.com/apache/incubator-wayang.git</connection>
+        <developerConnection>scm:git:git@github.com:apache/incubator-wayang.git</developerConnection>
+    </scm>
+
+
+    <repositories>
+        <repository>
+            <id>rubygems-proxy</id>
+            <name>Rubygems Proxy</name>
+            <url>http://rubygems-proxy.torquebox.org/releases</url>
+            <layout>default</layout>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+                <updatePolicy>never</updatePolicy>
+            </snapshots>
+        </repository>
+    </repositories>
+
+</project>
diff --git a/wayang-docs/src/main/resources/.gitignore b/wayang-docs/src/main/resources/.gitignore
new file mode 100644
index 0000000..a3e114e
--- /dev/null
+++ b/wayang-docs/src/main/resources/.gitignore
@@ -0,0 +1,202 @@
+#
+# 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.
+#
+
+# Created by https://www.toptal.com/developers/gitignore/api/macos,jekyll,intellij+all,ruby
+# Edit at https://www.toptal.com/developers/gitignore?templates=macos,jekyll,intellij+all,ruby
+
+### Intellij+all ###
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Generated files
+.idea/**/contentModel.xml
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# Gradle and Maven with auto-import
+# When using Gradle or Maven with auto-import, you should exclude module files,
+# since they will be recreated, and may cause churn.  Uncomment if using
+# auto-import.
+# .idea/artifacts
+# .idea/compiler.xml
+# .idea/jarRepositories.xml
+# .idea/modules.xml
+# .idea/*.iml
+# .idea/modules
+# *.iml
+# *.ipr
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+# Android studio 3.1+ serialized cache file
+.idea/caches/build_file_checksums.ser
+
+### Intellij+all Patch ###
+# Ignores the whole .idea folder and all .iml files
+# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
+
+.idea/
+
+# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
+
+*.iml
+modules.xml
+.idea/misc.xml
+*.ipr
+
+# Sonarlint plugin
+.idea/sonarlint
+
+### Jekyll ###
+_site/
+.sass-cache/
+.jekyll-cache/
+.jekyll-metadata
+
+### macOS ###
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+### Ruby ###
+*.gem
+*.rbc
+/.config
+/coverage/
+/InstalledFiles
+/pkg/
+/spec/reports/
+/spec/examples.txt
+/test/tmp/
+/test/version_tmp/
+/tmp/
+
+# Used by dotenv library to load environment variables.
+# .env
+
+# Ignore Byebug command history file.
+.byebug_history
+
+## Specific to RubyMotion:
+.dat*
+.repl_history
+build/
+*.bridgesupport
+build-iPhoneOS/
+build-iPhoneSimulator/
+
+## Specific to RubyMotion (use of CocoaPods):
+#
+# We recommend against adding the Pods directory to your .gitignore. However
+# you should judge for yourself, the pros and cons are mentioned at:
+# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
+# vendor/Pods/
+
+## Documentation cache and generated files:
+/.yardoc/
+/_yardoc/
+/doc/
+/rdoc/
+
+## Environment normalization:
+/.bundle/
+/vendor/bundle
+/lib/bundler/man/
+
+# for a library or gem, you might want to ignore these files since the code is
+# intended to run in multiple environments; otherwise, check them in:
+# Gemfile.lock
+# .ruby-version
+# .ruby-gemset
+
+# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
+.rvmrc
+
+# Used by RuboCop. Remote config files pulled in from inherit_from directive.
+# .rubocop-https?--*
+
+# End of https://www.toptal.com/developers/gitignore/api/macos,jekyll,intellij+all,ruby
diff --git a/wayang-docs/src/main/resources/Gemfile b/wayang-docs/src/main/resources/Gemfile
new file mode 100644
index 0000000..d674407
--- /dev/null
+++ b/wayang-docs/src/main/resources/Gemfile
@@ -0,0 +1,34 @@
+#
+# 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.
+#
+
+# frozen_string_literal: true
+
+source "https://rubygems.org"
+
+git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
+
+# gem "rails"
+
+gem "jekyll", "~> 4.2"
+gem 'coderay', '~> 1.1.0'
+
+group :jekyll_plugins do
+  gem 'jekyll-asciidoc', '~> 2.1.1'
+  gem "jekyll-menus"
+end
+
+#gem "html-proofer"
diff --git a/wayang-docs/src/main/resources/Gemfile.lock b/wayang-docs/src/main/resources/Gemfile.lock
new file mode 100644
index 0000000..433ff60
--- /dev/null
+++ b/wayang-docs/src/main/resources/Gemfile.lock
@@ -0,0 +1,81 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    addressable (2.7.0)
+      public_suffix (>= 2.0.2, < 5.0)
+    asciidoctor (2.0.12)
+    coderay (1.1.3)
+    colorator (1.1.0)
+    concurrent-ruby (1.1.8)
+    em-websocket (0.5.2)
+      eventmachine (>= 0.12.9)
+      http_parser.rb (~> 0.6.0)
+    eventmachine (1.2.7)
+    eventmachine (1.2.7-java)
+    ffi (1.15.0)
+    ffi (1.15.0-java)
+    forwardable-extended (2.6.0)
+    http_parser.rb (0.6.0)
+    http_parser.rb (0.6.0-java)
+    i18n (1.8.9)
+      concurrent-ruby (~> 1.0)
+    jekyll (4.2.0)
+      addressable (~> 2.4)
+      colorator (~> 1.0)
+      em-websocket (~> 0.5)
+      i18n (~> 1.0)
+      jekyll-sass-converter (~> 2.0)
+      jekyll-watch (~> 2.0)
+      kramdown (~> 2.3)
+      kramdown-parser-gfm (~> 1.0)
+      liquid (~> 4.0)
+      mercenary (~> 0.4.0)
+      pathutil (~> 0.9)
+      rouge (~> 3.0)
+      safe_yaml (~> 1.0)
+      terminal-table (~> 2.0)
+    jekyll-asciidoc (2.1.1)
+      asciidoctor (>= 1.5.0)
+      jekyll (>= 2.3.0)
+    jekyll-menus (0.6.1)
+      jekyll (>= 3.6, < 5.0)
+    jekyll-sass-converter (2.1.0)
+      sassc (> 2.0.1, < 3.0)
+    jekyll-watch (2.2.1)
+      listen (~> 3.0)
+    kramdown (2.3.0)
+      rexml
+    kramdown-parser-gfm (1.1.0)
+      kramdown (~> 2.0)
+    liquid (4.0.3)
+    listen (3.4.1)
+      rb-fsevent (~> 0.10, >= 0.10.3)
+      rb-inotify (~> 0.9, >= 0.9.10)
+    mercenary (0.4.0)
+    pathutil (0.16.2)
+      forwardable-extended (~> 2.6)
+    public_suffix (4.0.6)
+    rb-fsevent (0.10.4)
+    rb-inotify (0.10.1)
+      ffi (~> 1.0)
+    rexml (3.2.4)
+    rouge (3.26.0)
+    safe_yaml (1.0.5)
+    sassc (2.4.0)
+      ffi (~> 1.9)
+    terminal-table (2.0.0)
+      unicode-display_width (~> 1.1, >= 1.1.1)
+    unicode-display_width (1.7.0)
+
+PLATFORMS
+  universal-darwin-20
+  universal-java-1.8
+
+DEPENDENCIES
+  coderay (~> 1.1.0)
+  jekyll (~> 4.2)
+  jekyll-asciidoc (~> 2.1.1)
+  jekyll-menus
+
+BUNDLED WITH
+   2.2.14
diff --git a/wayang-docs/src/main/resources/README.md b/wayang-docs/src/main/resources/README.md
new file mode 100644
index 0000000..8753776
--- /dev/null
+++ b/wayang-docs/src/main/resources/README.md
@@ -0,0 +1,54 @@
+# NOTES:
+
+## menus
+the menus is using the plugin jekyll-menus, the documentation is [here](https://github.com/forestryio/jekyll-menus)
+
+
+
+Structure of documentation
+
+[comment]: <> (TODO: add the internal structure of every topics)
+What is Wayang?
+    Concepts
+    Overview
+getting start Wayang
+    Building wayang
+    installing wayang
+    using wayang
+    how to develop on wayang
+Using Wayang
+    Api Java/Scala
+        overview
+        configurations
+        examples
+    API Python
+        overview
+        configurations
+        examples
+    .... same for API-SQL and futures api
+    calibrating the model
+Extending Wayang
+    Adding a platform
+        Creating the plugin
+        creating an operator
+        creating the mapping (1 to 1, 1 to n)
+        creating channel
+        creating the compiler
+        wrapping udf and others
+How to Contribute
+    Bugs Report
+    Jira Issue Maintenance
+    Documentation changes
+    Code change
+        Choosing what to contribute
+        code review criteria
+        preparing to contribute code changes
+            jira issues
+            pull request
+            closing your pull request and jira issue
+    review process
+    code style guide
+    reviewing changes
+    testing releases
+    user libraries to wayang
+    helping other users
diff --git a/wayang-docs/src/main/resources/_config.prod.yml b/wayang-docs/src/main/resources/_config.prod.yml
new file mode 100644
index 0000000..dea24c8
--- /dev/null
+++ b/wayang-docs/src/main/resources/_config.prod.yml
@@ -0,0 +1,44 @@
+#
+# 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.
+#
+
+url: "https://wayang.apache.org"
+baseurl: ""
+title: "Apache Wayang - Documentation"
+permalink: pretty
+collections:
+  publications:
+    output: true
+asciidoc: {}
+asciidoctor:
+  base_dir: :docdir
+  safe: unsafe
+  attributes:
+    - idseparator=_
+    - source-highlighter=coderay
+    - icons=font
+compress_html:
+  clippings: all
+  comments: ["<!-- ", " -->"]
+  endings: all
+  ignore:
+    envs: [local]
+  blanklines: false
+  profile: true
+  startings: [html, head, body]
+plugins:
+  - jekyll-menus
+exclude: ['README.md', 'Gemfile.lock', 'Gemfile']
diff --git a/wayang-docs/src/main/resources/_config.yml b/wayang-docs/src/main/resources/_config.yml
new file mode 100644
index 0000000..ab158eb
--- /dev/null
+++ b/wayang-docs/src/main/resources/_config.yml
@@ -0,0 +1,44 @@
+#
+# 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.
+#
+
+url: "http://127.0.0.1:4000"
+baseurl: ""
+title: "Apache Wayang - Documentation"
+permalink: pretty
+collections:
+  publications:
+    output: true
+asciidoc: {}
+asciidoctor:
+  base_dir: :docdir
+  safe: unsafe
+  attributes:
+    - idseparator=_
+    - source-highlighter=coderay
+    - icons=font
+compress_html:
+  clippings: all
+  comments: ["<!-- ", " -->"]
+  endings: all
+  ignore:
+    envs: [local]
+  blanklines: false
+  profile: true
+  startings: [html, head, body]
+plugins:
+  - jekyll-menus
+exclude: ['README.md', 'Gemfile.lock', 'Gemfile']
diff --git a/wayang-docs/src/main/resources/_data/menus.yml b/wayang-docs/src/main/resources/_data/menus.yml
new file mode 100644
index 0000000..c684d4c
--- /dev/null
+++ b/wayang-docs/src/main/resources/_data/menus.yml
@@ -0,0 +1,103 @@
+# 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:
+  - url: /what_is_wayang/
+    title: What is Wayang?
+    identifier: what_wayang
+    weight: 1
+
+  - url: /getting_start/
+    title: Getting Started with Wayang
+    identifier: getting_start
+    weight: 2
+
+  - url: /using_wayang/
+    title: Using Wayang
+    identifier: using
+    weight: 3
+
+  - url: /extending_wayang/
+    title: Extending Wayang
+    identifier: extending
+    weight: 4
+
+  - url: /how_contribute/
+    title: How To Contribute
+    identifier: contribute
+    weight: 5
+
+
+getting_start:
+  - url: /getting_start/how_build/
+    title: How To Build Wayang
+    identifier: build
+    weight: 0
+
+  - url: /getting_start/how_install/
+    title: How To Install Wayang
+    identifier: install
+    weight: 1
+
+  - url: /getting_start/how_run/
+    title: How To Run Wayang
+    identifier: run
+    weight: 2
+
+  - url: /getting_start/writting_wayang_plan/
+    title: Writting a Wayang Plan
+    identifier: writting
+    weight: 3
+
+using:
+  - url: /using_wayang/api_java_scala/
+    title: API Java/Scala
+    identifier: api_java
+    weight: 0
+
+  - url: /using_wayang/api_python/
+    title: API Python
+    identifier: api_python
+    weight: 1
+
+  - url: /using_wayang/api_rest/
+    title: API REST
+    identifier: api_rest
+    weight: 2
+
+#  - url: /using_wayang/api_sql/
+#    title: API SQL
+#    identifier: api_sql
+#    weight: 3
+
+extending:
+  - url: /extending_wayang/adding_platform/
+    title: Adding Platform
+    identifier: platform
+    weight: 0
+
+contribute:
+  - url: /how_contribute/code_changes/
+    title: Code Changes
+    identifier: code_changes
+    weight: 4
+
+
+code_changes:
+  - url: /how_contribute/code_changes/preparing_contribute_code_changes/
+    title: Preparing to Contribute Code Changes
+    identifier: preparing_code_changes
+    weight: 5
+
+
diff --git a/wayang-docs/src/main/resources/_includes/footer.html b/wayang-docs/src/main/resources/_includes/footer.html
new file mode 100644
index 0000000..6b80ede
--- /dev/null
+++ b/wayang-docs/src/main/resources/_includes/footer.html
@@ -0,0 +1,41 @@
+{% comment %}
+    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.
+{% endcomment %}
+
+<footer class="footer position-sticky sticky-bottom">
+    <nav class="navbar navbar-light bg-light"  style="background: #A6A6A6;">
+        <div class="container">
+            <div class="row">
+                <div class="col text-center">
+                    <a href="http://incubator.apache.org/" >
+                        <img style="max-height: 15vw" src="{{ "assets/img/egg-logo.png" | absolute_url }}">
+                    </a>
+                    <br />
+                    <p style="text-align: justify">
+                        Apache Wayang is an effort undergoing Incubation at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
+                    </p>
+                    <p class="text-center">
+                        Copyright &#169; 2021 The Apache Software Foundation.<br />
+                        Licensed under the Apache License, Version 2.0.<br />
+                        Apache, the Apache Feather logo, and the Apache Incubator project logo are trademarks of The Apache Software Foundation.
+                    </p>
+                </div>
+            </div>
+        </div>
+    </nav>
+</footer>
diff --git a/wayang-docs/src/main/resources/_includes/head.html b/wayang-docs/src/main/resources/_includes/head.html
new file mode 100644
index 0000000..2c3a209
--- /dev/null
+++ b/wayang-docs/src/main/resources/_includes/head.html
@@ -0,0 +1,55 @@
+{% comment %}
+    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.
+{% endcomment %}
+<head>
+    <!-- Required meta tags -->
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+
+    {% if jekyll.environment == "production" %}
+    {% comment %}
+    <meta http-equiv="Refresh" content="0;URL=https://wayang.apache.org{{page.url}}" />
+    {% endcomment %}
+    <script type="text/javascript">
+        if(window.location.protocol != 'https:') {
+            location.href =   location.href.replace("http://", "https://");
+        }
+    </script>
+    {% endif %}
+
+
+    <title>Apache Wayang - {{page.title}}</title>
+    <link rel="icon" href="{{ "assets/img/logo/favicon-pluma.ico" | absolute_url }}">
+
+    <!-- Bootstrap CSS -->
+    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">
+    <link rel="stylesheet" href="{{ "assets/css/color.css" | absolute_url }}">
+    <link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.10.0/css/all.css" integrity="sha384-AYmEC3Yw5cVb3ZcuHtOA93w35dYTsvhLPVnYs9eStHfGJvOvKxVfELGroGkvsg+p" crossorigin="anonymous"/>
+
+    <link rel="stylesheet" href="{{ "assets/css/monokai.css" | absolute_url }}">
+    <link rel="stylesheet" href="{{ "assets/css/main.css" | absolute_url }}">
+
+    <link rel="preconnect" href="https://fonts.gstatic.com">
+    <link href="https://fonts.googleapis.com/css2?family=Ubuntu:ital,wght@0,300;1,400;1,700&display=swap" rel="stylesheet">
+
+    <style>
+        body{
+            font-family: 'Ubuntu', sans-serif;
+        }
+    </style>
+</head>
diff --git a/wayang-docs/src/main/resources/_includes/scripts.html b/wayang-docs/src/main/resources/_includes/scripts.html
new file mode 100644
index 0000000..e83bcbb
--- /dev/null
+++ b/wayang-docs/src/main/resources/_includes/scripts.html
@@ -0,0 +1,24 @@
+{% comment %}
+    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.
+{% endcomment %}
+
+<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-Piv4xVNRyMGpqkS2by6br4gNJ7DXjqk09RmUpJ8jgGtD7zP9yug3goQfGII0yAns" crossorigin="anonymous"></script>
+
+<script src="{{ "assets/js/add_numbers.js" | absolute_url }}"></script>
+<script src="{{ "assets/js/menu.js" | absolute_url }}"></script>
diff --git a/wayang-docs/src/main/resources/_includes/sub-menu.html b/wayang-docs/src/main/resources/_includes/sub-menu.html
new file mode 100644
index 0000000..2ee6ab6
--- /dev/null
+++ b/wayang-docs/src/main/resources/_includes/sub-menu.html
@@ -0,0 +1,58 @@
+{% comment %}
+    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.
+{% endcomment %}
+
+{% capture itemurl %}{{ item.url | absolute_url }}{% endcapture %}
+{% capture pageurl %}{{ page.url | absolute_url }}{% endcapture %}
+
+{% if itemurl == pageurl %}
+    {% assign current = 'active' %}
+{% else %}
+    {% assign current = '' %}
+{% endif %}
+
+{% capture space %}{{ space | size | times: 0 | plus: 1}}{% endcapture %}
+{% capture hashpath %}{{ item.url | remove: '/' | strip_newlines}}{% endcapture %}
+
+<li class="nav-item">
+    {% unless item.children != nil %}
+        <a class="nav-link {{current}}" href="{{ item.url | absolute_url }}" title="Go to {{ item.title }}">
+            {{ item.title }}
+        </a>
+    {% else %}
+        <div class="d-flex justify-content-between nav-link main-link {{current}}">
+            <a class="p-2" href="{{ item.url | absolute_url }}" title="Go to {{ item.title }}">
+                {{ item.title }}
+            </a>
+            <a class="p-2 align-self-center" data-toggle="collapse" href="#submenu_{{hashpath}}" role="button" aria-expanded="false" aria-controls="submenu_{{hashpath}}">
+                <i class="fas fa-chevron-down"></i>
+            </a>
+        </div>
+        <div class="collapse sub-menu" id="submenu_{{hashpath}}">
+            <ul class="flex-column nav">
+                {% capture level %}{{level}}|{% endcapture %}
+                {% for item in item.children %}
+                    {%- include sub-menu.html -%}
+                {% endfor %}
+                {% capture length %}{{ level | size | minus: 1 }}{% endcapture %}
+                {% capture level %}{{ level | slice: 1, length | lstrip | rstrip }}{% endcapture %}
+            </ul>
+        </div>
+    {% endunless %}
+</li>
+
diff --git a/wayang-docs/src/main/resources/_layouts/default.html b/wayang-docs/src/main/resources/_layouts/default.html
new file mode 100644
index 0000000..4db2915
--- /dev/null
+++ b/wayang-docs/src/main/resources/_layouts/default.html
@@ -0,0 +1,151 @@
+<!--
+  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>
+<html lang="{{ page.lang | default: site.lang | default: "en" }}">
+
+{%- include head.html -%}
+
+<body>
+
+<header class="navbar navbar-expand flex-column flex-md-row bd-navbar p-0 shadow sticky-top" style=" height: 75px !important; background-color: #ffffff">
+
+    <div class="col-md-3 col-xl-2 text-center"style="border-right: #a00e5a 1px solid; height: 100%">
+      <a class="navbar-brand mr-auto" href="{% link index.md %}">
+        <img style="max-height: inherit; height: 2.6em;" src="{{ "assets/img/logo/logo_400x160.png" | absolute_url }}"/>
+      </a>
+    </div>
+    <div class="col-md-9 col-xl-8" role="main">
+        <h3 style="color: #ff8724">Documentation Apache Wayang</h3>
+    </div>
+
+</header>
+
+<div class="container-fluid">
+  <div class="row flex-xl-nowrap">
+    <div class="col-md-3 col-xl-2 bd-sidebar pt-3 px-0" style="min-height: 95vh; border-right: solid 1px #a00e5a; background-color: #F5F7F9">
+      <ul id="main-menu" class="nav flex-column nav-pills">
+        {% for item in site.menus.header %}
+          {%- include sub-menu.html -%}
+        {% endfor %}
+
+
+        <!--        <a class="nav-link active" href="#">Read Me</a>-->
+<!--        <a class="nav-link main-link" href="how_contribute" tabindex="-1" aria-disabled="true">How To Contribute</a>-->
+<!--        <a class="nav-link" href="how_contribute">Bugs Report</a>-->
+<!--        <a class="nav-link" href="#">Jira Issue Maintenance</a>-->
+<!--        <a class="nav-link" href="#">Documentation Changes</a>-->
+<!--        <a class="nav-link" href="#">Code Changes</a>-->
+<!--        <a class="nav-link" href="#">Code Changes - Choosing What to Contribute</a>-->
+<!--        <a class="nav-link" href="#">Code Changes - Code Review Criteria</a>-->
+<!--        <a class="nav-link" href="#">Code Changes - Preparing to Contribute Code Changes</a>-->
+<!--        <a class="nav-link" href="#">Review Changes</a>-->
+<!--        <a class="nav-link" href="#">Testing Releases</a>-->
+<!--        <a class="nav-link" href="#">User Libraries to Wayang</a>-->
+<!--        <a class="nav-link" href="#">Helping Other Users</a>-->
+<!--        <a class="nav-link" href="#">Slack Channel and Emails</a>-->
+<!--        <a class="nav-link main-link" href="#" tabindex="-1" aria-disabled="true">How To Build Wayang</a>-->
+<!--        <a class="nav-link" href="#">Building Wayang</a>-->
+<!--        <a class="nav-link main-link" href="#" tabindex="-1" aria-disabled="true">How To Install Wayang</a>-->
+<!--        <a class="nav-link" href="#">Installing Wayang</a>-->
+<!--        <a class="nav-link main-link" href="#" tabindex="-1" aria-disabled="true">How To Run Wayang</a>-->
+<!--        <a class="nav-link" href="#">Running Wayang</a>-->
+      </ul>
+    </div>
+<!--    TODO: validate if is usable-->
+<!--    <nav class="d-none d-xl-block col-xl-2 bd-toc" aria-label="Secondary navigation">-->
+<!--      <ul class="section-nav">-->
+<!--        <li class="toc-entry toc-h2"><a href="#base-nav">Base nav</a></li>-->
+<!--        <li class="toc-entry toc-h2"><a href="#available-styles">Available styles</a>-->
+<!--          <ul>-->
+<!--            <li class="toc-entry toc-h3"><a href="#horizontal-alignment">Horizontal alignment</a></li>-->
+<!--            <li class="toc-entry toc-h3"><a href="#vertical">Vertical</a></li>-->
+<!--            <li class="toc-entry toc-h3"><a href="#tabs">Tabs</a></li>-->
+<!--            <li class="toc-entry toc-h3"><a href="#pills">Pills</a></li>-->
+<!--            <li class="toc-entry toc-h3"><a href="#fill-and-justify">Fill and justify</a></li>-->
+<!--          </ul>-->
+<!--        </li>-->
+<!--        <li class="toc-entry toc-h2"><a href="#working-with-flex-utilities">Working with flex utilities</a></li>-->
+<!--        <li class="toc-entry toc-h2"><a href="#regarding-accessibility">Regarding accessibility</a></li>-->
+<!--        <li class="toc-entry toc-h2"><a href="#using-dropdowns">Using dropdowns</a>-->
+<!--          <ul>-->
+<!--            <li class="toc-entry toc-h3"><a href="#tabs-with-dropdowns">Tabs with dropdowns</a></li>-->
+<!--            <li class="toc-entry toc-h3"><a href="#pills-with-dropdowns">Pills with dropdowns</a></li>-->
+<!--          </ul>-->
+<!--        </li>-->
+<!--        <li class="toc-entry toc-h2"><a href="#javascript-behavior">JavaScript behavior</a>-->
+<!--          <ul>-->
+<!--            <li class="toc-entry toc-h3"><a href="#using-data-attributes">Using data attributes</a></li>-->
+<!--            <li class="toc-entry toc-h3"><a href="#via-javascript">Via JavaScript</a></li>-->
+<!--            <li class="toc-entry toc-h3"><a href="#fade-effect">Fade effect</a></li>-->
+<!--            <li class="toc-entry toc-h3"><a href="#methods">Methods</a>-->
+<!--              <ul>-->
+<!--                <li class="toc-entry toc-h4"><a href="#tab">$().tab</a></li>-->
+<!--                <li class="toc-entry toc-h4"><a href="#tabshow">.tab(‘show’)</a></li>-->
+<!--                <li class="toc-entry toc-h4"><a href="#tabdispose">.tab(‘dispose’)</a></li>-->
+<!--              </ul>-->
+<!--            </li>-->
+<!--            <li class="toc-entry toc-h3"><a href="#events">Events</a></li>-->
+<!--          </ul>-->
+<!--        </li>-->
+<!--      </ul>-->
+<!--    </nav>-->
+    <main class="col-md-9 col-xl-8 py-md-3 pl-md-5 bd-content" role="main">
+      {{content}}
+      <div class="row btn-area-page  justify-content-center" >
+        <div class="col-md-3">
+          {% if page.previous.url %}
+          <a href="{{page.previous.url}}" class="d-flex align-items-center page-btn shadow">
+              <div class="mr-auto">
+                <i class="fas fa-arrow-left fa-4x"></i>
+              </div>
+              <div class="text-right" >
+                <strong>Previous Page</strong>
+                <p class="title-page-btn">
+                  {{page.previous.title | capitalize}}
+                </p>
+              </div>
+          </a>
+          {% endif %}
+        </div>
+        <div class="col-md-3">
+          {% if page.next.url %}
+          <a href="{{page.next.url}}" class="d-flex align-items-center page-btn shadow" >
+            <div class="text-left" >
+              <strong>Next Page</strong>
+              <p class="title-page-btn">
+                {{page.next.title | capitalize}}
+              </p>
+            </div>
+            <div class="ml-auto">
+              <i class="fas fa-arrow-right  fa-4x"></i>
+            </div>
+          </a>
+          {% endif %}
+        </div>
+      </div>
+      {%- include footer.html -%}
+    </main>
+  </div>
+</div>
+
+{%- include scripts.html -%}
+
+</body>
+
+</html>
diff --git a/wayang-docs/src/main/resources/_sass/main.scss b/wayang-docs/src/main/resources/_sass/main.scss
new file mode 100644
index 0000000..59f429e
--- /dev/null
+++ b/wayang-docs/src/main/resources/_sass/main.scss
@@ -0,0 +1,25 @@
+//  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.
+$backgroundColor: #ffffff;
+$bodyColor: #000000;
+$bodyFont: -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";
+
+body {
+  background: $backgroundColor;
+  color: $bodyColor;
+  font-family: $bodyFont;
+}
diff --git a/wayang-docs/src/main/resources/assets/css/color.css b/wayang-docs/src/main/resources/assets/css/color.css
new file mode 100644
index 0000000..115cfb3
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/css/color.css
@@ -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.
+ */
+
+/*TODO: bring the css to scss*/
+.bg-gray-dark {
+    background-color: #4C5459 !important;
+}
+
+.bg-gray-light {
+    #background-color: #A6A6A6 !important;
+    background-color: #111111 !important;
+}
+
+.bg-brown-light {
+    background-color: #D9C2A7 !important;
+}
+
+.bg-brown-dark {
+    background-color: #593825 !important;
+}
+
+.bg-black {
+    background-color: #261816 !important;
+}
+
+.letter-gray-dark {
+    color: #4C5459 !important;
+}
+
+.letter-grey-light {
+    color: #A6A6A6 !important;
+}
+
+.letter-brown-light {
+    color: #D9C2A7 !important;
+}
+
+.letter-brown-dark {
+    color: #593825 !important;
+}
+
+.letter-black {
+    color: #261816 !important;
+}
+
+#logo-full {
+    background-image: url(../img/wayang-logo.svg);
+}
+
+.rotateimg15 {
+    -webkit-transform:rotate(-15deg);
+    -moz-transform: rotate(-15deg);
+    -ms-transform: rotate(-15deg);
+    -o-transform: rotate(-15deg);
+    transform: rotate(-15deg);
+}
+
+.service-item > *{
+    text-align: center;
+}
diff --git a/wayang-docs/src/main/resources/assets/css/main.css b/wayang-docs/src/main/resources/assets/css/main.css
new file mode 100644
index 0000000..a3224eb
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/css/main.css
@@ -0,0 +1,143 @@
+/**
+    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-link{
+    color: #3B454E !important;
+    width: 100%;
+    border-radius: 0 !important;
+}
+
+.nav-link:hover{
+    background: #E6ECF1;
+}
+
+.nav-link.active{
+    background: #fff !important;
+    border-bottom: 1px solid #a00e5a;
+    border-left: 7px solid #a00e5a;
+    border-top: 1px solid #a00e5a;
+    border-right: 1px solid #fff;
+    color: #a00e5a !important;
+    font-weight: bold;
+    width: calc(100% + 1px);
+}
+
+.nav-link.main-link{
+    color: #ff8724 !important;
+    font-weight: bold;
+    text-transform: uppercase;
+    border-bottom: 1px solid #a00e5a;
+}
+
+.nav-link.main-link > a{
+    color: #ff8724 !important;
+    font-weight: bold;
+    text-transform: capitalize;
+}
+
+.nav-link.main-link > a:hover{
+    color: #ff8724 !important;
+    font-weight: bold;
+    text-transform: capitalize;
+    text-decoration: none;
+}
+
+.nav-link.main-link.active {
+    color: #a00e5a !important;
+}
+
+
+h1, h2, h3, h4 {
+    color: #ff8724 !important;
+}
+
+h1 {
+    border-bottom: 2px solid #a00e5a;
+    padding-top: 0.5em;
+    padding-bottom: 0.1em;
+    font-weight: bold;
+}
+
+.green{
+    background-color: green;
+}
+
+.red{
+    background-color: red;
+}
+
+.page-btn {
+    width: 100%;
+    height: 100px;
+    border: #a00e5a solid 1px;
+    padding: 1em;
+    color: #a00e5a;
+    text-decoration: none;
+    transition: border 0.3s linear;
+}
+
+.page-btn:focus, .page-btn:hover{
+    color: #a00e5a;
+    text-decoration: none;
+    border: #a00e5a solid 5px;
+}
+
+.title-page-btn{
+    color: #ff8724 !important;
+    font-size: 2em;
+    margin: 0;
+    margin-top: -0.3em;
+    padding: 0;
+    font-weight: 900;
+}
+
+.btn-area-page{
+    margin-top: 3em;
+    padding-top: 2em;
+    border-top: #a00e5a solid 2px;
+    margin-bottom: 2em;
+}
+
+.sub-menu{
+    margin-left: 1em;
+    border-left: 1px solid #a00e5a;
+    background-color: rgba(160, 14, 90, 0.05);
+}
+
+.link-btn {
+    width: 10%;
+    background-color: transparent;
+    vertical-align: middle !important;
+}
+
+.sub-menu:before {
+    content:'';
+    position: relative;
+    top: 0.25em;
+    left: -0.5em;
+    border-top: solid 0.5em #a00e5a;
+    border-left: solid 0.5em transparent;
+    border-right: solid 0.5em transparent;
+}
+
+div.sub-menu ul li:last-child {
+    border-bottom: solid 1px #a00e5a;
+}
+
+/*div.sub-menu ul li:nth-child(2n) {*/
+/*    background-color: rgba(100, 100, 100, 0.1);*/
+/*}*/
diff --git a/wayang-docs/src/main/resources/assets/css/monokai.css b/wayang-docs/src/main/resources/assets/css/monokai.css
new file mode 100644
index 0000000..1a53293
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/css/monokai.css
@@ -0,0 +1,116 @@
+/*
+ * 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 pre {
+    background-color: #272822;
+    padding: 0.5em;
+    border-radius: 25px;
+}
+.highlight .hll { background-color: #272822; }
+.highlight .c { color: #75715e } /* Comment */
+.highlight .err { /* Error */
+    color: #f92672;
+}
+.highlight .k { color: #66d9ef } /* Keyword */
+.highlight .l { color: #ae81ff } /* Literal */
+.highlight .n { color: #f8f8f2 } /* Name */
+.highlight .o { color: #f92672 } /* Operator */
+.highlight .p { color: #f8f8f2 } /* Punctuation */
+.highlight .cm { color: #75715e } /* Comment.Multiline */
+.highlight .cp { color: #75715e } /* Comment.Preproc */
+.highlight .c1 { color: #75715e } /* Comment.Single */
+.highlight .cs { color: #75715e } /* Comment.Special */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .kc { color: #66d9ef } /* Keyword.Constant */
+.highlight .kd { color: #66d9ef } /* Keyword.Declaration */
+.highlight .kn { color: #f92672 } /* Keyword.Namespace */
+.highlight .kp { color: #66d9ef } /* Keyword.Pseudo */
+.highlight .kr { color: #66d9ef } /* Keyword.Reserved */
+.highlight .kt { color: #66d9ef } /* Keyword.Type */
+.highlight .ld { color: #e6db74 } /* Literal.Date */
+.highlight .m { color: #ae81ff } /* Literal.Number */
+.highlight .s { color: #e6db74 } /* Literal.String */
+.highlight .na { color: #a6e22e } /* Name.Attribute */
+.highlight .nb { color: #f8f8f2 } /* Name.Builtin */
+.highlight .nc { color: #a6e22e } /* Name.Class */
+.highlight .no { color: #66d9ef } /* Name.Constant */
+.highlight .nd { color: #a6e22e } /* Name.Decorator */
+.highlight .ni { color: #f8f8f2 } /* Name.Entity */
+.highlight .ne { color: #a6e22e } /* Name.Exception */
+.highlight .nf { color: #a6e22e } /* Name.Function */
+.highlight .nl { color: #f8f8f2 } /* Name.Label */
+.highlight .nn { color: #f8f8f2 } /* Name.Namespace */
+.highlight .nx { color: #a6e22e } /* Name.Other */
+.highlight .py { color: #f8f8f2 } /* Name.Property */
+.highlight .nt { color: #f92672 } /* Name.Tag */
+.highlight > code { color: #f8f8f2 } /* Name.Tag */
+.highlight .nv { color: #f8f8f2 } /* Name.Variable */
+.highlight .ow { color: #f92672 } /* Operator.Word */
+.highlight .w { color: #f8f8f2 } /* Text.Whitespace */
+.highlight .mf { color: #ae81ff } /* Literal.Number.Float */
+.highlight .mh { color: #ae81ff } /* Literal.Number.Hex */
+.highlight .mi { color: #ae81ff } /* Literal.Number.Integer */
+.highlight .mo { color: #ae81ff } /* Literal.Number.Oct */
+.highlight .sb { color: #e6db74 } /* Literal.String.Backtick */
+.highlight .sc { color: #e6db74 } /* Literal.String.Char */
+.highlight .sd { color: #e6db74 } /* Literal.String.Doc */
+.highlight .s2 { color: #e6db74 } /* Literal.String.Double */
+.highlight .se { color: #ae81ff } /* Literal.String.Escape */
+.highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */
+.highlight .si { color: #e6db74 } /* Literal.String.Interpol */
+.highlight .sx { color: #e6db74 } /* Literal.String.Other */
+.highlight .sr { color: #e6db74 } /* Literal.String.Regex */
+.highlight .s1 { color: #e6db74 } /* Literal.String.Single */
+.highlight .ss { color: #e6db74 } /* Literal.String.Symbol */
+.highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */
+.highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */
+.highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */
+.highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */
+
+.highlight .gh { } /* Generic Heading & Diff Header */
+.highlight .gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */
+.highlight .gd { color: #f92672; } /* Generic.Deleted & Diff Deleted */
+.highlight .gi { color: #a6e22e; } /* Generic.Inserted & Diff Inserted */
+
+/** Number in the lines*/
+pre .line-number {
+    color:black;
+    display:block;
+    color: #f8f8f2;
+}
+
+pre .line-number {
+    float:left;
+    margin:0 1em 0 -1em;
+    border-right:1px solid;
+    text-align:right;
+}
+
+pre .line-number span {
+    display:block;
+    padding:0 .5em 0 1em;
+    margin-left: 0.5em;
+}
+
+pre .cl {
+    display:block;
+    clear:both;
+    color: #f8f8f2;
+}
diff --git a/wayang-docs/src/main/resources/assets/img/egg-logo.png b/wayang-docs/src/main/resources/assets/img/egg-logo.png
new file mode 100644
index 0000000..759252f
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/egg-logo.png
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/img/logo/Apache_Wayang/Apache_Wayang Informe.txt b/wayang-docs/src/main/resources/assets/img/logo/Apache_Wayang/Apache_Wayang Informe.txt
new file mode 100644
index 0000000..40ba1cb
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/Apache_Wayang/Apache_Wayang Informe.txt
@@ -0,0 +1,56 @@
+#  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.
+
+
+Informe del paquete
+
+-----------------------------------------------------------------------------
+Documento:
+Nombre: Apache_Wayang.pdf
+Modo de color: Color RGB
+Perfil de color: sRGB IEC61966-2.1
+Unidades de regla: p�xeles
+Dimensiones de la mesa de trabajo: 1920 px x 1080 px
+Mostrar im�genes en modo contorno: Desactivado
+Resaltar fuentes sustituidas: Desactivado
+Resaltar glifos sustituidos: Desactivado
+Conservar capacidad de edici�n de texto
+Simular papel de color: Desactivado
+
+-----------------------------------------------------------------------------
+Objetos de tintas planas:
+
+-----------------------------------------------------------------------------
+Fuentes no disponibles:Ninguno
+
+-----------------------------------------------------------------------------
+Fuentes protegidas no empaquetadas:Ninguno
+
+-----------------------------------------------------------------------------
+Fuentes:
+Anguita Sans Bold (OTF)
+Brandon Text Regular (OTF)
+
+-----------------------------------------------------------------------------
+Fuentes incrustadas:
+Ninguno
+
+-----------------------------------------------------------------------------
+Enlaces no disponibles:
+Ninguno
+
+-----------------------------------------------------------------------------
+Im�genes enlazadas:
+Ninguno
diff --git a/wayang-docs/src/main/resources/assets/img/logo/Apache_Wayang/Apache_Wayang.pdf b/wayang-docs/src/main/resources/assets/img/logo/Apache_Wayang/Apache_Wayang.pdf
new file mode 100644
index 0000000..fcdc15a
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/Apache_Wayang/Apache_Wayang.pdf
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/img/logo/Apache_Wayang/Fonts/HVD Fonts - BrandonText-Regular.otf b/wayang-docs/src/main/resources/assets/img/logo/Apache_Wayang/Fonts/HVD Fonts - BrandonText-Regular.otf
new file mode 100644
index 0000000..c4bcf6f
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/Apache_Wayang/Fonts/HVD Fonts - BrandonText-Regular.otf
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/img/logo/Apache_Wayang/Fonts/anguita-sans-bold.otf b/wayang-docs/src/main/resources/assets/img/logo/Apache_Wayang/Fonts/anguita-sans-bold.otf
new file mode 100644
index 0000000..71d8f27
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/Apache_Wayang/Fonts/anguita-sans-bold.otf
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/img/logo/favicon-pluma.ico b/wayang-docs/src/main/resources/assets/img/logo/favicon-pluma.ico
new file mode 100644
index 0000000..4f05859
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/favicon-pluma.ico
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/img/logo/favicon.ico b/wayang-docs/src/main/resources/assets/img/logo/favicon.ico
new file mode 100644
index 0000000..083e00d
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/favicon.ico
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/img/logo/logo_2000x2000.png b/wayang-docs/src/main/resources/assets/img/logo/logo_2000x2000.png
new file mode 100644
index 0000000..5bf8c96
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/logo_2000x2000.png
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/img/logo/logo_2000x800.png b/wayang-docs/src/main/resources/assets/img/logo/logo_2000x800.png
new file mode 100644
index 0000000..d63b4aa
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/logo_2000x800.png
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/img/logo/logo_200x200.png b/wayang-docs/src/main/resources/assets/img/logo/logo_200x200.png
new file mode 100644
index 0000000..1b1c044
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/logo_200x200.png
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/img/logo/logo_3500x1400.png b/wayang-docs/src/main/resources/assets/img/logo/logo_3500x1400.png
new file mode 100644
index 0000000..6515681
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/logo_3500x1400.png
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/img/logo/logo_400x160.png b/wayang-docs/src/main/resources/assets/img/logo/logo_400x160.png
new file mode 100644
index 0000000..272fbb6
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/logo_400x160.png
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/img/logo/logo_800x320.png b/wayang-docs/src/main/resources/assets/img/logo/logo_800x320.png
new file mode 100644
index 0000000..1f20a93
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/logo_800x320.png
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/img/logo/logo_800x800.png b/wayang-docs/src/main/resources/assets/img/logo/logo_800x800.png
new file mode 100644
index 0000000..b810333
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/logo_800x800.png
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/img/logo/logo_svg.svg b/wayang-docs/src/main/resources/assets/img/logo/logo_svg.svg
new file mode 100644
index 0000000..06b9e0a
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/logo_svg.svg
@@ -0,0 +1,209 @@
+<?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="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 352 405" style="enable-background:new 0 0 352 405;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FC8634;}
+	.st1{fill:#9D155A;}
+	.st2{fill:url(#SVGID_1_);}
+	.st3{fill:none;}
+	.st4{fill:#B9122B;}
+	.st5{opacity:0.35;fill:#B9122B;}
+	.st6{fill:url(#SVGID_2_);}
+	.st7{fill:url(#SVGID_3_);}
+	.st8{fill:url(#SVGID_4_);}
+	.st9{fill:url(#SVGID_5_);}
+	.st10{fill:url(#SVGID_6_);}
+	.st11{fill:url(#SVGID_7_);}
+	.st12{fill:url(#SVGID_8_);}
+	.st13{fill:url(#SVGID_9_);}
+	.st14{fill:url(#SVGID_10_);}
+</style>
+<g>
+	<g>
+		<path class="st0" d="M40.6,372.9c-1.2,0-2-0.6-2.3-1.8l-14.7-69.3c-0.2-1.3,0.4-2.3,1.8-2.3h12c1.2,0,1.9,0.5,2.2,1.9l5.6,34.9
+			h0.5l6.6-34.9c0.2-1.3,1-1.9,2.2-1.9h4.8c1.2,0,2,0.6,2.3,1.9l6.7,34.9h0.5l5.5-34.9c0.2-1.4,1-1.9,2.2-1.9h12.1
+			c1.4,0,2,1,1.7,2.3l-14.7,69.3c-0.1,1.2-1,1.8-2.2,1.8h-7.4c-1.2,0-1.9-0.6-2.2-1.9l-6.3-41.1h-0.6L50.1,371
+			c-0.2,1.2-1.1,1.9-2.3,1.9H40.6z"/>
+		<path class="st0" d="M92.6,356.5V316c0-11.4,4.3-17.5,15.4-17.5c4.8,0,9.2,3.2,10.4,7.1h0.6v-3.9c0-1.3,0.7-2,2-2h11.1
+			c1.3,0,2,0.7,2,2v69.3c0,1.3-0.7,2-2,2h-11.1c-1.3,0-2-0.7-2-2v-3.9h-0.6c-1.2,3.8-5.6,7.1-10.4,7.1
+			C96.9,374,92.6,367.9,92.6,356.5z M118.6,357.1v-41.7c-0.7-2-2-4.1-5.3-4.1c-3.3,0-5,2-5,6.1v37.7c0,4.1,1.7,6.1,5,6.1
+			C116.5,361.2,117.8,359.2,118.6,357.1z"/>
+		<path class="st0" d="M143.6,387.1c-1.2-0.1-1.8-1-1.8-2.2v-9.3c0-1.3,0.6-2.2,1.7-1.9c0.6,0.1,1.6,0.2,2.3,0.2
+			c4.3,0,6.1-0.7,6.7-3.7l0.2-1l-14.8-67.5c-0.2-1.3,0.4-2.3,1.8-2.3h12.6c1.2,0,2,0.6,2.2,1.9l6.8,48.4h0.5l5.7-48.3
+			c0.1-1.3,1-2,2.2-2h11.7c1.3,0,2,1,1.8,2.3L169.4,368c-3.5,15.9-9.2,19.5-21.2,19.5C146.7,387.5,145,387.3,143.6,387.1z"/>
+		<path class="st0" d="M185.5,356.5V316c0-11.4,4.3-17.5,15.4-17.5c4.8,0,9.2,3.2,10.4,7.1h0.6v-3.9c0-1.3,0.7-2,2-2h11.1
+			c1.3,0,2,0.7,2,2v69.3c0,1.3-0.7,2-2,2H214c-1.3,0-2-0.7-2-2v-3.9h-0.6c-1.2,3.8-5.6,7.1-10.4,7.1
+			C189.9,374,185.5,367.9,185.5,356.5z M211.5,357.1v-41.7c-0.7-2-2-4.1-5.3-4.1c-3.3,0-5,2-5,6.1v37.7c0,4.1,1.7,6.1,5,6.1
+			C209.5,361.2,210.8,359.2,211.5,357.1z"/>
+		<path class="st0" d="M236.4,372.9c-1.3,0-2-0.7-2-2v-69.3c0-1.3,0.7-2,2-2h11.1c1.3,0,2,0.7,2,2v3.9h0.6c2.4-3.8,6.5-7.1,12-7.1
+			c12.4,0,13.8,7.4,13.8,19.6v52.8c0,1.3-0.7,2-2,2h-11.6c-1.3,0-2-0.7-2-2v-53c0-4.7-1.3-6.3-4.2-6.3c-2.6,0-4.7,1.2-6,4.2v55.1
+			c0,1.3-0.7,2-1.9,2H236.4z"/>
+		<path class="st0" d="M323.7,317V344c0,6.5-2.3,11.5-6.8,14.6c3.3,1.3,6.7,5,6.7,11.5c0,11.4-7.3,17.5-20.8,17.5
+			c-16.3,0-20.8-8.9-20.8-18.8v-1c0-1.3,0.7-2,2-2h11.7c1.2,0,1.9,0.7,1.9,2v2c0,3.5,1.9,5.5,5.1,5.5c3.5,0,5.3-2.3,5.3-6.9
+			c0-5-2.3-5.9-4.9-5.9c-14,0-21.1-7.4-21.1-18.5V317c0-10.2,4.3-18.5,20.9-18.5c3.2,0,6,0.4,8.3,1.1c1.9-0.5,3.5-3.3,3.5-11.7
+			c0-1.4,0.7-2.2,2-2.2h9.4c1.3,0,2.2,1.3,1.8,3.6c-1.2,8-5.5,11.4-9.7,13.6C322.4,306.3,323.7,311.4,323.7,317z M308,343.4v-25.7
+			c0-4.5-1.9-6.1-5.1-6.1c-3.3,0-5.1,1.6-5.1,6.1v25.7c0,4.4,1.8,6.1,5.1,6.1C306.2,349.5,308,347.8,308,343.4z"/>
+	</g>
+	<g>
+		<path class="st1" d="M26,275.1l10.4-23c0.1-0.2,0.3-0.4,0.6-0.4h0.3c0.3,0,0.5,0.2,0.6,0.4l10.3,23c0.2,0.4-0.1,0.9-0.6,0.9h-1.4
+			c-0.3,0-0.5-0.2-0.6-0.4l-2.5-5.6H31l-2.5,5.6c-0.1,0.2-0.3,0.4-0.6,0.4h-1.4C26.1,276,25.8,275.5,26,275.1z M42.3,267.8
+			c-1.7-3.7-3.3-7.5-5-11.2H37l-5,11.2H42.3z"/>
+		<path class="st1" d="M86,252.7c0-0.3,0.3-0.6,0.6-0.6h7.6c4.2,0,7.7,3.4,7.7,7.6c0,4.2-3.5,7.7-7.6,7.7h-5.6v8
+			c0,0.3-0.3,0.6-0.6,0.6h-1.3c-0.4,0-0.6-0.3-0.6-0.6V252.7z M94,264.8c2.8,0,5.2-2.1,5.2-5.2c0-3-2.4-4.9-5.2-4.9h-5.4v10.1H94z"
+			/>
+		<path class="st1" d="M135.9,275.1l10.4-23c0.1-0.2,0.3-0.4,0.6-0.4h0.3c0.3,0,0.5,0.2,0.6,0.4l10.3,23c0.2,0.4-0.1,0.9-0.6,0.9
+			h-1.4c-0.3,0-0.5-0.2-0.6-0.4L153,270h-12.1l-2.5,5.6c-0.1,0.2-0.3,0.4-0.6,0.4h-1.4C135.9,276,135.7,275.5,135.9,275.1z
+			 M152.1,267.8c-1.7-3.7-3.3-7.5-5-11.2h-0.3l-5,11.2H152.1z"/>
+		<path class="st1" d="M206.3,251.7c3.5,0,6,1.2,8.3,3.2c0.3,0.3,0.3,0.7,0,1l-0.9,0.9c-0.3,0.3-0.5,0.3-0.9,0
+			c-1.8-1.5-4-2.6-6.5-2.6c-5.4,0-9.5,4.5-9.5,9.8c0,5.3,4.1,9.8,9.5,9.8c3,0,4.7-1,6.5-2.6c0.3-0.3,0.6-0.2,0.9,0l0.8,0.8
+			c0.3,0.2,0.2,0.7,0,0.9c-2.3,2.1-5.1,3.3-8.1,3.3c-6.8,0-12.3-5.4-12.3-12.3C193.9,257.2,199.4,251.7,206.3,251.7z"/>
+		<path class="st1" d="M253.8,252.7c0-0.3,0.3-0.6,0.6-0.6h1.3c0.4,0,0.6,0.3,0.6,0.6v10h13.9v-10c0-0.3,0.3-0.6,0.6-0.6h1.3
+			c0.3,0,0.6,0.3,0.6,0.6v22.6c0,0.3-0.3,0.6-0.6,0.6h-1.3c-0.4,0-0.6-0.3-0.6-0.6V265h-13.9v10.4c0,0.3-0.3,0.6-0.6,0.6h-1.3
+			c-0.3,0-0.6-0.3-0.6-0.6V252.7z"/>
+		<path class="st1" d="M313.7,252.7c0-0.3,0.3-0.6,0.6-0.6h13.5c0.4,0,0.6,0.3,0.6,0.6v1c0,0.3-0.3,0.6-0.6,0.6h-11.5v8.3h9.8
+			c0.3,0,0.6,0.3,0.6,0.7v1c0,0.4-0.3,0.7-0.6,0.7h-9.8v8.7h11.5c0.4,0,0.6,0.3,0.6,0.6v1c0,0.3-0.3,0.6-0.6,0.6h-13.5
+			c-0.4,0-0.6-0.3-0.6-0.6V252.7z"/>
+	</g>
+	<g>
+		<g>
+			<path class="st0" d="M263.3,125.1c-0.1-0.2,0.1-0.4,0-0.6V89.8v-20v-0.8l-92.8,0c-4.3-2.1-6.3-8-3.6-12.7
+				c7-12.2,8.7-27.4-4.4-35.7c-10.6-6.7-25.1-2.4-31,9.3c-4.8,9.6-0.9,18.1,3.7,26.7c2.5,4.8,0.4,10.4-3.8,12.5l-51.2,0l0,0.8
+				l0,21.6l0,32.5c1.3,5.6,7.4,8.6,12.2,5.3c11.3-7.6,25.3-9.4,33,4.8c6.2,11.5,1.6,26.9-9.2,33.3c-8.9,5.2-16,1-24.1-3.7
+				c-5.3-3.1-10.8-0.7-11.9,5.4l0,53.9h73l12.4-23.3L145,102.5c-0.3-1.9,0.5-3.2,2.5-3.2h16.9c1.7,0,2.7,0.7,3,2.7l7.9,49.4h0.7
+				l9.3-49.4c0.3-1.9,1.4-2.7,3-2.7h6.8c1.7,0,2.9,0.8,3.2,2.7l9.5,49.4h0.7l7.8-49.4c0.3-2,1.4-2.7,3-2.7h17.1c2,0,2.9,1.4,2.4,3.2
+				l-20.6,97.2L205.6,223h57.7v-54.8c0.1-0.2-0.1-0.4,0-0.6V125.1z"/>
+			<polygon class="st0" points="192.6,142.1 191.7,142.1 182.7,199.6 170,223 188.9,223 201.4,199.6 			"/>
+		</g>
+		<g>
+			
+				<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-7883.2578" y1="-954.3221" x2="-7863.0332" y2="-930.6724" gradientTransform="matrix(0.3137 -0.9495 0.9495 0.3137 3633.155 -7112.0083)">
+				<stop  offset="0" style="stop-color:#EE9725"/>
+				<stop  offset="0.3123" style="stop-color:#EF9825"/>
+				<stop  offset="0.8383" style="stop-color:#E17324"/>
+			</linearGradient>
+			<path class="st2" d="M259.4,61.6c-2.1,1.6-5.3,5.7-9.1,11.7l5,7.2c2.4-4.4,4.8-8.4,7.4-11.9c0.2-0.3,0.3-0.4,0.3-0.4
+				c-0.1,0.1-0.2,0.3-0.3,0.4c-0.8,1.2-3.3,4.8-6.8,12c4.1-0.7,10.5-2.3,15.6-3.8c0.5-8.9-3-12.5-3-12.5S263.7,58.4,259.4,61.6z"/>
+			<path class="st3" d="M257.7,106.2C257.7,106.2,257.7,106.2,257.7,106.2l-0.5,0.1c0,0-0.1,0-0.1,0.1
+				C257.3,106.3,257.5,106.3,257.7,106.2z"/>
+			<path class="st3" d="M255.1,120.4c-0.3,0.1-0.7,0.2-1,0.3C254.5,120.7,254.8,120.6,255.1,120.4z"/>
+			<path class="st3" d="M230.6,154.6c0-0.1,0.1-0.2,0.1-0.4c0.6-2.5,1.2-4.9,1.8-7.2c0.7-2.6,1.4-5.2,2.1-7.6
+				c0.7-2.6,1.4-5.1,2.2-7.6c0.7-2.6,1.5-5,2.2-7.4c0.6-1.9,1.2-3.8,1.8-5.6c0.2-0.6,0.4-1.2,0.6-1.8c0.4-1.2,0.8-2.3,1.2-3.5
+				c0.4-1,0.7-2.1,1.1-3.1c0.1-0.3,0.2-0.7,0.3-1c0-0.1,0-0.1,0.1-0.2l-0.5,0.1l-0.5-0.7c0,0.1-0.1,0.2-0.1,0.2
+				c-0.5,1.5-1.1,3-1.6,4.5c-0.3,0.9-0.6,1.8-0.9,2.7c-0.8,2.5-1.7,4.9-2.4,7.4c-0.8,2.5-1.6,5.1-2.3,7.6c-0.7,2.5-1.5,5-2.2,7.4
+				c-0.7,2.5-1.4,4.9-2,7.4c-0.7,2.6-1.4,5.1-2,7.6c-0.1,0.6-0.3,1.1-0.4,1.7c-0.5,2-1,4-1.5,6l0.8,1.2l0.6-0.1c0-0.1,0-0.1,0-0.2
+				C229.3,159.6,230,157,230.6,154.6z"/>
+			<polygon class="st3" points="253.9,120.8 253.9,120.8 253.9,120.8 			"/>
+			<path class="st4" d="M253.3,127.7c-0.5,0.2-1,0.3-1.6,0.5c0,0,0,0,0,0c0.3-0.1,0.5-0.1,0.8-0.2
+				C252.8,127.8,253.1,127.8,253.3,127.7z"/>
+			<path class="st5" d="M253.3,127.7c-0.5,0.2-1,0.3-1.6,0.5c0,0,0,0,0,0c0.3-0.1,0.5-0.1,0.8-0.2
+				C252.8,127.8,253.1,127.8,253.3,127.7z"/>
+			<path class="st4" d="M253.9,120.8C253.9,120.8,253.9,120.8,253.9,120.8C253.9,120.8,253.9,120.8,253.9,120.8c0.1,0,0.2,0,0.2-0.1
+				c0.3-0.1,0.7-0.2,1-0.3C254.7,120.6,254.3,120.7,253.9,120.8L253.9,120.8L253.9,120.8z"/>
+			<path class="st5" d="M253.9,120.8C253.9,120.8,253.9,120.8,253.9,120.8C253.9,120.8,253.9,120.8,253.9,120.8c0.1,0,0.2,0,0.2-0.1
+				c0.3-0.1,0.7-0.2,1-0.3C254.7,120.6,254.3,120.7,253.9,120.8L253.9,120.8L253.9,120.8z"/>
+			
+				<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-8032.9434" y1="-956.9324" x2="-7888.6484" y2="-956.9324" gradientTransform="matrix(0.3137 -0.9495 0.9495 0.3137 3633.155 -7112.0083)">
+				<stop  offset="0.3233" style="stop-color:#9C1659"/>
+				<stop  offset="0.6302" style="stop-color:#C30E33"/>
+				<stop  offset="0.7514" style="stop-color:#C61031"/>
+				<stop  offset="1" style="stop-color:#E17324"/>
+			</linearGradient>
+			<path class="st6" d="M245.6,101.7c1-2.5,1.9-4.9,3-7.2c1-2.4,2.1-4.8,3.2-7.1c0.1-0.1,0.1-0.3,0.2-0.4c1.1-2.3,2.2-4.4,3.3-6.5
+				l-5-7.2c-0.3,0.4-0.5,0.8-0.8,1.2c-1,1.6-2,3.3-3.1,5.1c-1.2,2-2.4,4.2-3.6,6.5c-1.1,2.1-2.3,4.3-3.4,6.6c-1,1.9-1.9,3.9-2.9,5.9
+				c0,0.1-0.1,0.2-0.1,0.2l6.5,9.8C243.8,106.4,244.7,104,245.6,101.7z"/>
+			
+				<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-8015.5249" y1="-942.4599" x2="-7929.5396" y2="-942.4599" gradientTransform="matrix(0.3137 -0.9495 0.9495 0.3137 3633.155 -7112.0083)">
+				<stop  offset="0" style="stop-color:#142758"/>
+				<stop  offset="9.548390e-02" style="stop-color:#61287D"/>
+				<stop  offset="0.7882" style="stop-color:#9D155A"/>
+				<stop  offset="0.9487" style="stop-color:#C60E2E"/>
+			</linearGradient>
+			<path class="st7" d="M228.4,163.4c-0.5,2-0.9,4-1.4,6.1c0,0,0,0.1,0,0.1c-0.1,0.3-0.1,0.6-0.2,0.9c-0.3,1.4-0.6,2.7-1.2,5.5
+				c1.6,0.5,3.1,2.3,4.5,4.2c-0.4-2.2-1.5-4.1-3.5-5.5c7.7-0.6,14.1-3.3,16.9-9.3c0.2-0.5,0.5-1.1,0.7-1.7c-1.3,2.2-3.2,3.2-6.8,3.4
+				c0,0,0,0,0,0c0,0,0,0,0,0c5.1-3,7.5-5.6,9.4-9.7c0.5-1,0.9-2,1.3-3.2c-4.1,5.3-9.4,7.4-15.2,7l-4.2,1
+				C228.6,162.7,228.5,163.1,228.4,163.4z"/>
+			
+				<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-8024.8389" y1="-958.277" x2="-7880.5444" y2="-958.277" gradientTransform="matrix(0.3137 -0.9495 0.9495 0.3137 3633.155 -7112.0083)">
+				<stop  offset="0.3233" style="stop-color:#9C1659"/>
+				<stop  offset="0.6302" style="stop-color:#C30E33"/>
+				<stop  offset="0.7514" style="stop-color:#C61031"/>
+				<stop  offset="1" style="stop-color:#E17324"/>
+			</linearGradient>
+			<path class="st8" d="M229.3,153.6c0.6-2.5,1.3-5,2-7.6c0.7-2.4,1.3-4.9,2-7.4c0.7-2.5,1.4-5,2.2-7.4c0.8-2.5,1.5-5.1,2.3-7.6
+				c0.8-2.5,1.6-5,2.4-7.4c0.3-0.9,0.6-1.8,0.9-2.7c0.5-1.5,1.1-3,1.6-4.5c0-0.1,0.1-0.2,0.1-0.2l-6.5-9.8c-0.1,0.2-0.1,0.3-0.2,0.5
+				c-1,2.2-2,4.4-2.9,6.6c-1,2.3-1.9,4.6-2.8,6.9c-0.8,2-1.5,3.9-2.2,5.9c-0.1,0.4-0.3,0.8-0.4,1.2c-0.9,2.5-1.6,4.9-2.3,7.2
+				c-0.8,2.6-1.4,5.1-2,7.5c-0.4,1.6-0.7,3-1,4.5c-0.2,1.2-0.4,2.4-0.6,3.7c-0.5,2.9-0.8,5.7-1.1,8.5l6.5,9.9c0.5-2,1-3.9,1.5-6
+				C229,154.8,229.1,154.2,229.3,153.6z"/>
+			
+				<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-8014.3154" y1="-956.3248" x2="-7938.4844" y2="-956.3248" gradientTransform="matrix(0.3137 -0.9495 0.9495 0.3137 3633.155 -7112.0083)">
+				<stop  offset="0" style="stop-color:#142758"/>
+				<stop  offset="9.548390e-02" style="stop-color:#61287D"/>
+				<stop  offset="0.7882" style="stop-color:#9D155A"/>
+				<stop  offset="0.9487" style="stop-color:#C60E2E"/>
+			</linearGradient>
+			<path class="st9" d="M220.8,151.8c-0.3,3.4-0.4,6.8-0.2,10.2c0,0.1,0,0.2,0,0.4c-2-2.5-6.7-4.5-6.7-4.5c3.7,4.2,6.7,8.5,7.6,13
+				c-1.7,0.5-4.1,0.3-6.9-0.4c3.1,2.3,5.3,2.7,6.2,2.8c-2.6,0.5-5,2.6-7.5,4.9c3.8-2.1,6.9-3.1,9.2-2.8c-2.4,10.7-4.7,22.5-7,35
+				c1.1-0.5,1.7-1.3,1.9-2.4c0.4-2.3,3-17.1,7.6-36.7c0.1-0.6,0.3-1.1,0.4-1.7c0-0.2,0.1-0.3,0.1-0.5c0.5-2.1,1-4.2,1.5-6.3
+				c0.1-0.5,0.2-1,0.4-1.5c0,0,0,0,0,0l-6.5-9.9C220.8,151.5,220.8,151.7,220.8,151.8z"/>
+			
+				<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-8024.8389" y1="-943.343" x2="-7880.5444" y2="-943.343" gradientTransform="matrix(0.3137 -0.9495 0.9495 0.3137 3633.155 -7112.0083)">
+				<stop  offset="0.3233" style="stop-color:#9C1659"/>
+				<stop  offset="0.6302" style="stop-color:#C30E33"/>
+				<stop  offset="0.7514" style="stop-color:#C61031"/>
+				<stop  offset="1" style="stop-color:#E17324"/>
+			</linearGradient>
+			<path class="st10" d="M243.8,109.5c-0.1,0.3-0.2,0.7-0.3,1c-0.3,1-0.7,2-1.1,3.1c-0.4,1.1-0.8,2.3-1.2,3.5
+				c-0.2,0.6-0.4,1.2-0.6,1.8c-0.6,1.8-1.2,3.7-1.8,5.6c-0.7,2.4-1.5,4.8-2.2,7.4c-0.7,2.4-1.4,5-2.2,7.6c-0.7,2.5-1.4,5-2.1,7.6
+				c-0.6,2.3-1.2,4.7-1.8,7.2c0,0.1-0.1,0.2-0.1,0.4c-0.6,2.4-1.2,5-1.8,7.5c0,0.1,0,0.1,0,0.2l4.2-1c-0.1,0-0.2,0-0.3,0
+				c5-1.2,11.4-5.9,15.2-11.1c1.8-2.4,3.3-5.2,4.7-8.4c1-2.4,1.9-5,2.7-7.9c0.7-2.5,1.3-5.2,1.9-8.1c-1.1,0.8-2.4,1.4-3.8,1.9
+				c-0.3,0.1-0.5,0.2-0.8,0.2c-0.3,0.1-0.5,0.2-0.8,0.2l0,0l0,0c0,0,0,0,0,0c4.6-2.4,7.1-6.3,8.8-10.9c-1.2,1-3.1,2.4-5.4,3.2
+				c-0.3,0.1-0.7,0.2-1,0.3c-0.1,0-0.2,0-0.3,0.1l0,0l0,0c0,0,0,0,0,0c0,0,0,0,0,0l0,0c1.6-0.9,2.9-1.8,4-2.9
+				c0.2-0.2,0.5-0.5,0.7-0.7c0.3-0.4,0.6-0.7,0.9-1.1c0.2-0.3,0.4-0.5,0.5-0.8c0.4-0.6,0.8-1.3,1.1-2c0.1-0.2,0.2-0.4,0.3-0.7
+				c0.1-0.3,0.2-0.6,0.4-1c0.5-1.4,0.9-2.7,1.2-3.8c0.2-0.5,0.3-1.1,0.4-1.5c0-0.2,0.1-0.4,0.1-0.5c0.1-0.5,0.2-1,0.3-1.4
+				c0.1-0.6,0.1-1.1,0.1-1.4l0,0l0,0c-0.1,0.1-0.3,0.3-0.5,0.4c-1.3,1-3.7,2.1-5.7,2.7l3.9-0.9l-3.9,0.9c0,0-0.1,0-0.1,0
+				c-0.2,0.1-0.4,0.1-0.6,0.2c0,0,0.1,0,0.1-0.1l-13.3,3.1C243.9,109.4,243.9,109.5,243.8,109.5z"/>
+			
+				<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-8033.79" y1="-944.0846" x2="-7889.4951" y2="-944.0846" gradientTransform="matrix(0.3137 -0.9495 0.9495 0.3137 3633.155 -7112.0083)">
+				<stop  offset="0.3233" style="stop-color:#9C1659"/>
+				<stop  offset="0.6302" style="stop-color:#C30E33"/>
+				<stop  offset="0.7514" style="stop-color:#C61031"/>
+				<stop  offset="1" style="stop-color:#E17324"/>
+			</linearGradient>
+			<path class="st11" d="M255.8,80.6c-1,2-2,4.2-3.2,6.7c-0.1,0.1-0.1,0.3-0.2,0.4c-1,2.2-2,4.6-3.1,7.2c-0.9,2.3-1.9,4.7-2.8,7.3
+				c-0.9,2.3-1.7,4.7-2.6,7.2l13.3-3.1c3.7-2.3,5.3-4.1,6.7-6.7c0.4-0.7,0.7-1.4,1.1-2.2c1.1-2.3,2.2-4.8,3.1-7.3
+				c0.9-2.4,1.7-4.8,2.2-6.9c0.3-1.4,0.6-2.6,0.8-3.7c0.1-1,0.2-1.9,0.3-2.7C266.2,78.3,259.9,79.9,255.8,80.6z"/>
+			<path class="st4" d="M252.5,127.9c-0.3,0.1-0.5,0.2-0.8,0.2l0,0C252,128.1,252.3,128,252.5,127.9z"/>
+			<path class="st5" d="M252.5,127.9c-0.3,0.1-0.5,0.2-0.8,0.2l0,0C252,128.1,252.3,128,252.5,127.9z"/>
+			
+				<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-8024.8389" y1="-938.9014" x2="-7880.5444" y2="-938.9014" gradientTransform="matrix(0.3137 -0.9495 0.9495 0.3137 3633.155 -7112.0083)">
+				<stop  offset="0.3233" style="stop-color:#9C1659"/>
+				<stop  offset="0.6302" style="stop-color:#C30E33"/>
+				<stop  offset="0.7514" style="stop-color:#C61031"/>
+				<stop  offset="1" style="stop-color:#E17324"/>
+			</linearGradient>
+			<path class="st12" d="M252.5,127.9c-0.3,0.1-0.5,0.2-0.8,0.2l0,0C252,128.1,252.3,128,252.5,127.9z"/>
+			<path class="st4" d="M253.9,120.8c0.1,0,0.2,0,0.3-0.1C254,120.8,254,120.8,253.9,120.8L253.9,120.8z"/>
+			<path class="st5" d="M253.9,120.8c0.1,0,0.2,0,0.3-0.1C254,120.8,254,120.8,253.9,120.8L253.9,120.8z"/>
+			
+				<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="-8024.8389" y1="-939.4096" x2="-7880.5444" y2="-939.4096" gradientTransform="matrix(0.3137 -0.9495 0.9495 0.3137 3633.155 -7112.0083)">
+				<stop  offset="0.3233" style="stop-color:#9C1659"/>
+				<stop  offset="0.6302" style="stop-color:#C30E33"/>
+				<stop  offset="0.7514" style="stop-color:#C61031"/>
+				<stop  offset="1" style="stop-color:#E17324"/>
+			</linearGradient>
+			<path class="st13" d="M253.9,120.8c0.1,0,0.2,0,0.3-0.1C254,120.8,254,120.8,253.9,120.8L253.9,120.8z"/>
+			<polygon class="st4" points="253.9,120.8 253.9,120.8 253.9,120.8 253.9,120.8 253.9,120.8 			"/>
+			<polygon class="st5" points="253.9,120.8 253.9,120.8 253.9,120.8 253.9,120.8 253.9,120.8 			"/>
+			
+				<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="-7943.7764" y1="-939.5115" x2="-7911.8823" y2="-939.5115" gradientTransform="matrix(0.3137 -0.9495 0.9495 0.3137 3633.155 -7112.0083)">
+				<stop  offset="0.3233" style="stop-color:#9C1659"/>
+				<stop  offset="0.6302" style="stop-color:#C30E33"/>
+				<stop  offset="0.7514" style="stop-color:#C61031"/>
+				<stop  offset="1" style="stop-color:#E17324"/>
+			</linearGradient>
+			<polygon class="st14" points="253.9,120.8 253.9,120.8 253.9,120.8 253.9,120.8 253.9,120.8 			"/>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/wayang-docs/src/main/resources/assets/img/logo/logo_svg_letter.svg b/wayang-docs/src/main/resources/assets/img/logo/logo_svg_letter.svg
new file mode 100644
index 0000000..7118a8f
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/logo_svg_letter.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 352 405" style="enable-background:new 0 0 352 405;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FC8634;}
+	.st1{fill:#9D155A;}
+</style>
+<g>
+	<path class="st0" d="M40.6,372.9c-1.2,0-2-0.6-2.3-1.8l-14.7-69.3c-0.2-1.3,0.4-2.3,1.8-2.3h12c1.2,0,1.9,0.5,2.2,1.9l5.6,34.9h0.5
+		l6.6-34.9c0.2-1.3,1-1.9,2.2-1.9h4.8c1.2,0,2,0.6,2.3,1.9l6.7,34.9h0.5l5.5-34.9c0.2-1.4,1-1.9,2.2-1.9h12.1c1.4,0,2,1,1.7,2.3
+		l-14.7,69.3c-0.1,1.2-1,1.8-2.2,1.8H66c-1.2,0-1.9-0.6-2.2-1.9l-6.3-41.1h-0.6L50.1,371c-0.2,1.2-1.1,1.9-2.3,1.9H40.6z"/>
+	<path class="st0" d="M92.6,356.5V316c0-11.4,4.3-17.5,15.4-17.5c4.8,0,9.2,3.2,10.4,7.1h0.6v-3.9c0-1.3,0.7-2,2-2h11.1
+		c1.3,0,2,0.7,2,2V371c0,1.3-0.7,2-2,2H121c-1.3,0-2-0.7-2-2v-3.9h-0.6c-1.2,3.8-5.6,7.1-10.4,7.1C96.9,374,92.6,367.9,92.6,356.5z
+		 M118.6,357.1v-41.7c-0.7-2-2-4.1-5.3-4.1s-5,2-5,6.1v37.7c0,4.1,1.7,6.1,5,6.1C116.5,361.2,117.8,359.2,118.6,357.1z"/>
+	<path class="st0" d="M143.6,387.1c-1.2-0.1-1.8-1-1.8-2.2v-9.3c0-1.3,0.6-2.2,1.7-1.9c0.6,0.1,1.6,0.2,2.3,0.2
+		c4.3,0,6.1-0.7,6.7-3.7l0.2-1l-14.8-67.5c-0.2-1.3,0.4-2.3,1.8-2.3h12.6c1.2,0,2,0.6,2.2,1.9l6.8,48.4h0.5l5.7-48.3
+		c0.1-1.3,1-2,2.2-2h11.7c1.3,0,2,1,1.8,2.3L169.4,368c-3.5,15.9-9.2,19.5-21.2,19.5C146.7,387.5,145,387.3,143.6,387.1z"/>
+	<path class="st0" d="M185.5,356.5V316c0-11.4,4.3-17.5,15.4-17.5c4.8,0,9.2,3.2,10.4,7.1h0.6v-3.9c0-1.3,0.7-2,2-2H225
+		c1.3,0,2,0.7,2,2V371c0,1.3-0.7,2-2,2h-11c-1.3,0-2-0.7-2-2v-3.9h-0.6c-1.2,3.8-5.6,7.1-10.4,7.1
+		C189.9,374,185.5,367.9,185.5,356.5z M211.5,357.1v-41.7c-0.7-2-2-4.1-5.3-4.1s-5,2-5,6.1v37.7c0,4.1,1.7,6.1,5,6.1
+		S210.8,359.2,211.5,357.1z"/>
+	<path class="st0" d="M236.4,372.9c-1.3,0-2-0.7-2-2v-69.3c0-1.3,0.7-2,2-2h11.1c1.3,0,2,0.7,2,2v3.9h0.6c2.4-3.8,6.5-7.1,12-7.1
+		c12.4,0,13.8,7.4,13.8,19.6v52.8c0,1.3-0.7,2-2,2h-11.6c-1.3,0-2-0.7-2-2v-53c0-4.7-1.3-6.3-4.2-6.3c-2.6,0-4.7,1.2-6,4.2v55.1
+		c0,1.3-0.7,2-1.9,2h-11.8V372.9z"/>
+	<path class="st0" d="M323.7,317v27c0,6.5-2.3,11.5-6.8,14.6c3.3,1.3,6.7,5,6.7,11.5c0,11.4-7.3,17.5-20.8,17.5
+		c-16.3,0-20.8-8.9-20.8-18.8v-1c0-1.3,0.7-2,2-2h11.7c1.2,0,1.9,0.7,1.9,2v2c0,3.5,1.9,5.5,5.1,5.5c3.5,0,5.3-2.3,5.3-6.9
+		c0-5-2.3-5.9-4.9-5.9c-14,0-21.1-7.4-21.1-18.5v-27c0-10.2,4.3-18.5,20.9-18.5c3.2,0,6,0.4,8.3,1.1c1.9-0.5,3.5-3.3,3.5-11.7
+		c0-1.4,0.7-2.2,2-2.2h9.4c1.3,0,2.2,1.3,1.8,3.6c-1.2,8-5.5,11.4-9.7,13.6C322.4,306.3,323.7,311.4,323.7,317z M308,343.4v-25.7
+		c0-4.5-1.9-6.1-5.1-6.1c-3.3,0-5.1,1.6-5.1,6.1v25.7c0,4.4,1.8,6.1,5.1,6.1S308,347.8,308,343.4z"/>
+</g>
+<g>
+	<path class="st1" d="M26,275.1l10.4-23c0.1-0.2,0.3-0.4,0.6-0.4h0.3c0.3,0,0.5,0.2,0.6,0.4l10.3,23c0.2,0.4-0.1,0.9-0.6,0.9h-1.4
+		c-0.3,0-0.5-0.2-0.6-0.4l-2.5-5.6H31l-2.5,5.6c-0.1,0.2-0.3,0.4-0.6,0.4h-1.4C26.1,276,25.8,275.5,26,275.1z M42.3,267.8
+		c-1.7-3.7-3.3-7.5-5-11.2H37l-5,11.2H42.3z"/>
+	<path class="st1" d="M86,252.7c0-0.3,0.3-0.6,0.6-0.6h7.6c4.2,0,7.7,3.4,7.7,7.6c0,4.2-3.5,7.7-7.6,7.7h-5.6v8
+		c0,0.3-0.3,0.6-0.6,0.6h-1.3c-0.4,0-0.6-0.3-0.6-0.6v-22.7H86z M94,264.8c2.8,0,5.2-2.1,5.2-5.2c0-3-2.4-4.9-5.2-4.9h-5.4v10.1H94z
+		"/>
+	<path class="st1" d="M135.9,275.1l10.4-23c0.1-0.2,0.3-0.4,0.6-0.4h0.3c0.3,0,0.5,0.2,0.6,0.4l10.3,23c0.2,0.4-0.1,0.9-0.6,0.9
+		h-1.4c-0.3,0-0.5-0.2-0.6-0.4L153,270h-12.1l-2.5,5.6c-0.1,0.2-0.3,0.4-0.6,0.4h-1.4C135.9,276,135.7,275.5,135.9,275.1z
+		 M152.1,267.8c-1.7-3.7-3.3-7.5-5-11.2h-0.3l-5,11.2H152.1z"/>
+	<path class="st1" d="M206.3,251.7c3.5,0,6,1.2,8.3,3.2c0.3,0.3,0.3,0.7,0,1l-0.9,0.9c-0.3,0.3-0.5,0.3-0.9,0
+		c-1.8-1.5-4-2.6-6.5-2.6c-5.4,0-9.5,4.5-9.5,9.8s4.1,9.8,9.5,9.8c3,0,4.7-1,6.5-2.6c0.3-0.3,0.6-0.2,0.9,0l0.8,0.8
+		c0.3,0.2,0.2,0.7,0,0.9c-2.3,2.1-5.1,3.3-8.1,3.3c-6.8,0-12.3-5.4-12.3-12.3C193.9,257.2,199.4,251.7,206.3,251.7z"/>
+	<path class="st1" d="M253.8,252.7c0-0.3,0.3-0.6,0.6-0.6h1.3c0.4,0,0.6,0.3,0.6,0.6v10h13.9v-10c0-0.3,0.3-0.6,0.6-0.6h1.3
+		c0.3,0,0.6,0.3,0.6,0.6v22.6c0,0.3-0.3,0.6-0.6,0.6h-1.3c-0.4,0-0.6-0.3-0.6-0.6V265h-13.9v10.4c0,0.3-0.3,0.6-0.6,0.6h-1.3
+		c-0.3,0-0.6-0.3-0.6-0.6V252.7z"/>
+	<path class="st1" d="M313.7,252.7c0-0.3,0.3-0.6,0.6-0.6h13.5c0.4,0,0.6,0.3,0.6,0.6v1c0,0.3-0.3,0.6-0.6,0.6h-11.5v8.3h9.8
+		c0.3,0,0.6,0.3,0.6,0.7v1c0,0.4-0.3,0.7-0.6,0.7h-9.8v8.7h11.5c0.4,0,0.6,0.3,0.6,0.6v1c0,0.3-0.3,0.6-0.6,0.6h-13.5
+		c-0.4,0-0.6-0.3-0.6-0.6V252.7z"/>
+</g>
+</svg>
diff --git a/wayang-docs/src/main/resources/assets/img/logo/logo_svg_puzzle.svg b/wayang-docs/src/main/resources/assets/img/logo/logo_svg_puzzle.svg
new file mode 100644
index 0000000..a51ce86
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/logo/logo_svg_puzzle.svg
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 352 405" style="enable-background:new 0 0 352 405;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FC8634;}
+	.st1{fill:url(#SVGID_1_);}
+	.st2{fill:none;}
+	.st3{fill:#B9122B;}
+	.st4{opacity:0.35;fill:#B9122B;enable-background:new    ;}
+	.st5{fill:url(#SVGID_2_);}
+	.st6{fill:url(#SVGID_3_);}
+	.st7{fill:url(#SVGID_4_);}
+	.st8{fill:url(#SVGID_5_);}
+	.st9{fill:url(#SVGID_6_);}
+	.st10{fill:url(#SVGID_7_);}
+	.st11{fill:url(#SVGID_8_);}
+	.st12{fill:url(#SVGID_9_);}
+	.st13{fill:url(#SVGID_10_);}
+</style>
+<g>
+	<g>
+		<path class="st0" d="M263.3,125.1c-0.1-0.2,0.1-0.4,0-0.6V89.8v-20V69h-92.8c-4.3-2.1-6.3-8-3.6-12.7c7-12.2,8.7-27.4-4.4-35.7
+			c-10.6-6.7-25.1-2.4-31,9.3c-4.8,9.6-0.9,18.1,3.7,26.7c2.5,4.8,0.4,10.4-3.8,12.5H80.2v0.8v21.6V124c1.3,5.6,7.4,8.6,12.2,5.3
+			c11.3-7.6,25.3-9.4,33,4.8c6.2,11.5,1.6,26.9-9.2,33.3c-8.9,5.2-16,1-24.1-3.7c-5.3-3.1-10.8-0.7-11.9,5.4V223h73l12.4-23.3
+			L145,102.5c-0.3-1.9,0.5-3.2,2.5-3.2h16.9c1.7,0,2.7,0.7,3,2.7l7.9,49.4h0.7l9.3-49.4c0.3-1.9,1.4-2.7,3-2.7h6.8
+			c1.7,0,2.9,0.8,3.2,2.7l9.5,49.4h0.7l7.8-49.4c0.3-2,1.4-2.7,3-2.7h17.1c2,0,2.9,1.4,2.4,3.2l-20.6,97.2L205.6,223h57.7v-54.8
+			c0.1-0.2-0.1-0.4,0-0.6L263.3,125.1L263.3,125.1z"/>
+		<polygon class="st0" points="192.6,142.1 191.7,142.1 182.7,199.6 170,223 188.9,223 201.4,199.6 		"/>
+	</g>
+	<g>
+		
+			<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-8795.9004" y1="1191.6328" x2="-8775.6758" y2="1167.9832" gradientTransform="matrix(0.3137 -0.9495 -0.9495 -0.3137 4144.7788 -7904.1157)">
+			<stop  offset="0" style="stop-color:#EE9725"/>
+			<stop  offset="0.3123" style="stop-color:#EF9825"/>
+			<stop  offset="0.8383" style="stop-color:#E17324"/>
+		</linearGradient>
+		<path class="st1" d="M259.4,61.6c-2.1,1.6-5.3,5.7-9.1,11.7l5,7.2c2.4-4.4,4.8-8.4,7.4-11.9c0.2-0.3,0.3-0.4,0.3-0.4
+			c-0.1,0.1-0.2,0.3-0.3,0.4c-0.8,1.2-3.3,4.8-6.8,12c4.1-0.7,10.5-2.3,15.6-3.8c0.5-8.9-3-12.5-3-12.5S263.7,58.4,259.4,61.6z"/>
+		<path class="st2" d="M257.7,106.2L257.7,106.2l-0.5,0.1c0,0-0.1,0-0.1,0.1C257.3,106.3,257.5,106.3,257.7,106.2z"/>
+		<path class="st2" d="M255.1,120.4c-0.3,0.1-0.7,0.2-1,0.3C254.5,120.7,254.8,120.6,255.1,120.4z"/>
+		<path class="st2" d="M230.6,154.6c0-0.1,0.1-0.2,0.1-0.4c0.6-2.5,1.2-4.9,1.8-7.2c0.7-2.6,1.4-5.2,2.1-7.6
+			c0.7-2.6,1.4-5.1,2.2-7.6c0.7-2.6,1.5-5,2.2-7.4c0.6-1.9,1.2-3.8,1.8-5.6c0.2-0.6,0.4-1.2,0.6-1.8c0.4-1.2,0.8-2.3,1.2-3.5
+			c0.4-1,0.7-2.1,1.1-3.1c0.1-0.3,0.2-0.7,0.3-1c0-0.1,0-0.1,0.1-0.2l-0.5,0.1l-0.5-0.7c0,0.1-0.1,0.2-0.1,0.2
+			c-0.5,1.5-1.1,3-1.6,4.5c-0.3,0.9-0.6,1.8-0.9,2.7c-0.8,2.5-1.7,4.9-2.4,7.4c-0.8,2.5-1.6,5.1-2.3,7.6s-1.5,5-2.2,7.4
+			c-0.7,2.5-1.4,4.9-2,7.4c-0.7,2.6-1.4,5.1-2,7.6c-0.1,0.6-0.3,1.1-0.4,1.7c-0.5,2-1,4-1.5,6l0.8,1.2l0.6-0.1c0-0.1,0-0.1,0-0.2
+			C229.3,159.6,230,157,230.6,154.6z"/>
+		<path class="st2" d="M253.9,120.8L253.9,120.8L253.9,120.8z"/>
+		<path class="st3" d="M253.3,127.7c-0.5,0.2-1,0.3-1.6,0.5l0,0c0.3-0.1,0.5-0.1,0.8-0.2C252.8,127.8,253.1,127.8,253.3,127.7z"/>
+		<path class="st4" d="M253.3,127.7c-0.5,0.2-1,0.3-1.6,0.5l0,0c0.3-0.1,0.5-0.1,0.8-0.2C252.8,127.8,253.1,127.8,253.3,127.7z"/>
+		<path class="st3" d="M253.9,120.8L253.9,120.8L253.9,120.8c0.1,0,0.2,0,0.2-0.1c0.3-0.1,0.7-0.2,1-0.3
+			C254.7,120.6,254.3,120.7,253.9,120.8L253.9,120.8L253.9,120.8z"/>
+		<path class="st4" d="M253.9,120.8L253.9,120.8L253.9,120.8c0.1,0,0.2,0,0.2-0.1c0.3-0.1,0.7-0.2,1-0.3
+			C254.7,120.6,254.3,120.7,253.9,120.8L253.9,120.8L253.9,120.8z"/>
+		
+			<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-8945.584" y1="1194.4388" x2="-8801.2891" y2="1194.4388" gradientTransform="matrix(0.3137 -0.9495 -0.9495 -0.3137 4144.7788 -7904.1157)">
+			<stop  offset="0.3233" style="stop-color:#9C1659"/>
+			<stop  offset="0.6302" style="stop-color:#C30E33"/>
+			<stop  offset="0.7514" style="stop-color:#C61031"/>
+			<stop  offset="1" style="stop-color:#E17324"/>
+		</linearGradient>
+		<path class="st5" d="M245.6,101.7c1-2.5,1.9-4.9,3-7.2c1-2.4,2.1-4.8,3.2-7.1c0.1-0.1,0.1-0.3,0.2-0.4c1.1-2.3,2.2-4.4,3.3-6.5
+			l-5-7.2c-0.3,0.4-0.5,0.8-0.8,1.2c-1,1.6-2,3.3-3.1,5.1c-1.2,2-2.4,4.2-3.6,6.5c-1.1,2.1-2.3,4.3-3.4,6.6c-1,1.9-1.9,3.9-2.9,5.9
+			c0,0.1-0.1,0.2-0.1,0.2l6.5,9.8C243.8,106.4,244.7,104,245.6,101.7z"/>
+		
+			<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-8928.166" y1="1180.0078" x2="-8842.1807" y2="1180.0078" gradientTransform="matrix(0.3137 -0.9495 -0.9495 -0.3137 4144.7788 -7904.1157)">
+			<stop  offset="0" style="stop-color:#142758"/>
+			<stop  offset="9.548389e-02" style="stop-color:#61287D"/>
+			<stop  offset="0.7882" style="stop-color:#9D155A"/>
+			<stop  offset="0.9487" style="stop-color:#C60E2E"/>
+		</linearGradient>
+		<path class="st6" d="M228.4,163.4c-0.5,2-0.9,4-1.4,6.1v0.1c-0.1,0.3-0.1,0.6-0.2,0.9c-0.3,1.4-0.6,2.7-1.2,5.5
+			c1.6,0.5,3.1,2.3,4.5,4.2c-0.4-2.2-1.5-4.1-3.5-5.5c7.7-0.6,14.1-3.3,16.9-9.3c0.2-0.5,0.5-1.1,0.7-1.7c-1.3,2.2-3.2,3.2-6.8,3.4
+			l0,0l0,0c5.1-3,7.5-5.6,9.4-9.7c0.5-1,0.9-2,1.3-3.2c-4.1,5.3-9.4,7.4-15.2,7l-4.2,1C228.6,162.7,228.5,163.1,228.4,163.4z"/>
+		
+			<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-8937.4795" y1="1195.7976" x2="-8793.1855" y2="1195.7976" gradientTransform="matrix(0.3137 -0.9495 -0.9495 -0.3137 4144.7788 -7904.1157)">
+			<stop  offset="0.3233" style="stop-color:#9C1659"/>
+			<stop  offset="0.6302" style="stop-color:#C30E33"/>
+			<stop  offset="0.7514" style="stop-color:#C61031"/>
+			<stop  offset="1" style="stop-color:#E17324"/>
+		</linearGradient>
+		<path class="st7" d="M229.3,153.6c0.6-2.5,1.3-5,2-7.6c0.7-2.4,1.3-4.9,2-7.4s1.4-5,2.2-7.4c0.8-2.5,1.5-5.1,2.3-7.6
+			s1.6-5,2.4-7.4c0.3-0.9,0.6-1.8,0.9-2.7c0.5-1.5,1.1-3,1.6-4.5c0-0.1,0.1-0.2,0.1-0.2l-6.5-9.8c-0.1,0.2-0.1,0.3-0.2,0.5
+			c-1,2.2-2,4.4-2.9,6.6c-1,2.3-1.9,4.6-2.8,6.9c-0.8,2-1.5,3.9-2.2,5.9c-0.1,0.4-0.3,0.8-0.4,1.2c-0.9,2.5-1.6,4.9-2.3,7.2
+			c-0.8,2.6-1.4,5.1-2,7.5c-0.4,1.6-0.7,3-1,4.5c-0.2,1.2-0.4,2.4-0.6,3.7c-0.5,2.9-0.8,5.7-1.1,8.5l6.5,9.9c0.5-2,1-3.9,1.5-6
+			C229,154.8,229.1,154.2,229.3,153.6z"/>
+		
+			<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-8926.9561" y1="1193.8267" x2="-8851.125" y2="1193.8267" gradientTransform="matrix(0.3137 -0.9495 -0.9495 -0.3137 4144.7788 -7904.1157)">
+			<stop  offset="0" style="stop-color:#142758"/>
+			<stop  offset="9.548389e-02" style="stop-color:#61287D"/>
+			<stop  offset="0.7882" style="stop-color:#9D155A"/>
+			<stop  offset="0.9487" style="stop-color:#C60E2E"/>
+		</linearGradient>
+		<path class="st8" d="M220.8,151.8c-0.3,3.4-0.4,6.8-0.2,10.2c0,0.1,0,0.2,0,0.4c-2-2.5-6.7-4.5-6.7-4.5c3.7,4.2,6.7,8.5,7.6,13
+			c-1.7,0.5-4.1,0.3-6.9-0.4c3.1,2.3,5.3,2.7,6.2,2.8c-2.6,0.5-5,2.6-7.5,4.9c3.8-2.1,6.9-3.1,9.2-2.8c-2.4,10.7-4.7,22.5-7,35
+			c1.1-0.5,1.7-1.3,1.9-2.4c0.4-2.3,3-17.1,7.6-36.7c0.1-0.6,0.3-1.1,0.4-1.7c0-0.2,0.1-0.3,0.1-0.5c0.5-2.1,1-4.2,1.5-6.3
+			c0.1-0.5,0.2-1,0.4-1.5l0,0l-6.5-9.9C220.8,151.5,220.8,151.7,220.8,151.8z"/>
+		
+			<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-8937.4795" y1="1181.0153" x2="-8793.1855" y2="1181.0153" gradientTransform="matrix(0.3137 -0.9495 -0.9495 -0.3137 4144.7788 -7904.1157)">
+			<stop  offset="0.3233" style="stop-color:#9C1659"/>
+			<stop  offset="0.6302" style="stop-color:#C30E33"/>
+			<stop  offset="0.7514" style="stop-color:#C61031"/>
+			<stop  offset="1" style="stop-color:#E17324"/>
+		</linearGradient>
+		<path class="st9" d="M243.8,109.5c-0.1,0.3-0.2,0.7-0.3,1c-0.3,1-0.7,2-1.1,3.1c-0.4,1.1-0.8,2.3-1.2,3.5
+			c-0.2,0.6-0.4,1.2-0.6,1.8c-0.6,1.8-1.2,3.7-1.8,5.6c-0.7,2.4-1.5,4.8-2.2,7.4c-0.7,2.4-1.4,5-2.2,7.6c-0.7,2.5-1.4,5-2.1,7.6
+			c-0.6,2.3-1.2,4.7-1.8,7.2c0,0.1-0.1,0.2-0.1,0.4c-0.6,2.4-1.2,5-1.8,7.5c0,0.1,0,0.1,0,0.2l4.2-1c-0.1,0-0.2,0-0.3,0
+			c5-1.2,11.4-5.9,15.2-11.1c1.8-2.4,3.3-5.2,4.7-8.4c1-2.4,1.9-5,2.7-7.9c0.7-2.5,1.3-5.2,1.9-8.1c-1.1,0.8-2.4,1.4-3.8,1.9
+			c-0.3,0.1-0.5,0.2-0.8,0.2c-0.3,0.1-0.5,0.2-0.8,0.2l0,0l0,0l0,0c4.6-2.4,7.1-6.3,8.8-10.9c-1.2,1-3.1,2.4-5.4,3.2
+			c-0.3,0.1-0.7,0.2-1,0.3c-0.1,0-0.2,0-0.3,0.1l0,0l0,0l0,0l0,0l0,0c1.6-0.9,2.9-1.8,4-2.9c0.2-0.2,0.5-0.5,0.7-0.7
+			c0.3-0.4,0.6-0.7,0.9-1.1c0.2-0.3,0.4-0.5,0.5-0.8c0.4-0.6,0.8-1.3,1.1-2c0.1-0.2,0.2-0.4,0.3-0.7c0.1-0.3,0.2-0.6,0.4-1
+			c0.5-1.4,0.9-2.7,1.2-3.8c0.2-0.5,0.3-1.1,0.4-1.5c0-0.2,0.1-0.4,0.1-0.5c0.1-0.5,0.2-1,0.3-1.4c0.1-0.6,0.1-1.1,0.1-1.4l0,0l0,0
+			c-0.1,0.1-0.3,0.3-0.5,0.4c-1.3,1-3.7,2.1-5.7,2.7l3.9-0.9l-3.9,0.9h-0.1c-0.2,0.1-0.4,0.1-0.6,0.2c0,0,0.1,0,0.1-0.1l-13.3,3.1
+			C243.9,109.4,243.9,109.5,243.8,109.5z"/>
+		
+			<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-8946.4307" y1="1181.597" x2="-8802.1357" y2="1181.597" gradientTransform="matrix(0.3137 -0.9495 -0.9495 -0.3137 4144.7788 -7904.1157)">
+			<stop  offset="0.3233" style="stop-color:#9C1659"/>
+			<stop  offset="0.6302" style="stop-color:#C30E33"/>
+			<stop  offset="0.7514" style="stop-color:#C61031"/>
+			<stop  offset="1" style="stop-color:#E17324"/>
+		</linearGradient>
+		<path class="st10" d="M255.8,80.6c-1,2-2,4.2-3.2,6.7c-0.1,0.1-0.1,0.3-0.2,0.4c-1,2.2-2,4.6-3.1,7.2c-0.9,2.3-1.9,4.7-2.8,7.3
+			c-0.9,2.3-1.7,4.7-2.6,7.2l13.3-3.1c3.7-2.3,5.3-4.1,6.7-6.7c0.4-0.7,0.7-1.4,1.1-2.2c1.1-2.3,2.2-4.8,3.1-7.3
+			c0.9-2.4,1.7-4.8,2.2-6.9c0.3-1.4,0.6-2.6,0.8-3.7c0.1-1,0.2-1.9,0.3-2.7C266.2,78.3,259.9,79.9,255.8,80.6z"/>
+		<path class="st3" d="M252.5,127.9c-0.3,0.1-0.5,0.2-0.8,0.2l0,0C252,128.1,252.3,128,252.5,127.9z"/>
+		<path class="st4" d="M252.5,127.9c-0.3,0.1-0.5,0.2-0.8,0.2l0,0C252,128.1,252.3,128,252.5,127.9z"/>
+		
+			<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-8937.4795" y1="1176.4733" x2="-8793.1855" y2="1176.4733" gradientTransform="matrix(0.3137 -0.9495 -0.9495 -0.3137 4144.7788 -7904.1157)">
+			<stop  offset="0.3233" style="stop-color:#9C1659"/>
+			<stop  offset="0.6302" style="stop-color:#C30E33"/>
+			<stop  offset="0.7514" style="stop-color:#C61031"/>
+			<stop  offset="1" style="stop-color:#E17324"/>
+		</linearGradient>
+		<path class="st11" d="M252.5,127.9c-0.3,0.1-0.5,0.2-0.8,0.2l0,0C252,128.1,252.3,128,252.5,127.9z"/>
+		<path class="st3" d="M253.9,120.8c0.1,0,0.2,0,0.3-0.1C254,120.8,254,120.8,253.9,120.8L253.9,120.8z"/>
+		<path class="st4" d="M253.9,120.8c0.1,0,0.2,0,0.3-0.1C254,120.8,254,120.8,253.9,120.8L253.9,120.8z"/>
+		
+			<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="-8937.4795" y1="1176.8961" x2="-8793.1855" y2="1176.8961" gradientTransform="matrix(0.3137 -0.9495 -0.9495 -0.3137 4144.7788 -7904.1157)">
+			<stop  offset="0.3233" style="stop-color:#9C1659"/>
+			<stop  offset="0.6302" style="stop-color:#C30E33"/>
+			<stop  offset="0.7514" style="stop-color:#C61031"/>
+			<stop  offset="1" style="stop-color:#E17324"/>
+		</linearGradient>
+		<path class="st12" d="M253.9,120.8c0.1,0,0.2,0,0.3-0.1C254,120.8,254,120.8,253.9,120.8L253.9,120.8z"/>
+		<polygon class="st3" points="253.9,120.8 253.9,120.8 253.9,120.8 253.9,120.8 		"/>
+		<polygon class="st4" points="253.9,120.8 253.9,120.8 253.9,120.8 253.9,120.8 		"/>
+		
+			<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="-8840.5977" y1="1177.0228" x2="-8840.5977" y2="1177.0228" gradientTransform="matrix(0.3137 -0.9495 -0.9495 -0.3137 4144.7788 -7904.1157)">
+			<stop  offset="0.3233" style="stop-color:#9C1659"/>
+			<stop  offset="0.6302" style="stop-color:#C30E33"/>
+			<stop  offset="0.7514" style="stop-color:#C61031"/>
+			<stop  offset="1" style="stop-color:#E17324"/>
+		</linearGradient>
+		<polygon class="st13" points="253.9,120.8 253.9,120.8 253.9,120.8 253.9,120.8 		"/>
+	</g>
+</g>
+</svg>
diff --git a/wayang-docs/src/main/resources/assets/img/puzzle-piece-gray.png b/wayang-docs/src/main/resources/assets/img/puzzle-piece-gray.png
new file mode 100644
index 0000000..589ab43
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/puzzle-piece-gray.png
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/img/puzzle-piece.png b/wayang-docs/src/main/resources/assets/img/puzzle-piece.png
new file mode 100644
index 0000000..baf5e8f
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/puzzle-piece.png
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/img/puzzle-piece.svg b/wayang-docs/src/main/resources/assets/img/puzzle-piece.svg
new file mode 100644
index 0000000..832fab8
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/puzzle-piece.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 25.0.1, 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 576 512" style="enable-background:new 0 0 576 512;" xml:space="preserve">
+<style type="text/css">
+	.st0{opacity:0.7;fill:#BCBCBC;}
+</style>
+<path class="st0" d="M519.4,288.7c-41.5,0-59.5,31.6-82.1,31.6c-60,0-5.4-176.2-5.4-176.2s-196.3,80-196.3-3.3
+	c0-35.8,36.3-46.2,36.3-86C272,19.2,243.9,0,210.5,0c-34.7,0-66.4,18.9-66.4,56.3c0,41.4,31.7,59.3,31.7,81.8
+	C175.9,207.7,0,166.8,0,166.8V500c0,0,178.6,41,178.6-28.7c0-22.5-40-40.1-40-81.5c0-37.5,29.2-56.3,63.6-56.3
+	c33.7,0,61.8,19.2,61.8,54.7c0,39.7-36.3,50.2-36.3,86c0,60.8,129.7,25.7,181.2,25.7c0,0-34.7-120.1,25.8-120.1
+	c36,0,46.4,36.2,86.3,36.2c35.6,0,54.9-28,54.9-61.6C576,320.2,557,288.7,519.4,288.7z"/>
+</svg>
diff --git a/wayang-docs/src/main/resources/assets/img/wayang-banner.png b/wayang-docs/src/main/resources/assets/img/wayang-banner.png
new file mode 100644
index 0000000..df88bd1
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/img/wayang-banner.png
Binary files differ
diff --git a/wayang-docs/src/main/resources/assets/js/add_numbers.js b/wayang-docs/src/main/resources/assets/js/add_numbers.js
new file mode 100644
index 0000000..7569f46
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/js/add_numbers.js
@@ -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.
+ */
+
+(function() {
+    var pre = document.getElementsByTagName('pre'),
+        pl = pre.length;
+    for (var i = 0; i < pl; i++) {
+        pre[i].innerHTML = '<span class="line-number"></span>' + pre[i].innerHTML + '<span class="cl"></span>';
+        var num = pre[i].innerHTML.split(/\n/).length;
+        for (var j = 0; j < num-1; j++) {
+            var line_num = pre[i].getElementsByTagName('span')[0];
+            line_num.innerHTML += '<span>' + (j + 1) + '</span>';
+        }
+    }
+})();
diff --git a/wayang-docs/src/main/resources/assets/js/menu.js b/wayang-docs/src/main/resources/assets/js/menu.js
new file mode 100644
index 0000000..90595e5
--- /dev/null
+++ b/wayang-docs/src/main/resources/assets/js/menu.js
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+$(document).ready(function (){
+    var active_menu = $('#main-menu .active');
+    // open the parents element
+    active_menu.parents('div').collapse('show');
+    if(active_menu.hasClass('d-flex')){
+        active_menu.children('a').last().click();
+    }
+});
diff --git a/wayang-docs/src/main/resources/extending_wayang/adding_platform/Creating_compiler.md b/wayang-docs/src/main/resources/extending_wayang/adding_platform/Creating_compiler.md
new file mode 100644
index 0000000..b9dd61f
--- /dev/null
+++ b/wayang-docs/src/main/resources/extending_wayang/adding_platform/Creating_compiler.md
@@ -0,0 +1,34 @@
+---
+license: |
+    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.
+layout: default
+title: "Creating Compiler"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+menu:
+    platform:
+        weight: 5
+---
+
+Creating Compiler function
+
+
+
+
diff --git a/wayang-docs/src/main/resources/extending_wayang/adding_platform/creating_channel.md b/wayang-docs/src/main/resources/extending_wayang/adding_platform/creating_channel.md
new file mode 100644
index 0000000..e95d26a
--- /dev/null
+++ b/wayang-docs/src/main/resources/extending_wayang/adding_platform/creating_channel.md
@@ -0,0 +1,33 @@
+---
+license: |
+    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.
+layout: default
+title: "Creating a Channels"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+menu:
+    platform:
+        weight: 4
+---
+
+
+Creating Channel of the platforms
+
+
diff --git a/wayang-docs/src/main/resources/extending_wayang/adding_platform/creating_mapping.md b/wayang-docs/src/main/resources/extending_wayang/adding_platform/creating_mapping.md
new file mode 100644
index 0000000..2c3086c
--- /dev/null
+++ b/wayang-docs/src/main/resources/extending_wayang/adding_platform/creating_mapping.md
@@ -0,0 +1,39 @@
+---
+license: |
+    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.
+layout: default
+title: "Creating a Mapping"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+menu:
+    platform:
+        weight: 3
+---
+
+Creating a Mapping of the operator
+
+
+
+## Mapping 1 to 1
+
+
+## Mapping 1 to n
+
+
diff --git a/wayang-docs/src/main/resources/extending_wayang/adding_platform/creating_operator.md b/wayang-docs/src/main/resources/extending_wayang/adding_platform/creating_operator.md
new file mode 100644
index 0000000..d1a8bfa
--- /dev/null
+++ b/wayang-docs/src/main/resources/extending_wayang/adding_platform/creating_operator.md
@@ -0,0 +1,34 @@
+---
+license: |
+    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.
+layout: default
+title: "Creating an Operator"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+menu:
+    platform:
+        weight: 2
+---
+
+Creating an operator in a platform
+
+
+
+
diff --git a/wayang-docs/src/main/resources/extending_wayang/adding_platform/creating_plugin.md b/wayang-docs/src/main/resources/extending_wayang/adding_platform/creating_plugin.md
new file mode 100644
index 0000000..58b28a9
--- /dev/null
+++ b/wayang-docs/src/main/resources/extending_wayang/adding_platform/creating_plugin.md
@@ -0,0 +1,33 @@
+---
+license: |
+    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.
+layout: default
+title: "Creating plugin"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+menu:
+    platform:
+        weight: 1
+---
+
+Creating plugin of an platform
+
+
+
diff --git a/wayang-docs/src/main/resources/extending_wayang/adding_platform/index.md b/wayang-docs/src/main/resources/extending_wayang/adding_platform/index.md
new file mode 100644
index 0000000..dccccb4
--- /dev/null
+++ b/wayang-docs/src/main/resources/extending_wayang/adding_platform/index.md
@@ -0,0 +1,28 @@
+---
+license: |
+    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.
+layout: default
+title: "Adding Platfom to Wayang"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+---
+
+Adding platform to Wayang
+
diff --git a/wayang-docs/src/main/resources/extending_wayang/adding_platform/others.md b/wayang-docs/src/main/resources/extending_wayang/adding_platform/others.md
new file mode 100644
index 0000000..ace79d2
--- /dev/null
+++ b/wayang-docs/src/main/resources/extending_wayang/adding_platform/others.md
@@ -0,0 +1,34 @@
+---
+license: |
+    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.
+layout: default
+title: "Others considerations"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+menu:
+    platform:
+        weight: 7
+---
+
+Other considerations
+
+
+
+
diff --git a/wayang-docs/src/main/resources/extending_wayang/adding_platform/wrapping_udfs.md b/wayang-docs/src/main/resources/extending_wayang/adding_platform/wrapping_udfs.md
new file mode 100644
index 0000000..93a3b75
--- /dev/null
+++ b/wayang-docs/src/main/resources/extending_wayang/adding_platform/wrapping_udfs.md
@@ -0,0 +1,33 @@
+---
+license: |
+    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.
+layout: default
+title: "Wrapping UDF's"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+menu:
+    platform:
+        weight: 6
+---
+
+Wrapping UDF's
+
+
+
diff --git a/wayang-docs/src/main/resources/extending_wayang/index.md b/wayang-docs/src/main/resources/extending_wayang/index.md
new file mode 100644
index 0000000..fb8c154
--- /dev/null
+++ b/wayang-docs/src/main/resources/extending_wayang/index.md
@@ -0,0 +1,42 @@
+---
+license: |
+    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.
+layout: default
+title: "Extending Wayang"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+---
+
+Extending Wayang
+
+#Adding a Platform
+
+
+## Creating the Plugin
+## Creating an Operator
+## Creating the Mapping
+
+### Mapping 1 to 1
+### Mapping 1 to n
+
+
+## Creating Channel
+## Creating the Compiler function
+## Wrapping UDF's and Others
diff --git a/wayang-docs/src/main/resources/getting_start/how_build/build_step.md b/wayang-docs/src/main/resources/getting_start/how_build/build_step.md
new file mode 100644
index 0000000..e773d5c
--- /dev/null
+++ b/wayang-docs/src/main/resources/getting_start/how_build/build_step.md
@@ -0,0 +1,30 @@
+---
+license: |
+    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.
+layout: default
+title: "Step by Step Building Wayang"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+menus:
+    build:
+        weight: 1
+---
+
+Step by Step Building Wayang
diff --git a/wayang-docs/src/main/resources/getting_start/how_build/index.md b/wayang-docs/src/main/resources/getting_start/how_build/index.md
new file mode 100644
index 0000000..48e1194
--- /dev/null
+++ b/wayang-docs/src/main/resources/getting_start/how_build/index.md
@@ -0,0 +1,27 @@
+---
+license: |
+    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.
+layout: default
+title: "How to Build Wayang"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+---
+
+How to Build Wayang
diff --git a/wayang-docs/src/main/resources/getting_start/how_install/index.md b/wayang-docs/src/main/resources/getting_start/how_install/index.md
new file mode 100644
index 0000000..20cb008
--- /dev/null
+++ b/wayang-docs/src/main/resources/getting_start/how_install/index.md
@@ -0,0 +1,27 @@
+---
+license: |
+    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.
+layout: default
+title: "How to Install Wayang"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+---
+
+How to Install Wayang
diff --git a/wayang-docs/src/main/resources/getting_start/how_install/install_step.md b/wayang-docs/src/main/resources/getting_start/how_install/install_step.md
new file mode 100644
index 0000000..329a3ef
--- /dev/null
+++ b/wayang-docs/src/main/resources/getting_start/how_install/install_step.md
@@ -0,0 +1,30 @@
+---
+license: |
+    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.
+layout: default
+title: "Step by Step Building Wayang"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+menus:
+    install:
+        weight: 1
+---
+
+Step by Step Install Wayang
diff --git a/wayang-docs/src/main/resources/getting_start/how_run/index.md b/wayang-docs/src/main/resources/getting_start/how_run/index.md
new file mode 100644
index 0000000..3e9cd01
--- /dev/null
+++ b/wayang-docs/src/main/resources/getting_start/how_run/index.md
@@ -0,0 +1,27 @@
+---
+license: |
+    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.
+layout: default
+title: "How to Run Wayang"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+---
+
+How to Run Wayang
diff --git a/wayang-docs/src/main/resources/getting_start/how_run/run_step.md b/wayang-docs/src/main/resources/getting_start/how_run/run_step.md
new file mode 100644
index 0000000..81048c4
--- /dev/null
+++ b/wayang-docs/src/main/resources/getting_start/how_run/run_step.md
@@ -0,0 +1,30 @@
+---
+license: |
+    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.
+layout: default
+title: "Step by Step Run Wayang"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+menus:
+    run:
+        weight: 1
+---
+
+Step by Step run Wayang
diff --git a/wayang-docs/src/main/resources/getting_start/index.md b/wayang-docs/src/main/resources/getting_start/index.md
new file mode 100644
index 0000000..9f23d54
--- /dev/null
+++ b/wayang-docs/src/main/resources/getting_start/index.md
@@ -0,0 +1,27 @@
+---
+license: |
+    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.
+layout: default
+title: "Getting Started"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+---
+
+Getting Started with Wayang
diff --git a/wayang-docs/src/main/resources/getting_start/writting_wayang_plan/index.md b/wayang-docs/src/main/resources/getting_start/writting_wayang_plan/index.md
new file mode 100644
index 0000000..6346072
--- /dev/null
+++ b/wayang-docs/src/main/resources/getting_start/writting_wayang_plan/index.md
@@ -0,0 +1,27 @@
+---
+license: |
+    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.
+layout: default
+title: "Writting a Wayang Plan"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+---
+
+Writting a Wayang Plan
diff --git a/wayang-docs/src/main/resources/how_contribute/bugs_report.md b/wayang-docs/src/main/resources/how_contribute/bugs_report.md
new file mode 100644
index 0000000..32117ff
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/bugs_report.md
@@ -0,0 +1,50 @@
+---
+license: |
+    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.
+layout: default
+title: "Bugs Report"
+previous:
+    url: /how_contribute/
+    title: How to Contribute
+next:
+    url: /how_contribute/jira_issue_maintenance/
+    title: Jira Issue Maintenance
+menus:
+    contribute:
+        weight: 1
+---
+
+# Bug Reports
+
+## How to make a good Bug Report?
+
+Ideally, bug reports are accompanied by a proposed code change to fix the bug. This isn’t always possible, as those who **discover a bug may not have the experience to fix it, however, it needs to be reported**  by creating a [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues).
+
+Before to contiues reading take a look on how to [Create Issues](https://support.atlassian.com/jira-software-cloud/docs/create-an-issue-and-a-sub-task/)
+
+Have in mind that a bug reports are only useful when they include enough information to understand, isolate and ideally reproduce the bug. Simply encountering an error does not mean a bug should be reported; as below, search in [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues). Unreproducible bugs, or simple error reports, may be closed if is not possible to collect enough information.
+
+It’s very helpful if the bug report has a description about how the bug was found it, the version of Wayang where occurs and the platform that was be setted at that moment, so that reviewers can easily understand the bug. It also helps committers to narrow down the problem to the root cause, because **it can be bug of the underline platform,** but is important figure out.
+
+**Performance regression** is also one kind of bug. The pull request to fix a performance regression must provide a benchmark to prove the problem is indeed fixed.
+
+Note that, **data correctness/data loss bugs are very serious**. Make sure of labeling the bug as `correctness` or `data-loss`, when you create the [Jira Issue](https://issues.apache.org/jira/projects/WAYANG/issues). If the bug report doesn’t get enough attention, please send an email to `dev@wayang.apache.org`, to draw more attentions.
+
+It is possible to propose new features as well. These are generally not helpful unless accompanied by detail, such as a design document and/or code change. Large new contributions should consider to be part of `wayang-core` but first needs to be discussed on the [Slack Channel](https://the-asf.slack.com/archives/C01H1CPE8KU). Feature requests may be rejected, or closed after a long period of inactivity.
+
+### Label meaning
+
+TODO: add the label meaning
diff --git a/wayang-docs/src/main/resources/how_contribute/code_changes/choosing_what_contribute.md b/wayang-docs/src/main/resources/how_contribute/code_changes/choosing_what_contribute.md
new file mode 100644
index 0000000..29254aa
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/code_changes/choosing_what_contribute.md
@@ -0,0 +1,49 @@
+---
+license: |
+    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.
+layout: default
+title: "Choosing What to Contribute"
+previous:
+    url: /how_contribute/code_changes/
+    title: Code Changes
+next:
+    url: /how_contribute/code_changes/code_review_criteria/
+    title: Code Review Criteria
+menus:
+    code_changes:
+        weight: 1
+---
+
+# Choosing What to Contribute
+
+Wayang is a great project but currently we are searching for having more hand on the code. Review can take hours or days of committer time. Everyone benefits if contributors focus on changes that are useful, clear, easy to evaluate, and already pass basic checks.
+
+Sometimes, a contributor will already have a particular new change or bug in mind. If seeking ideas, consult the list of starter tasks in [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues), or ask the [email list@dev](mailto:dev@wayang.apache.org).
+
+Before proceeding, contributors should evaluate if the proposed change is likely to be relevant, new and actionable:
+
+* Is it clear that code must change? Proposing a [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues) and pull request is appropriate only when a clear problem or change has been identified. If simply having trouble using Wayang, use the [email list@dev](mailto:dev@wayang.apache.org)  first, rather than consider filing a [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues) or proposing a change. 
+  
+* Search on dev@wayang.apache.org for related discussions. Often, the problem has been discussed before, with a resolution that doesn’t require a code change, or recording what kinds of changes will not be accepted as a resolution.
+* Search [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues) for existing issues.
+  
+* Type `[search terms]` at the search box. If a logically similar issue already exists, then contribute to the discussion on the existing[Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues) and pull request first, instead of creating a new one.
+* Is the scope of the change matched to the contributor’s level of experience? Anyone is qualified to suggest a typo fix, but refactoring core scheduling logic requires much more understanding of Wayang. Some changes require building up experience first.
+
+<div class="alert alert-info" role="alert">
+It’s worth reemphasizing that changes to the core of Wayang, or to highly complex and important modules, are more difficult to make correctly. They will be subjected to more scrutiny, and held to a higher standard of review than changes to less critical code. As result of this, is important to be pacient in the coordination with Wayang Community to be sure that everything can works well after the change.
+</div>
+
diff --git a/wayang-docs/src/main/resources/how_contribute/code_changes/code_review_criteria.md b/wayang-docs/src/main/resources/how_contribute/code_changes/code_review_criteria.md
new file mode 100644
index 0000000..2798eaa
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/code_changes/code_review_criteria.md
@@ -0,0 +1,54 @@
+---
+license: |
+    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.
+layout: default
+title: "Code Review Criteria"
+previous:
+    url: /how_contribute/code_changes/choosing_what_contribute/
+    title: Choosing What to Contribute
+next:
+    url: /how_contribute/code_changes/preparing_contribute_code_changes/
+    title: Preparing to Contribute Code Changes
+menus:
+    code_changes:
+        weight: 2
+---
+# Code Review Criteria
+
+Before considering how to contribute code, it’s useful to understand how code is reviewed, and why changes may be rejected. See the [detailed guide for code reviewers](https://google.github.io/eng-practices/review/) from Google’s Engineering Practices documentation. Simply put, changes that have many or large positives, and few negative effects or risks, are much more likely to be merged, and merged quickly. Risky and less valuable changes are very unlikely to be merged, and may be rejected outright rather than receive iterations of review.
+
+**Positives**
+
+* Fixes the root cause of a bug in existing functionality
+* Adds functionality or fixes a problem needed by a large number of users
+* Simple, targeted
+* Maintains or improves consistency across Python, Java, Scala
+* Easily tested; has tests
+* Reduces complexity and lines of code
+* Change has already been discussed and is known to committers
+* Contribute in the test coverage of the code
+
+**Negatives, Risks**
+
+* Band-aids a symptom of a bug only
+* Introduces complex new functionality, especially an API that needs to be supported
+* Adds complexity that only helps a niche use case, may be can generate a library then be part of the core.
+* Changes a public API or semantics \(rarely allowed\)
+* Adds large dependencies
+* Changes versions of existing dependencies, if is not mandatory or for security reasons.
+* Adds a large amount of code
+* Makes lots of modifications in one “big bang” change, but can be considere in a new version.
+
diff --git a/wayang-docs/src/main/resources/how_contribute/code_changes/index.md b/wayang-docs/src/main/resources/how_contribute/code_changes/index.md
new file mode 100644
index 0000000..984122f
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/code_changes/index.md
@@ -0,0 +1,29 @@
+---
+license: |
+    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.
+layout: default
+title: "Code Changes"
+previous:
+    url: /how_contribute/documentation_changes/
+    title: Documentation Changes
+next:
+    url: /how_contribute/code_changes/choosing_what_contribute/
+    title: Choosing What to Contribute
+---
+
+# Code Changes
+
+Apache Wayang is an open source system, and we try to everyone can contribute on it, so feel free to contribute but please read our process to make your life easy 😉. If you have any doubt please write on our [email list@dev](mailto:dev@wayang.apache.org).
diff --git a/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/closing_pull_request.md b/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/closing_pull_request.md
new file mode 100644
index 0000000..7ff4d57
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/closing_pull_request.md
@@ -0,0 +1,32 @@
+---
+license: |
+    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.
+layout: default
+title: "Closing Your Pull Request and Github Issues"
+previous:
+    url: /how_contribute/code_changes/preparing_contribute_code_changes/pull_request/
+    title: Pull Request
+next:
+    url: /how_contribute/code_changes/preparing_contribute_code_changes/review_process/
+    title: The Review Process
+menus:
+    preparing_code_changes:
+        weight: 3
+---
+
+# Closing Your Pull Request and Github Issues
+
+TODO: add this
diff --git a/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/code_style_guide.md b/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/code_style_guide.md
new file mode 100644
index 0000000..9951965
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/code_style_guide.md
@@ -0,0 +1,31 @@
+---
+license: |
+    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.
+layout: default
+title: "Code Style Guide"
+previous:
+    url: /how_contribute/code_changes/preparing_contribute_code_changes/review_process/
+    title: The Review Process
+next:
+    url: /how_contribute/reviewing_changes/
+    title: Reviewing Changes
+menus:
+    preparing_code_changes:
+        weight: 5
+---
+
+# Code Style Guide
+TODO: add this
diff --git a/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/index.md b/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/index.md
new file mode 100644
index 0000000..05fcb03
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/index.md
@@ -0,0 +1,45 @@
+---
+license: |
+    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.
+layout: default
+title: "Preparing to Contribute Code Changes"
+previous:
+    url: /how_contribute/code_changes/code_review_criteria/
+    title: Code Review Criteria
+next:
+    url: /how_contribute/code_changes/preparing_contribute_code_changes/jira_issue/
+    title: Jira issues
+---
+# Preparing to Contribute Code Changes
+
+Please review the preceding section before proposing a code change. This section documents how to do so.
+
+<div class="alert alert-success" role="alert">
+<h2> Important </h2>
+<hr>
+<strong>When you contribute code, you affirm that the contribution is your original work and that you license the work to the project under the project’s open source license. Whether or not you state this explicitly, by submitting any copyrighted material via pull request, email, or other means you agree to license the material under the project’s open source license and warrant that you have the legal authority to do so.</strong>
+</div>
+
+### Cloning the Wayang Source Code
+
+If you are interested in working with the newest under-development code or contributing to Wayang development, you can check out the master branch from Git:
+
+```text
+# Master development branch
+git clone https://github.com/apache/incubator-wayang
+```
+
+Once you’ve downloaded Wayang, you can find instructions for [installing]({% link getting_start/how_install/index.md %}) and [building]({% link getting_start/how_build/index.md %}) it on the [Wayang documentation](https://wayang.apache.org/docs/latest/).
diff --git a/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/jira_issue.md b/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/jira_issue.md
new file mode 100644
index 0000000..c9f3ae1
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/jira_issue.md
@@ -0,0 +1,62 @@
+---
+license: |
+    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.
+layout: default
+title: "Jira issues"
+previous:
+    url: /how_contribute/code_changes/preparing_contribute_code_changes/
+    title: Preparing to Contribute Code Changes
+next:
+    url: /how_contribute/code_changes/preparing_contribute_code_changes/pull_request/
+    title: Pull Request
+menus:
+    preparing_code_changes:
+        weight: 1
+---
+
+# Jira issues
+
+Currently, Wayang uses [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues) to track logical issues, including bugs and improvements, and uses GitHub pull requests to manage the review and merge of specific code changes. That is, [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues) are used to describe _what_ should be fixed or changed, and high-level approaches, and pull requests describe _how_ to implement that change in the project’s source code. For example, major design decisions are discussed in [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues).
+
+1. Find the existing [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues) that the change pertains to.
+    1. Do not create a new [Jira Issue](https://issues.apache.org/jira/projects/WAYANG/issues) if creating a change to address an existing issue in [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues); add to the existing discussion and work instead
+    2. Look for existing pull requests that are linked from the [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues), to understand if someone is already working on the [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues).
+2. If the change is new, then it usually needs a new [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues). However, trivial changes, where the what should change is virtually the same as the how it should change do not require a [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues).     Example: `Fix typos in Foo scaladoc`
+3. If required, create a new [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues):
+    1. Provide a descriptive Title. “Update web UI” or “Problem in scheduler” is not sufficient. “Kafka Streaming support fails to handle empty queue in YARN cluster mode” is good.
+    2. Write a detailed Description. For bug reports, this should ideally include a short reproduction of the problem. For new features, it may include a design document.
+    3. Set required fields:
+        1. **Issue Type**. Generally, Bug, Improvement and New Feature are the only types used in Wayang, look more [here]({% link how_contribute/jira_issue_maintenance.md %}).
+        2. **Priority**. Set to Major or below; higher priorities are generally reserved for committers to set. The main exception is correctness or data-loss issues, which can be flagged as Blockers.  Their meaning is roughly:
+            1. Blocker: pointless to release without this change as the release would be unusable to a large minority of users. Correctness and data loss issues should be considered Blockers for their target versions.
+            2. Critical: a large minority of users are missing important functionality without this, and/or a workaround is difficult.
+            3. Major: a small minority of users are missing important functionality without this, and there is a workaround
+            4. Minor: a niche use case is missing some support, but it does not affect usage or is easily worked around
+            5. Trivial: a nice-to-have change but unlikely to be any problem in practice otherwise
+        3. **Component**
+        4. **Affects Version**. For Bugs, assign at least one version that is known to exhibit the problem or need the change
+        5. **Label**. Not widely used, except for the following:
+            * `correctness`: a correctness issue
+            * `data-loss`: a data loss issue
+            * `release-notes`: the change’s effects need mention in release notes. The [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues) or pull request should include detail suitable for inclusion in release notes – see “Docs Text” below.
+            * `starter`: small, simple change suitable for new contributors
+        6. **Docs Text**: For issues that require an entry in the release notes, this should contain the information that the release manager should include in Release Notes. This should include a short summary of what behavior is impacted, and detail on what behavior changed. It can be provisionally filled out when the [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues) is opened, but will likely need to be updated with final details when the issue is resolved.
+    4. Do not set the following fields:
+        1. **Fix Version**. This is assigned by committers only when resolved.
+        2. **Target Version**. This is assigned by committers to indicate a PR has been accepted for possible fix by the target version.
+    5. Do not include a patch file; pull requests are used to propose the actual change.
+4. If the change is a large change, consider inviting discussion on the issue at [email list\#dev](mailto:dev@wayang.apache.org) first before proceeding to implement the change.
+
diff --git a/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/pull_request.md b/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/pull_request.md
new file mode 100644
index 0000000..37f4b5d
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/pull_request.md
@@ -0,0 +1,32 @@
+---
+license: |
+    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.
+layout: default
+title: "Pull Request"
+previous:
+    url: /how_contribute/code_changes/preparing_contribute_code_changes/jira_issue/
+    title: Jira issues
+next:
+    url: /how_contribute/code_changes/preparing_contribute_code_changes/closing_pull_request/
+    title: Closing Your Pull Request and Github Issues
+menus:
+    preparing_code_changes:
+        weight: 2
+---
+
+# Pull Request
+
+TODO: add this
diff --git a/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/review_process.md b/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/review_process.md
new file mode 100644
index 0000000..f941293
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/code_changes/preparing_contribute_code_changes/review_process.md
@@ -0,0 +1,33 @@
+---
+license: |
+    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.
+layout: default
+title: "The Review Process"
+previous:
+    url: /how_contribute/code_changes/preparing_contribute_code_changes/closing_pull_request/
+    title: Closing Your Pull Request and Github Issues
+next:
+    url: /how_contribute/code_changes/preparing_contribute_code_changes/code_style_guide/
+    title: Code Style Guide
+menus:
+    preparing_code_changes:
+        weight: 4
+---
+
+# The Review Process
+
+TODO: add this
+
diff --git a/wayang-docs/src/main/resources/how_contribute/documentation_changes.md b/wayang-docs/src/main/resources/how_contribute/documentation_changes.md
new file mode 100644
index 0000000..0656758
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/documentation_changes.md
@@ -0,0 +1,35 @@
+---
+license: |
+    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.
+layout: default
+title: "Documentation Changes"
+previous:
+    url: /how_contribute/jira_issue_maintenance/
+    title: Jira Issue Maintenance
+next:
+    url: /how_contribute/code_changes/
+    title: Code Changes
+menus: contribute
+menus:
+    contribute:
+        weight: 3
+---
+
+# Documentation Changes
+
+To propose a change to _release_ documentation \(that is, docs that appear on [Wayang documentation](https://wayang.apache.org/docs)\), edit the Markdown source files in the repository  [incubator-wayang/wayang-docs](https://github.com/apache/incubator-wayang/tree/main/wayang-docs), the documentation is write usign jekyll, because of this reason maybe you will found some weird code in the markdown files. The process to propose a doc change is otherwise the same as the process for proposing [code changes](code-changes/preparing_contribute_code_changes/).
+
+If you want to make bigger contribution, please send a email to `dev@wayang.apache.org`, to give you more information how to do it.
diff --git a/wayang-docs/src/main/resources/how_contribute/helping_users.md b/wayang-docs/src/main/resources/how_contribute/helping_users.md
new file mode 100644
index 0000000..b7adfb8
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/helping_users.md
@@ -0,0 +1,38 @@
+---
+license: |
+    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.
+layout: default
+title: "Helping Other Users"
+previous:
+    url: /how_contribute/user_libraries_wayang/
+    title: User Libraries to Wayang
+next:
+    url: /how_contribute/slack_channels/
+    title: Slack Channels
+menus:
+    contribute:
+        weight: 9
+---
+
+# Helping Other Users
+
+A great way to contribute to Wayang is to help answer user questions on the StackOverflow. There are always many new Wayang users; taking a few minutes to help answer a question is a very valuable community service.
+
+Contributors should subscribe to email list (`dev@wayang.apache.org`) and follow it in order to keep up to date on what’s happening in Wayang. Answering questions is an excellent and visible way to help the community, which also demonstrates your expertise.
+
+See the Guide for guidelines about how to effectively participate in discussions on the mailing list, as well as forums like StackOverflow.
+
+
diff --git a/wayang-docs/src/main/resources/how_contribute/index.md b/wayang-docs/src/main/resources/how_contribute/index.md
new file mode 100644
index 0000000..b4c227b
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/index.md
@@ -0,0 +1,24 @@
+---
+license: |
+    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.
+layout: default
+title: "How to Contribute"
+next:
+    url: /how_contribute/bugs_report/
+    title: Bugs Report
+---
+
+How to Contribute
diff --git a/wayang-docs/src/main/resources/how_contribute/jira_issue_maintenance.md b/wayang-docs/src/main/resources/how_contribute/jira_issue_maintenance.md
new file mode 100644
index 0000000..fda271f
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/jira_issue_maintenance.md
@@ -0,0 +1,56 @@
+---
+license: |
+    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.
+layout: default
+title: "Jira Issue Maintenance"
+previous:
+    url: /how_contribute/bugs_report/
+    title: Bugs Report
+next:
+    url: /how_contribute/documentation_changes/
+    title: Documentation Changes
+menus:
+    contribute:
+        weight: 2
+---
+# Jira Issue Maintenance
+
+Given the sheer volume of issues raised in the [Jira Issues](https://issues.apache.org/jira/projects/WAYANG/issues), inevitably some issues are duplicates, or become obsolete and eventually fixed otherwise, or can’t be reproduced, or could benefit from more detail, and so on. It’s useful to help identify these issues and resolve them, either by advancing the discussion or even resolving the [Issues](https://issues.apache.org/jira/projects/WAYANG/issues). Most contributors are able to directly resolve [Issues](https://issues.apache.org/jira/projects/WAYANG/issues). Use judgment in determining whether you are quite confident the issue should be resolved, although changes can be easily undone. If in doubt, just leave a comment on the [Issues](https://issues.apache.org/jira/projects/WAYANG/issues).
+
+When resolving [Issue](https://issues.apache.org/jira/projects/WAYANG/issues), observe a few useful conventions:
+
+* Resolve as **Fixed** if there’s a change you can point to that resolved the issue
+    * Set Fix Version\(s\), if and only if the resolution is Fixed
+    * Set Assignee to the person who most contributed to the resolution, which is usually the person who opened the PR that resolved the issue.
+    * In case several people contributed, prefer to assign to the more ‘junior’, non-committer contributor
+* For issues that can’t be reproduced against master as reported, resolve as **Cannot Reproduce**
+    * Fixed is reasonable too, if it’s clear what other previous pull request resolved it. Link to it.
+* If the issue is the same as or a subset of another issue, resolved as **Duplicate**
+    * Make sure to link to the [Issue](https://issues.apache.org/jira/projects/WAYANG/issues) it duplicates
+    * Prefer to resolve the issue that has less activity or discussion as the duplicate
+* If the issue seems clearly obsolete and applies to issues or components that have changed radically since it was opened, resolve as **Not a Problem**
+* If the issue doesn’t make sense – not actionable, for example, a non-Wayang issue, resolve as **Invalid,** but if produce by an underline platform please link the report on the underline platform
+* If it’s a coherent issue, but there is a clear indication that there is not support or interest in acting on it, then resolve as **Won’t Fix,** and explain the "why" we will not fix it**.**
+* Umbrellas are frequently marked **Done** if they are just container issues that don’t correspond to an actionable change of their own
+
+## Types of Label of the Issues
+
+TODO: complete this part
+* Bug:
+* Feature Request:
+* Suggestion: 
+
+
diff --git a/wayang-docs/src/main/resources/how_contribute/reviewing_changes.md b/wayang-docs/src/main/resources/how_contribute/reviewing_changes.md
new file mode 100644
index 0000000..9b2e07a
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/reviewing_changes.md
@@ -0,0 +1,34 @@
+---
+license: |
+    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.
+layout: default
+title: "Reviewing Changes"
+previous:
+    url: /how_contribute/code_changes/preparing_contribute_code_changes/code_style_guide/
+    title: Code Style Guide
+next:
+    url: /how_contribute/testing_releases/
+    title: Testing Releases
+menus:
+    contribute:
+        weight: 6
+---
+
+# Reviewing Changes
+
+Changes to Wayang source code are proposed, reviewed and committed via [GitHub pull request](https://github.com/apache/incubator-wayang/pulls) \([described here 🔗 ](/how_contribute/code_changes/preparing_contribute_code_changes/pull_request/)\). Anyone can view and comment on active changes here. Reviewing others’ changes is a good way to learn how the change process works and gain exposure to activity in various parts of the code. You can help by reviewing the changes and asking questions or pointing out issues – as simple as typos or small issues of style.
+
+
diff --git a/wayang-docs/src/main/resources/how_contribute/slack_channels.md b/wayang-docs/src/main/resources/how_contribute/slack_channels.md
new file mode 100644
index 0000000..8af8fb8
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/slack_channels.md
@@ -0,0 +1,31 @@
+---
+license: |
+    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.
+layout: default
+title: "Slack Channels"
+previous:
+    url: /how_contribute/helping_users/
+    title: Helping Other Users
+menus:
+    contribute:
+        weight: 10
+---
+
+# Slack Channels
+
+TODO: analyse if is necessary to do it
+
+
diff --git a/wayang-docs/src/main/resources/how_contribute/testing_releases.md b/wayang-docs/src/main/resources/how_contribute/testing_releases.md
new file mode 100644
index 0000000..70c86ed
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/testing_releases.md
@@ -0,0 +1,33 @@
+---
+license: |
+    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.
+layout: default
+title: "Testing Releases"
+previous:
+    url: /how_contribute/reviewing_changes/
+    title: Reviewing Changes
+next:
+    url: /how_contribute/user_libraries_wayang/
+    title: User Libraries to Wayang
+menus:
+    contribute:
+        weight: 7
+---
+
+# Testing Releases
+
+Wayang’s release process is community-oriented, and members of the community can vote on new releases on the [email list@dev](mailto:dev@wayang.apache.org). Wayang users are invited to subscribe to the email list \#Dev to receive announcements, and test their workloads on newer release and provide feedback on any performance or correctness issues found in the newer release.
+
diff --git a/wayang-docs/src/main/resources/how_contribute/user_libraries_wayang.md b/wayang-docs/src/main/resources/how_contribute/user_libraries_wayang.md
new file mode 100644
index 0000000..0ec64a3
--- /dev/null
+++ b/wayang-docs/src/main/resources/how_contribute/user_libraries_wayang.md
@@ -0,0 +1,32 @@
+---
+license: |
+    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.
+layout: default
+title: "User Libraries to Wayang"
+previous:
+    url: /how_contribute/testing_releases/
+    title: Testing Releases
+next:
+    url: /how_contribute/helping_users/
+    title: Helping Other Users
+menus:
+    contribute:
+        weight: 8
+---
+
+# User Libraries to Wayang
+
+TODO: add this
diff --git a/wayang-docs/src/main/resources/index.md b/wayang-docs/src/main/resources/index.md
new file mode 100644
index 0000000..0d50a4e
--- /dev/null
+++ b/wayang-docs/src/main/resources/index.md
@@ -0,0 +1,401 @@
+---
+license: |
+    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.
+layout: default
+title: "Read Me"
+menus: header
+previous: 
+    url: /
+    title: previous
+next: 
+    url: /
+    title: next
+menus:
+    header:
+        weight: 0
+---
+
+# Apache Wayang <img align="right" style="margin-top: -0.5em;" width="170px" src="https://wayang.apache.org/assets/img/logo/logo_400x160.png" alt="Wayang logo">
+
+[![Build Status (Travis)](https://travis-ci.org/wayang-ecosystem/wayang.svg?branch=master)](https://travis-ci.org/wayang-ecosystem/wayang)
+[![Gitter chat](https://badges.gitter.im/wayang-ecosystem/Lobby.png)](https://gitter.im/wayang-ecosystem/Lobby)
+[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.apache.wayang/wayang/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.apache.wayang/wayang)
+
+#### Turning a shadows into a show
+
+
+Apache Wayang in contrast to classical data processing systems that provide one dedicated execution engine, Apache Wayang rather is a *meta processing framework*: You can specify your data processing app via one of Wayang's API and then Wayang will pick an optimal configuration of classical processing frameworks, such as Java Streams or Apache Spark, to run your app on. Finally, Wayang will also perform the execution, thereby hiding the different specific platform APIs and coordinate inter-platform communication.
+
+This approach aims at freeing data engineers and software developers from the burden of knowing the zoo of different data processing systems, their APIs, strengths and weakness; the intricacies of coordinating and integrating different processing platforms; and the inflexibility when tying to a fix set of processing platforms. As of now, Wayang has built in support for the following processing platforms:
+- Java 8 Streams
+- [Apache Spark](https://spark.apache.org/)
+- [GraphChi](https://github.com/GraphChi/graphchi-java)
+- [Postgres](http://www.postgresql.org)
+- [SQLite](https://www.sqlite.org/)
+
+## How to use Wayang
+
+**Requirements.**
+Apache Wayang is built with Java 8 and Scala 2.11. However, to execute Wayang it is sufficient to have Java 8 installed. If you want to build Wayang yourself, you will also need to have [Apache Maven](http://maven.apache.org) installed. Please also consider that processing platforms employed by Wayang might have further requirements.
+
+**Get Wayang.**
+Wayang is available via Maven Central. To use it with Maven, for instance, include the following into you POM file:
+```xml
+<dependency> 
+  <groupId>org.apache.wayang</groupId>
+  <artifactId>wayang-***</artifactId>
+  <version>0.3.0</version> 
+</dependency>
+```
+Note the `***`: Wayang ships with multiple modules that can be included in your app, depending on how you want to use it:
+* `wayang-core`: provides core data structures and the optimizer (required)
+* `wayang-basic`: provides common operators and data types for your apps (recommended)
+* `wayang-api`: provides an easy-to-use Scala and Java API to assemble Wayang plans (recommended)
+* `wayang-java`, `wayang-spark`, `wayang-graphchi`, `wayang-sqlite3`, `wayang-postgres`: adapters for the various supported processing platforms
+* `wayang-profiler`: provides functionality to learn operator and UDF cost functions from historical execution data
+
+For the sake of version flexibility, you still have to include your Hadoop (`hadoop-hdfs` and `hadoop-common`) and Spark (`spark-core` and `spark-graphx`) version of choice.
+
+In addition, you can obtain the most recent snapshot version of Wayang via Sonatype's snapshot repository. Just included
+```xml
+<repositories>
+  <repository>
+    <id>sonatype-snapshots</id>
+    <name>Sonatype Snapshot Repository</name>
+    <url>https://oss.sonatype.org/content/repositories/snapshots</url>
+  </repository>
+<repositories>
+```
+
+If you need to rebuild Wayang, e.g., to use a different Scala version, you can simply do so via Maven:
+
+1. Adapt the version variables (e.g., `spark.version`) in the main `pom.xml` file.
+2. Build Wayang with the adapted versions.
+   ```shell
+   $ mvn clean install
+   ```
+   Note the `standalone` profile to fix Hadoop and Spark versions, so that Wayang apps do not explicitly need to declare the corresponding dependencies.
+   Also, note the `distro` profile, which assembles a binary Wayang distribution.
+   To activate these profiles, you need to specify them when running maven, i.e.,
+    ```shell
+    mvn clean install -P<profile name>
+    ```
+
+**Configure Wayang.** In order for Wayang to work properly, it is necessary to tell Wayang about the capacities of your processing platforms and how to reach them. While there is a default configuration that allows to test Wayang right away, we recommend to create a properties file to adapt the configuration where necessary. To have Wayang use that configuration transparently, just run you app via
+```shell
+$ java -Dwayang.configuration=url://to/my/wayang.properties ...
+```
+
+You can find the most relevant settings in the following:
+* General settings
+    * `wayang.core.log.enabled (= true)`: whether to log execution statistics to allow learning better cardinality and cost estimators for the optimizer
+    * `wayang.core.log.executions (= ~/.wayang/executions.json)` where to log execution times of operator groups
+    * `wayang.core.log.cardinalities (= ~/.wayang/cardinalities.json)` where to log cardinality measurements
+    * `wayang.core.optimizer.instrumentation (= org.apache.wayang.core.profiling.OutboundInstrumentationStrategy)`: where to measure cardinalities in Wayang plans; other options are `org.apache.wayang.core.profiling.NoInstrumentationStrategy` and `org.apache.wayang.core.profiling.FullInstrumentationStrategy`
+    * `wayang.core.optimizer.reoptimize (= false)`: whether to progressively optimize Wayang plans
+    * `wayang.basic.tempdir (= file:///tmp)`: where to store temporary files, in particular for inter-platform communication
+* Java Streams
+    * `wayang.java.cpu.mhz (= 2700)`: clock frequency of processor the JVM runs on in MHz
+    * `wayang.java.hdfs.ms-per-mb (= 2.7)`: average throughput from HDFS to JVM in ms/MB
+* Apache Spark
+    * `spark.master (= local)`: Spark master
+        * various other Spark settings are supported, e.g., `spark.executor.memory`, `spark.serializer`, ...
+    * `wayang.spark.cpu.mhz (= 2700)`: clock frequency of processor the Spark workers run on in MHz
+    * `wayang.spark.hdfs.ms-per-mb (= 2.7)`: average throughput from HDFS to the Spark workers in ms/MB
+    * `wayang.spark.network.ms-per-mb (= 8.6)`: average network throughput of the Spark workers in ms/MB
+    * `wayang.spark.init.ms (= 4500)`: time it takes Spark to initialize in ms
+* GraphChi
+    * `wayang.graphchi.cpu.mhz (= 2700)`: clock frequency of processor GraphChi runs on in MHz
+    * `wayang.graphchi.cpu.cores (= 2)`: number of cores GraphChi runs on
+    * `wayang.graphchi.hdfs.ms-per-mb (= 2.7)`: average throughput from HDFS to GraphChi in ms/MB
+* SQLite
+    * `wayang.sqlite3.jdbc.url`: JDBC URL to use SQLite
+    * `wayang.sqlite3.jdbc.user`: optional user name
+    * `wayang.sqlite3.jdbc.password`: optional password
+    * `wayang.sqlite3.cpu.mhz (= 2700)`: clock frequency of processor SQLite runs on in MHz
+    * `wayang.sqlite3.cpu.cores (= 2)`: number of cores SQLite runs on
+* PostgreSQL
+    * `wayang.postgres.jdbc.url`: JDBC URL to use PostgreSQL
+    * `wayang.postgres.jdbc.user`: optional user name
+    * `wayang.postgres.jdbc.password`: optional password
+    * `wayang.postgres.cpu.mhz (= 2700)`: clock frequency of processor PostgreSQL runs on in MHz
+    * `wayang.postgres.cpu.cores (= 2)`: number of cores PostgreSQL runs on
+
+**Code with Wayang.** The recommended way to specify your apps with Wayang is via its Scala or Java API from the `wayang-api` module. You can find examples below.
+
+**Learn cost functions.**
+Wayang provides a utility to learn cost functions from historical execution data.
+Specifically, Wayang can learn configurations for load profile estimators (that estimate CPU load, disk load etc.) for both operators and UDFs, as long as the configuration provides a template for those estimators.
+As an example, the `JavaMapOperator` draws its load profile estimator configuration via the configuration key `wayang.java.map.load`.
+Now, it is possible to specify a load profile estimator template in the configuration under the key `<original key>.template`, e.g.:
+```xml
+wayang.java.map.load.template = {\
+  "in":1, "out":1,\
+  "cpu":"?*in0"\
+}
+```
+This template specifies a load profile estimator that expects (at least) one input cardinality and one output cardinality.
+Further, it models a CPU load that is proportional to the input cardinality.
+However, more complex functions are possible.
+In particular, you can use
+* the variables `in0`, `in1`, ... and `out0`, `out1`, ... to incorporate the input and output cardinalities, respectively;
+* operator properties, such as `numIterations` for the `PageRankOperator` implementations;
+* the operators `+`, `-`, `*`, `/`, `%`, `^`, and parantheses;
+* the functions `min(x0, x1, ...))`, `max(x0, x1, ...)`, `abs(x)`, `log(x, base)`, `ln(x)`, `ld(x)`;
+* and the constants `e` and `pi`.
+
+While Wayang specifies templates for all execution operators, you will need to specify that your UDFs are modelled by some configuration-based cost function (see the k-means example below) and create the according initial specification and template yourself.
+Once, you gathered execution data, you can run
+```shell
+java ... org.apache.wayang.profiler.ga.GeneticOptimizerApp [configuration URL [execution log]]
+```
+This app will try to find appropriate values for the question marks (`?`) in the load profile estimator templates to fit the gathered execution data and ready-made configuration entries for the load profile estimators.
+You can then copy them into your configuration.
+
+## Examples
+
+For some executable examples, have a look at [this repository](https://github.com/sekruse/rheem-examples).
+
+### WordCount
+
+The "Hello World!" of data processing systems is the wordcount.
+
+#### Java API
+```java
+import org.apache.wayang.api.JavaPlanBuilder;
+import org.apache.wayang.basic.data.Tuple2;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.WayangContext;
+import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityEstimator;
+import org.apache.wayang.java.Java;
+import org.apache.wayang.spark.Spark;
+import java.util.Collection;
+import java.util.Arrays;
+
+public class WordcountJava {
+
+    public static void main(String[] args){
+
+        // Settings
+        String inputUrl = "file:/tmp.txt";
+
+        // Get a plan builder.
+        WayangContext wayangContext = new WayangContext(new Configuration())
+                .withPlugin(Java.basicPlugin())
+                .withPlugin(Spark.basicPlugin());
+        JavaPlanBuilder planBuilder = new JavaPlanBuilder(wayangContext)
+                .withJobName(String.format("WordCount (%s)", inputUrl))
+                .withUdfJarOf(WordcountJava.class);
+
+        // Start building the WayangPlan.
+        Collection<Tuple2<String, Integer>> wordcounts = planBuilder
+                // Read the text file.
+                .readTextFile(inputUrl).withName("Load file")
+
+                // Split each line by non-word characters.
+                .flatMap(line -> Arrays.asList(line.split("\\W+")))
+                .withSelectivity(10, 100, 0.9)
+                .withName("Split words")
+
+                // Filter empty tokens.
+                .filter(token -> !token.isEmpty())
+                .withSelectivity(0.99, 0.99, 0.99)
+                .withName("Filter empty words")
+
+                // Attach counter to each word.
+                .map(word -> new Tuple2<>(word.toLowerCase(), 1)).withName("To lower case, add counter")
+
+                // Sum up counters for every word.
+                .reduceByKey(
+                        Tuple2::getField0,
+                        (t1, t2) -> new Tuple2<>(t1.getField0(), t1.getField1() + t2.getField1())
+                )
+                .withCardinalityEstimator(new DefaultCardinalityEstimator(0.9, 1, false, in -> Math.round(0.01 * in[0])))
+                .withName("Add counters")
+
+                // Execute the plan and collect the results.
+                .collect();
+
+        System.out.println(wordcounts);
+    }
+}
+```
+
+#### Scala API
+
+```scala
+import org.apache.wayang.api._
+import org.apache.wayang.core.api.{Configuration, WayangContext}
+import org.apache.wayang.java.Java
+import org.apache.wayang.spark.Spark
+
+object WordcountScala {
+  def main(args: Array[String]) {
+
+    // Settings
+    val inputUrl = "file:/tmp.txt"
+
+    // Get a plan builder.
+    val wayangContext = new WayangContext(new Configuration)
+      .withPlugin(Java.basicPlugin)
+      .withPlugin(Spark.basicPlugin)
+    val planBuilder = new PlanBuilder(wayangContext)
+      .withJobName(s"WordCount ($inputUrl)")
+      .withUdfJarsOf(this.getClass)
+
+    val wordcounts = planBuilder
+      // Read the text file.
+      .readTextFile(inputUrl).withName("Load file")
+
+      // Split each line by non-word characters.
+      .flatMap(_.split("\\W+"), selectivity = 10).withName("Split words")
+
+      // Filter empty tokens.
+      .filter(_.nonEmpty, selectivity = 0.99).withName("Filter empty words")
+
+      // Attach counter to each word.
+      .map(word => (word.toLowerCase, 1)).withName("To lower case, add counter")
+
+      // Sum up counters for every word.
+      .reduceByKey(_._1, (c1, c2) => (c1._1, c1._2 + c2._2)).withName("Add counters")
+      .withCardinalityEstimator((in: Long) => math.round(in * 0.01))
+
+      // Execute the plan and collect the results.
+      .collect()
+
+    println(wordcounts)
+  }
+}
+```
+
+### k-means
+
+Wayang is also capable of iterative processing, which is, e.g., very important for machine learning algorithms, such as k-means.
+
+#### Scala API
+
+```scala
+import org.apache.wayang.api._
+import org.apache.wayang.core.api.{Configuration, WayangContext}
+import org.apache.wayang.core.function.FunctionDescriptor.ExtendedSerializableFunction
+import org.apache.wayang.core.function.ExecutionContext
+import org.apache.wayang.core.optimizer.costs.LoadProfileEstimators
+import org.apache.wayang.java.Java
+import org.apache.wayang.spark.Spark
+
+import scala.util.Random
+import scala.collection.JavaConversions._
+
+object kmeans {
+  def main(args: Array[String]) {
+
+    // Settings
+    val inputUrl = "file:/kmeans.txt"
+    val k = 5
+    val iterations = 100
+    val configuration = new Configuration
+
+    // Get a plan builder.
+    val wayangContext = new WayangContext(new Configuration)
+      .withPlugin(Java.basicPlugin)
+      .withPlugin(Spark.basicPlugin)
+    val planBuilder = new PlanBuilder(wayangContext)
+      .withJobName(s"k-means ($inputUrl, k=$k, $iterations iterations)")
+      .withUdfJarsOf(this.getClass)
+
+    case class Point(x: Double, y: Double)
+    case class TaggedPoint(x: Double, y: Double, cluster: Int)
+    case class TaggedPointCounter(x: Double, y: Double, cluster: Int, count: Long) {
+      def add_points(that: TaggedPointCounter) = TaggedPointCounter(this.x + that.x, this.y + that.y, this.cluster, this.count + that.count)
+      def average = TaggedPointCounter(x / count, y / count, cluster, 0)
+    }
+
+    // Read and parse the input file(s).
+    val points = planBuilder
+      .readTextFile(inputUrl).withName("Read file")
+      .map { line =>
+        val fields = line.split(",")
+        Point(fields(0).toDouble, fields(1).toDouble)
+      }.withName("Create points")
+
+
+    // Create initial centroids.
+    val random = new Random
+    val initialCentroids = planBuilder
+      .loadCollection(for (i <- 1 to k) yield TaggedPointCounter(random.nextGaussian(), random.nextGaussian(), i, 0)).withName("Load random centroids")
+
+    // Declare UDF to select centroid for each data point.
+    class SelectNearestCentroid extends ExtendedSerializableFunction[Point, TaggedPointCounter] {
+
+      /** Keeps the broadcasted centroids. */
+      var centroids: Iterable[TaggedPointCounter] = _
+
+      override def open(executionCtx: ExecutionContext) = {
+        centroids = executionCtx.getBroadcast[TaggedPointCounter]("centroids")
+      }
+
+      override def apply(point: Point): TaggedPointCounter = {
+        var minDistance = Double.PositiveInfinity
+        var nearestCentroidId = -1
+        for (centroid <- centroids) {
+          val distance = Math.pow(Math.pow(point.x - centroid.x, 2) + Math.pow(point.y - centroid.y, 2), 0.5)
+          if (distance < minDistance) {
+            minDistance = distance
+            nearestCentroidId = centroid.cluster
+          }
+        }
+        new TaggedPointCounter(point.x, point.y, nearestCentroidId, 1)
+      }
+    }
+
+    // Do the k-means loop.
+    val finalCentroids = initialCentroids.repeat(iterations, { currentCentroids =>
+      points
+        .mapJava(new SelectNearestCentroid,
+          udfLoad = LoadProfileEstimators.createFromSpecification(
+            "my.udf.costfunction.key", configuration
+          ))
+        .withBroadcast(currentCentroids, "centroids").withName("Find nearest centroid")
+        .reduceByKey(_.cluster, _.add_points(_)).withName("Add up points")
+        .withCardinalityEstimator(k)
+        .map(_.average).withName("Average points")
+    }).withName("Loop")
+
+      // Collect the results.
+      .collect()
+
+    println(finalCentroids)
+  }
+}
+```
+
+## License
+
+All files in this repository are licensed under the Apache Software License 2.0
+
+Copyright 2020 Apache (incubating) Wayang Team
+
+Licensed 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.
diff --git a/wayang-docs/src/main/resources/using_wayang/api_java_scala/index.md b/wayang-docs/src/main/resources/using_wayang/api_java_scala/index.md
new file mode 100644
index 0000000..ae60fe7
--- /dev/null
+++ b/wayang-docs/src/main/resources/using_wayang/api_java_scala/index.md
@@ -0,0 +1,31 @@
+---
+license: |
+    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.
+layout: default
+title: "API Java/Scala"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+---
+
+API Java/Scala
+
+# Configuration 
+
+# Examples
diff --git a/wayang-docs/src/main/resources/using_wayang/api_python/index.md b/wayang-docs/src/main/resources/using_wayang/api_python/index.md
new file mode 100644
index 0000000..1ded742
--- /dev/null
+++ b/wayang-docs/src/main/resources/using_wayang/api_python/index.md
@@ -0,0 +1,32 @@
+---
+license: |
+    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.
+layout: default
+title: "API Python"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+---
+
+API Python
+
+# Configuration
+
+# Examples
+
diff --git a/wayang-docs/src/main/resources/using_wayang/api_rest/index.md b/wayang-docs/src/main/resources/using_wayang/api_rest/index.md
new file mode 100644
index 0000000..8a64b7b
--- /dev/null
+++ b/wayang-docs/src/main/resources/using_wayang/api_rest/index.md
@@ -0,0 +1,32 @@
+---
+license: |
+    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.
+layout: default
+title: "API REST"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+---
+
+API REST
+
+# Configuration
+
+# Examples
+
diff --git a/wayang-docs/src/main/resources/using_wayang/api_sql/index.md b/wayang-docs/src/main/resources/using_wayang/api_sql/index.md
new file mode 100644
index 0000000..e7f27ae
--- /dev/null
+++ b/wayang-docs/src/main/resources/using_wayang/api_sql/index.md
@@ -0,0 +1,34 @@
+---
+license: |
+    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.
+layout: default
+title: "API SQL"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+---
+
+API SQL
+
+[comment]: <> (TODO:// remove the comments on the _data/menus.yml to active this)
+
+
+# Configuration
+
+# Examples
diff --git a/wayang-docs/src/main/resources/using_wayang/cost_model_calibration.md b/wayang-docs/src/main/resources/using_wayang/cost_model_calibration.md
new file mode 100644
index 0000000..9e68950
--- /dev/null
+++ b/wayang-docs/src/main/resources/using_wayang/cost_model_calibration.md
@@ -0,0 +1,33 @@
+---
+license: |
+    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.
+layout: default
+title: "Cost Model Calibration"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+menu:
+    using:
+        weight: 100
+---
+
+Cost Model Calibration
+
+
+
diff --git a/wayang-docs/src/main/resources/using_wayang/index.md b/wayang-docs/src/main/resources/using_wayang/index.md
new file mode 100644
index 0000000..1693bb7
--- /dev/null
+++ b/wayang-docs/src/main/resources/using_wayang/index.md
@@ -0,0 +1,27 @@
+---
+license: |
+    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.
+layout: default
+title: "Using Wayang"
+previous:
+    url: /
+    title: previous
+next:
+    url: /
+    title: next
+---
+
+Using Wayang
diff --git a/wayang-docs/src/main/resources/what_is_wayang/concepts_wayang.md b/wayang-docs/src/main/resources/what_is_wayang/concepts_wayang.md
new file mode 100644
index 0000000..1e14e08
--- /dev/null
+++ b/wayang-docs/src/main/resources/what_is_wayang/concepts_wayang.md
@@ -0,0 +1,27 @@
+---
+license: |
+    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.
+layout: default
+title: "Concepts"
+menus:
+    what_wayang:
+        weight: 1
+next:
+    url: /
+    title: 
+---
+
+Concepts of Wayang
diff --git a/wayang-docs/src/main/resources/what_is_wayang/index.md b/wayang-docs/src/main/resources/what_is_wayang/index.md
new file mode 100644
index 0000000..0af4a43
--- /dev/null
+++ b/wayang-docs/src/main/resources/what_is_wayang/index.md
@@ -0,0 +1,24 @@
+---
+license: |
+    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.
+layout: default
+title: "What is Wayang?"
+next:
+    url: /
+    title: 
+---
+
+What is Wayang?
