You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by yu...@apache.org on 2023/02/10 02:46:44 UTC

[incubator-devlake-website] branch main updated: Add discoverability to Config UI docs and remove useless setup guides (#426)

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

yumeng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake-website.git


The following commit(s) were added to refs/heads/main by this push:
     new a70441c657 Add discoverability to Config UI docs and remove useless setup guides (#426)
a70441c657 is described below

commit a70441c6572a45af6de2fa8cdf09acf2a5adf584
Author: Louis.z <lo...@gmail.com>
AuthorDate: Fri Feb 10 10:46:39 2023 +0800

    Add discoverability to Config UI docs and remove useless setup guides (#426)
    
    * fix: remove useless setup guides
    
    * fix: remove user manual directory
    
    * fix: update tutorial link in v0.14
    
    ---------
    
    Co-authored-by: Startrekzky <ka...@merico.dev>
---
 .../Configuration}/AdvancedMode.md                 |  4 +-
 .../ConfigUI => docs/Configuration}/BitBucket.md   |  2 +-
 .../Dashboards/AccessControl.md                    |  0
 .../Dashboards/GrafanaUserGuide.md                 |  0
 docs/Configuration/Dashboards/_category_.json      |  4 +
 .../ConfigUI => Configuration}/GitHub.md           |  2 +-
 .../ConfigUI => Configuration}/GitLab.md           |  2 +-
 .../ConfigUI => docs/Configuration}/Jenkins.md     |  3 +-
 .../ConfigUI => Configuration}/Jira.md             |  2 +-
 .../ConfigUI => docs/Configuration}/Tapd.md        |  2 +-
 .../TeamConfiguration.md                           |  0
 .../ConfigUI => Configuration}/Tutorial.md         |  0
 .../ConfigUI => docs/Configuration}/Zentao.md      |  2 +-
 .../Configuration}/_category_.json                 |  4 +-
 .../ConfigUI => Configuration}/webhook.md          |  2 +-
 .../version-v0.15/UserManuals => docs}/DORA.md     | 10 +--
 docs/DeveloperManuals/DeveloperSetup.md            |  4 +-
 docs/GettingStarted/DockerComposeSetup.md          |  4 +-
 docs/GettingStarted/KubernetesSetup.md             | 62 ---------------
 docs/GettingStarted/RainbondSetup.md               | 39 ---------
 docs/GettingStarted/TemporalSetup.md               | 40 ----------
 docs/Overview/Introduction.md                      |  2 +-
 docs/Overview/SupportedDataSources.md              |  2 +-
 docs/Plugins/bitbucket.md                          |  4 +-
 docs/Plugins/github.md                             |  4 +-
 docs/Plugins/gitlab.md                             |  4 +-
 docs/Plugins/jenkins.md                            |  4 +-
 docs/Plugins/jira.md                               |  4 +-
 docs/Plugins/refdiff.md                            |  2 +-
 docs/Plugins/tapd.md                               |  4 +-
 docs/Plugins/webhook.md                            |  4 +-
 docs/Plugins/zentao.md                             |  4 +-
 docs/Troubleshooting/Configuration.md              |  2 +-
 docs/UserManuals/ConfigUI/_category_.json          |  4 -
 docs/UserManuals/Dashboards/_category_.json        |  4 -
 livedemo/EngineeringLeads/DORA.md                  |  2 +-
 src/components/Sections/HeaderLearnMore.tsx        |  2 +-
 src/components/Sections/UserFlow.tsx               |  4 +-
 .../version-v0.14/GettingStarted/RainbondSetup.md  |  2 +-
 versioned_docs/version-v0.14/Troubleshooting.md    |  2 +-
 .../version-v0.15/Configuration}/AdvancedMode.md   |  4 +-
 .../version-v0.15/Configuration}/BitBucket.md      |  2 +-
 .../Dashboards/AccessControl.md                    |  0
 .../Dashboards/GrafanaUserGuide.md                 |  0
 .../Configuration/Dashboards/_category_.json       |  4 +
 .../ConfigUI => Configuration}/GitHub.md           |  5 +-
 .../ConfigUI => Configuration}/GitLab.md           |  2 +-
 .../version-v0.15/Configuration}/Jenkins.md        |  2 +-
 .../ConfigUI => Configuration}/Jira.md             |  2 +-
 .../version-v0.15/Configuration}/Tapd.md           |  2 +-
 .../TeamConfiguration.md                           |  0
 .../version-v0.15/Configuration}/Tutorial.md       |  0
 .../version-v0.15/Configuration}/Zentao.md         |  2 +-
 .../version-v0.15/Configuration}/_category_.json   |  4 +-
 .../ConfigUI => Configuration}/webhook.md          |  2 +-
 .../version-v0.15}/DORA.md                         | 10 +--
 .../DataModels/DevLakeDomainLayerSchema.md         |  4 +-
 .../DeveloperManuals/DeveloperSetup.md             |  8 +-
 .../version-v0.15/DeveloperManuals/UnitTest.md     | 42 ++++++++++
 .../GettingStarted/DockerComposeSetup.md           |  4 +-
 .../GettingStarted/KubernetesSetup.md              | 62 ---------------
 .../version-v0.15/GettingStarted/RainbondSetup.md  | 39 ---------
 .../version-v0.15/GettingStarted/TemporalSetup.md  | 40 ----------
 .../version-v0.15/Overview/Introduction.md         |  2 +-
 .../version-v0.15/Overview/SupportedDataSources.md |  2 +-
 versioned_docs/version-v0.15/Plugins/bitbucket.md  |  4 +-
 versioned_docs/version-v0.15/Plugins/github.md     |  4 +-
 versioned_docs/version-v0.15/Plugins/gitlab.md     |  4 +-
 versioned_docs/version-v0.15/Plugins/jenkins.md    |  4 +-
 versioned_docs/version-v0.15/Plugins/jira.md       |  4 +-
 versioned_docs/version-v0.15/Plugins/refdiff.md    |  2 +-
 versioned_docs/version-v0.15/Plugins/tapd.md       |  4 +-
 versioned_docs/version-v0.15/Plugins/webhook.md    |  4 +-
 versioned_docs/version-v0.15/Plugins/zentao.md     |  4 +-
 .../version-v0.15/Troubleshooting/Configuration.md |  2 +-
 .../version-v0.15/UserManuals/ConfigUI/Tutorial.md | 93 ----------------------
 .../UserManuals/ConfigUI/_category_.json           |  4 -
 .../UserManuals/Dashboards/_category_.json         |  4 -
 78 files changed, 146 insertions(+), 483 deletions(-)

diff --git a/versioned_docs/version-v0.15/UserManuals/ConfigUI/AdvancedMode.md b/docs/Configuration/AdvancedMode.md
similarity index 99%
rename from versioned_docs/version-v0.15/UserManuals/ConfigUI/AdvancedMode.md
rename to docs/Configuration/AdvancedMode.md
index d9f3823aec..6377d51644 100644
--- a/versioned_docs/version-v0.15/UserManuals/ConfigUI/AdvancedMode.md
+++ b/docs/Configuration/AdvancedMode.md
@@ -1,6 +1,6 @@
 ---
-title: "Using Advanced Mode"
-sidebar_position: 7
+title: "Blueprint Advanced Mode"
+sidebar_position: 8
 description: >
   Using the advanced mode of Config-UI
 ---
diff --git a/versioned_docs/version-v0.15/UserManuals/ConfigUI/BitBucket.md b/docs/Configuration/BitBucket.md
similarity index 98%
rename from versioned_docs/version-v0.15/UserManuals/ConfigUI/BitBucket.md
rename to docs/Configuration/BitBucket.md
index 317be3e8d7..871b2e9c86 100644
--- a/versioned_docs/version-v0.15/UserManuals/ConfigUI/BitBucket.md
+++ b/docs/Configuration/BitBucket.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring BitBucket(Beta)"
+title: "BitBucket(Beta)"
 sidebar_position: 2
 description: Config UI instruction for BitBucket(Cloud)
 ---
diff --git a/docs/UserManuals/Dashboards/AccessControl.md b/docs/Configuration/Dashboards/AccessControl.md
similarity index 100%
rename from docs/UserManuals/Dashboards/AccessControl.md
rename to docs/Configuration/Dashboards/AccessControl.md
diff --git a/docs/UserManuals/Dashboards/GrafanaUserGuide.md b/docs/Configuration/Dashboards/GrafanaUserGuide.md
similarity index 100%
rename from docs/UserManuals/Dashboards/GrafanaUserGuide.md
rename to docs/Configuration/Dashboards/GrafanaUserGuide.md
diff --git a/docs/Configuration/Dashboards/_category_.json b/docs/Configuration/Dashboards/_category_.json
new file mode 100644
index 0000000000..37da75a8c7
--- /dev/null
+++ b/docs/Configuration/Dashboards/_category_.json
@@ -0,0 +1,4 @@
+{
+  "label": "Dashboard Configuration",
+  "position": 10
+}
diff --git a/docs/UserManuals/ConfigUI/GitHub.md b/docs/Configuration/GitHub.md
similarity index 99%
rename from docs/UserManuals/ConfigUI/GitHub.md
rename to docs/Configuration/GitHub.md
index 040ed52d49..eff040331a 100644
--- a/docs/UserManuals/ConfigUI/GitHub.md
+++ b/docs/Configuration/GitHub.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring GitHub"
+title: "GitHub"
 sidebar_position: 2
 description: Config UI instruction for GitHub
 ---
diff --git a/docs/UserManuals/ConfigUI/GitLab.md b/docs/Configuration/GitLab.md
similarity index 99%
rename from docs/UserManuals/ConfigUI/GitLab.md
rename to docs/Configuration/GitLab.md
index f1db518f2b..69558b2974 100644
--- a/docs/UserManuals/ConfigUI/GitLab.md
+++ b/docs/Configuration/GitLab.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring GitLab"
+title: "GitLab"
 sidebar_position: 3
 description: Config UI instruction for GitLab
 ---
diff --git a/versioned_docs/version-v0.15/UserManuals/ConfigUI/Jenkins.md b/docs/Configuration/Jenkins.md
similarity index 99%
rename from versioned_docs/version-v0.15/UserManuals/ConfigUI/Jenkins.md
rename to docs/Configuration/Jenkins.md
index 260348e53e..45a301381a 100644
--- a/versioned_docs/version-v0.15/UserManuals/ConfigUI/Jenkins.md
+++ b/docs/Configuration/Jenkins.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring Jenkins"
+title: "Jenkins"
 sidebar_position: 5
 description: Config UI instruction for Jenkins
 ---
@@ -51,6 +51,7 @@ Jenkins only supports `CI/CD` domain entities, transformed from Jenkins builds a
 - CI/CD: Jenkins builds, stages, etc.
 
 ### Step 3 - Adding Transformation Rules (Optional)
+
 This set of configurations is used for calculating [DORA metrics](../DORA.md).
 
 If you'd like to define `deployments` with Jenkins, please select "Detect Deployment from Jenkins Builds", and provide the following regexes
diff --git a/docs/UserManuals/ConfigUI/Jira.md b/docs/Configuration/Jira.md
similarity index 99%
rename from docs/UserManuals/ConfigUI/Jira.md
rename to docs/Configuration/Jira.md
index f9aaf2683a..f0d4732747 100644
--- a/docs/UserManuals/ConfigUI/Jira.md
+++ b/docs/Configuration/Jira.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring Jira"
+title: "Jira"
 sidebar_position: 4
 description: Config UI instruction for Jira
 ---
diff --git a/versioned_docs/version-v0.15/UserManuals/ConfigUI/Tapd.md b/docs/Configuration/Tapd.md
similarity index 97%
rename from versioned_docs/version-v0.15/UserManuals/ConfigUI/Tapd.md
rename to docs/Configuration/Tapd.md
index c65270d449..cf62019b0f 100644
--- a/versioned_docs/version-v0.15/UserManuals/ConfigUI/Tapd.md
+++ b/docs/Configuration/Tapd.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring TAPD(Beta)"
+title: "TAPD(Beta)"
 sidebar_position: 6
 description: Config UI instruction for Tapd
 ---
diff --git a/docs/UserManuals/TeamConfiguration.md b/docs/Configuration/TeamConfiguration.md
similarity index 100%
rename from docs/UserManuals/TeamConfiguration.md
rename to docs/Configuration/TeamConfiguration.md
diff --git a/docs/UserManuals/ConfigUI/Tutorial.md b/docs/Configuration/Tutorial.md
similarity index 100%
copy from docs/UserManuals/ConfigUI/Tutorial.md
copy to docs/Configuration/Tutorial.md
diff --git a/versioned_docs/version-v0.15/UserManuals/ConfigUI/Zentao.md b/docs/Configuration/Zentao.md
similarity index 97%
rename from versioned_docs/version-v0.15/UserManuals/ConfigUI/Zentao.md
rename to docs/Configuration/Zentao.md
index d8cfde289a..316e0dea1c 100644
--- a/versioned_docs/version-v0.15/UserManuals/ConfigUI/Zentao.md
+++ b/docs/Configuration/Zentao.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring Zentao(Beta)"
+title: "Zentao(Beta)"
 sidebar_position: 6
 description: Config UI instruction for Zentao
 ---
diff --git a/versioned_docs/version-v0.15/UserManuals/_category_.json b/docs/Configuration/_category_.json
similarity index 54%
rename from versioned_docs/version-v0.15/UserManuals/_category_.json
rename to docs/Configuration/_category_.json
index 23ce768a59..96a3608ba7 100644
--- a/versioned_docs/version-v0.15/UserManuals/_category_.json
+++ b/docs/Configuration/_category_.json
@@ -1,8 +1,8 @@
 {
-  "label": "User Manuals",
+  "label": "Configuration",
   "position": 3,
   "link":{
     "type": "generated-index",
-    "slug": "UserManuals"
+    "slug": "Configuration"
   }
 }
diff --git a/docs/UserManuals/ConfigUI/webhook.md b/docs/Configuration/webhook.md
similarity index 98%
rename from docs/UserManuals/ConfigUI/webhook.md
rename to docs/Configuration/webhook.md
index 9616feab99..97540285bb 100644
--- a/docs/UserManuals/ConfigUI/webhook.md
+++ b/docs/Configuration/webhook.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring Incoming Webhook"
+title: "Incoming Webhook"
 sidebar_position: 7
 description: Config UI instruction for Webhook
 ---
diff --git a/versioned_docs/version-v0.15/UserManuals/DORA.md b/docs/DORA.md
similarity index 96%
rename from versioned_docs/version-v0.15/UserManuals/DORA.md
rename to docs/DORA.md
index 81ac826b2b..8d3b9e9126 100644
--- a/versioned_docs/version-v0.15/UserManuals/DORA.md
+++ b/docs/DORA.md
@@ -1,6 +1,6 @@
 ---
 title: "DORA"
-sidebar_position: 7
+sidebar_position: 4
 description: >
   DORA Metrics
 ---
@@ -44,7 +44,7 @@ You can set up DORA metrics in DevLake in a few steps:
 
 DevLake now supports Jenkins, GitHub Action and GitLabCI as data sources for `deployments` data; Jira, GitHub issues, and TAPD as the sources for `incidents` data; Github PRs, GitLab MRs as the sources for `changes` data.
 
-If your CI/CD tools are not listed on the [Supported Data Sources](https://devlake.apache.org/docs/SupportedDataSources) page, have no fear! DevLake provides incoming webhooks to push your `deployments` data to DevLake. The webhook configuration doc can be found [here](https://devlake.apache.org/docs/UserManuals/ConfigUI/webhook/).
+If your CI/CD tools are not listed on the [Supported Data Sources](https://devlake.apache.org/docs/SupportedDataSources) page, have no fear! DevLake provides incoming webhooks to push your `deployments` data to DevLake. The webhook configuration doc can be found [here](https://devlake.apache.org/docs/Configuration/webhook/).
 
 
 ## A real-world example
@@ -86,7 +86,7 @@ In the next section, we'll demonstrate how to configure DevLake to implement DOR
 6. Choose sync frequency, click 'Save and Run Now' to start data collection. The time to completion varies by data source and depends on the volume of data.
 ![](https://i.imgur.com/zPkfzGr.png)
 
-For more details, please refer to our [blueprint manuals](https://devlake.apache.org/docs/UserManuals/ConfigUI/Tutorial).
+For more details, please refer to our [blueprint manuals](https://devlake.apache.org/docs/Configuration/Tutorial).
 
 ### Collect CircleCI data via `webhook`
 
@@ -144,7 +144,7 @@ Using CircleCI as an example, we demonstrate how to actively push data to DevLak
         - build
         - deploy
   ```
-  If you have set a [username/password](https://devlake.apache.org/docs/UserManuals/Authentication) for Config UI, you need to add them to the curl to register a deployment:
+  If you have set a [username/password](GettingStarted/Authentication.md) for Config UI, you need to add them to the curl to register a deployment:
 
   ```
   curl https://sample-url.com/api/plugins/webhook/1/deployments -X 'POST' -u 'username:password' -d '{
@@ -172,7 +172,7 @@ For a breakdown of each metric's SQL query, please refer to the corresponding me
   - [Median Time to Restore Service](https://devlake.apache.org/docs/Metrics/MTTR)
   - [Change Failure Rate](https://devlake.apache.org/docs/Metrics/CFR)
 
-If you aren't familiar with Grafana, please refer to our [Grafana doc](./Dashboards/GrafanaUserGuide.md), or jump into Slack for help.
+If you aren't familiar with Grafana, please refer to our [Grafana doc](Configuration/Dashboards/GrafanaUserGuide.md), or jump into Slack for help.
 
 <br/>
 
diff --git a/docs/DeveloperManuals/DeveloperSetup.md b/docs/DeveloperManuals/DeveloperSetup.md
index 5c6d54965a..b228880a1a 100644
--- a/docs/DeveloperManuals/DeveloperSetup.md
+++ b/docs/DeveloperManuals/DeveloperSetup.md
@@ -69,7 +69,7 @@ The following guide will walk through how to run DevLake's frontend (`config-ui`
     For common errors, please see [Troubleshooting](#troubleshotting).
 
 8.  Config UI is running at `localhost:4000`
-    - For how to use Config UI, please refer to our [tutorial](UserManuals/ConfigUI/Tutorial.md)
+    - For how to use Config UI, please refer to our [tutorial](Configuration/Tutorial.md)
 
 ## Running Tests
 
@@ -99,7 +99,7 @@ All DevLake APIs (core service + plugin API) are documented with swagger. To see
 
 To access Grafana, click *View Dashboards* button in the top left corner of Config UI, or visit `localhost:3002` (username: `admin`, password: `admin`).
 
-For provisioning, customizing, and creating dashboards, please refer to our [Grafana Doc](../UserManuals/Dashboards/GrafanaUserGuide.md).
+For provisioning, customizing, and creating dashboards, please refer to our [Grafana Doc](../Configuration/Dashboards/GrafanaUserGuide.md).
 
 
 ## Troubleshooting
diff --git a/docs/GettingStarted/DockerComposeSetup.md b/docs/GettingStarted/DockerComposeSetup.md
index 7c592a85f2..00c2f0a8d6 100644
--- a/docs/GettingStarted/DockerComposeSetup.md
+++ b/docs/GettingStarted/DockerComposeSetup.md
@@ -22,11 +22,11 @@ sidebar_position: 1
 ## Collect data and view dashboards
 
 1. Visit `config-ui` at `http://localhost:4000` in your browser to configure DevLake and collect data.
-   - Please follow the [tutorial](UserManuals/ConfigUI/Tutorial.md)
+   - Please follow the [tutorial](Configuration/Tutorial.md)
    - `devlake` container takes a while to fully boot up. If `config-ui` complains about API being unreachable, please wait a few seconds and refresh the page.
 2. To view dashboards, click *View Dashboards* button in the top left corner, or visit `localhost:3002` (username: `admin`, password: `admin`).
    - We use [Grafana](https://grafana.com/) to visualize the DevOps [data](/Overview/SupportedDataSources.md) and build dashboards.
-   - For how to customize and provision dashboards, please see our [Grafana doc](../UserManuals/Dashboards/GrafanaUserGuide.md).
+   - For how to customize and provision dashboards, please see our [Grafana doc](../Configuration/Dashboards/GrafanaUserGuide.md).
 
 
 ## Upgrade to a newer version
diff --git a/docs/GettingStarted/KubernetesSetup.md b/docs/GettingStarted/KubernetesSetup.md
deleted file mode 100644
index 64a8bf966e..0000000000
--- a/docs/GettingStarted/KubernetesSetup.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-title: "Install via Kubernetes"
-description: >
-  The steps to install Apache DevLake via Kubernetes
-sidebar_position: 3
----
-
-:::caution
-
-We highly recommend the [helm approach](./HelmSetup.md), this page is for Advanced Installation only
-
-:::
-
-We provide a sample [k8s-deploy.yaml](https://github.com/apache/incubator-devlake/blob/main/devops/deployment/k8s/k8s-deploy.yaml) to help deploy DevLake to Kubernetes
-
-[k8s-deploy.yaml](https://github.com/apache/incubator-devlake/blob/main/devops/deployment/k8s/k8s-deploy.yaml) will create a namespace `devlake` on your k8s cluster, and use `nodePort 30004` for `config-ui`,  `nodePort 30002` for `grafana` dashboards. If you would like to use a specific version of Apache DevLake, please update the image tag of `grafana`, `devlake` and `config-ui` deployments.
-
-## Step-by-step guide
-
-1. Download [k8s-deploy.yaml](https://github.com/apache/incubator-devlake/blob/main/devops/deployment/k8s/k8s-deploy.yaml)
-2. Customize the settings (`devlake-config` config map):
-   - Settings shared between `grafana` and `mysql`
-     * `MYSQL_ROOT_PASSWORD`: set root password for `mysql`
-     * `MYSQL_USER`: shared between `mysql` and `grafana`
-     * `MYSQL_PASSWORD`: shared between `mysql` and `grafana`
-     * `MYSQL_DATABASE`: shared between `mysql` and `grafana`
-   - Settings used by `grafana`
-     * `MYSQL_URL`: set MySQL URL for `grafana` in `$HOST:$PORT` format
-     * `GF_SERVER_ROOT_URL`: Public URL to the `grafana`
-   - Settings used by `config-ui`:
-     * `GRAFANA_ENDPOINT`: FQDN of grafana which can be reached within k8s cluster, normally you don't need to change it unless namespace was changed
-     * `DEVLAKE_ENDPOINT`: FQDN of devlake which can be reached within k8s cluster, normally you don't need to change it unless namespace was changed
-     * `ADMIN_USER`/`ADMIN_PASS`: Not required, but highly recommended
-   - Settings used by `devlake`:
-     * `DB_URL`: update this value if  `MYSQL_USER`, `MYSQL_PASSWORD` or `MYSQL_DATABASE` were changed
-     * `LOGGING_DIR`: the directory of logs for Devlake - you likely don't need to change it.
-3. The `devlake` deployment store its configuration in `/app/.env`. In our sample yaml, we use `hostPath` volume, so please make sure directory `/var/lib/devlake` exists on your k8s workers, or employ other techniques to persist `/app/.env` file. Please do NOT mount the entire `/app` directory, because plugins are located in `/app/bin` folder.
-4. Finally, execute the following command and DevLake should be up and running:
-   ```sh
-   kubectl apply -f k8s-deploy.yaml
-   ```
-
-
-## FAQ
-
-1. Can I use a managed Cloud database service instead of running database in docker?
-
-   Yes, it only takes a few changes in the sample yaml file. Below we'll use MySQL on AWS RDS as an example.
-   1. (Optional) Create a MySQL instance on AWS RDS following this [doc](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.html), skip this step if you'd like to use an existing instance
-   2. Remove the `mysql` deployment and service sections from `k8s-deploy.yaml`
-   3. Update `devlake-config` configmap according to your RDS instance setup:
-     * `MYSQL_ROOT_PASSWORD`: remove this line
-     * `MYSQL_USER`: use your RDS instance's master username
-     * `MYSQL_PASSWORD`: use your RDS instance's password
-     * `MYSQL_DATABASE`: use your RDS instance's DB name, you may need to create a database first with `CREATE DATABASE <DB name>;`
-     * `MYSQL_URL`: set this for `grafana` in `$HOST:$PORT` format, where $HOST and $PORT should be your RDS instance's endpoint and port respectively
-     * `DB_URL`: update the connection string with your RDS instance's info for `devlake`
-
-
-## Troubleshooting
-
-If you run into any problem, please check the [Troubleshooting](/Troubleshooting/Installation.md) or [create an issue](https://github.com/apache/incubator-devlake/issues)
diff --git a/docs/GettingStarted/RainbondSetup.md b/docs/GettingStarted/RainbondSetup.md
deleted file mode 100644
index fde8836547..0000000000
--- a/docs/GettingStarted/RainbondSetup.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: "Install via Rainbond"
-sidebar_position: 7
-description: >
-  The steps to install DevLake in Rainbond.
----
-
-This tutorial is for users who don't know Kubernetes. [Rainbond](https://www.rainbond.com/) is cloud native application management platform built on Kubernetes, easy to use, no need to know Kubernetes knowledge, easily deploy applications in Kubernetes. 
-
-Install DevLake in Rainbond is the easiest way to get started.
-
-## Requirements
-
-* Rainbond 5.8.x or above
-
-## Deploy DevLake
-
-1.Login to Rainbond console, click `Market` in the left menu, switch to open source app store, and search `DevLake` in the search box, and click `Install` button.
-
-![](/img/GettingStarted/install-devlake.jpg)
-
-2.fill in the installation information, and click `Confirm` button startup install.
-  * Team: select a team or create a new team
-  * Cluster: select a cluster
-  * Application: select an application or create a new application
-  * Version: select a version
-
-3.Moment later, DevLake will be installed successfully, via the `Access` button to access DevLake.
-
-![](/img/GettingStarted/topology-devlake.jpg)
-
-## Next Step
-
-Creating a Blueprint, ref [Tutorial](/docs/UserManuals/ConfigUI/Tutorial#creating-a-blueprint)
-
-
-## Troubleshooting
-
-If you run into any problem, please check the [Troubleshooting](/Troubleshooting/Installation.md) or [create an issue](https://github.com/apache/incubator-devlake/issues)
diff --git a/docs/GettingStarted/TemporalSetup.md b/docs/GettingStarted/TemporalSetup.md
deleted file mode 100644
index 1d6ce844a5..0000000000
--- a/docs/GettingStarted/TemporalSetup.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: "Install via Temporal"
-sidebar_position: 6
-description: >
-  The steps to install DevLake in Temporal mode.
----
-
-
-Normally, DevLake would execute pipelines on a local machine (we call it `local mode`), it is sufficient most of the time. However, when you have too many pipelines that need to be executed in parallel, it can be problematic, as the horsepower and throughput of a single machine is limited.
-
-`temporal mode` was added to support distributed pipeline execution, you can fire up arbitrary workers on multiple machines to carry out those pipelines in parallel to overcome the limitations of a single machine.
-
-But, be careful, many API services like JIRA/GITHUB have a request rate limit mechanism. Collecting data in parallel against the same API service with the same identity would most likely hit such limit.
-
-## How it works
-
-1. DevLake Server and Workers connect to the same temporal server by setting up `TEMPORAL_URL`
-2. DevLake Server sends a `pipeline` to the temporal server, and one of the Workers pick it up and execute it
-
-
-**IMPORTANT: This feature is in early stage of development. Please use with caution**
-
-
-## Temporal Demo
-
-### Requirements
-
-- [Docker](https://docs.docker.com/get-docker)
-- [docker-compose](https://docs.docker.com/compose/install/)
-- [temporalio](https://temporal.io/)
-
-### How to setup
-
-1. Clone and fire up the [temporalio](https://temporal.io/) services
-2. Clone this repo, and fire up DevLake with command `docker-compose -f deployment/temporal/docker-compose-temporal.yml up -d`
-
-
-## Troubleshooting
-
-If you run into any problem, please check the [Troubleshooting](/Troubleshooting/Installation.md) or [create an issue](https://github.com/apache/incubator-devlake/issues)
diff --git a/docs/Overview/Introduction.md b/docs/Overview/Introduction.md
index 6bb1194941..9bdb41cd58 100755
--- a/docs/Overview/Introduction.md
+++ b/docs/Overview/Introduction.md
@@ -16,7 +16,7 @@ Apache DevLake is designed for developer teams looking to make better sense of t
 
 ## How do I use DevLake?
 ### 1. Set up DevLake
-You can easily set up Apache DevLake by following our step-by step instructions for [Docker Compose setup](../GettingStarted/DockerComposeSetup.md) or [Kubernetes setup](../GettingStarted/KubernetesSetup.md).
+You can easily set up Apache DevLake by following our step-by step instructions for [Docker Compose setup](../GettingStarted/DockerComposeSetup.md) or [Helm setup](../GettingStarted/HelmSetup.md).
 
 ### 2. Create a Blueprint
 The DevLake Configuration UI will guide you through the process (a Blueprint) to define the data connections, data scope, transformation and sync frequency of the data you wish to collect.
diff --git a/docs/Overview/SupportedDataSources.md b/docs/Overview/SupportedDataSources.md
index 5d0669f0eb..20e6fbea3c 100644
--- a/docs/Overview/SupportedDataSources.md
+++ b/docs/Overview/SupportedDataSources.md
@@ -29,7 +29,7 @@ Apache DevLake(incubating) supports the following data sources. The data from ea
 
 This table shows the entities collected by each plugin. Domain layer entities in this table are consistent with the entities [here](/DataModels/DevLakeDomainLayerSchema.md).
 ✅ : Collect by default.
-💪 : Collect not by default. You need to add the corresponding subtasks to collect these entities in the [advanced mode](../UserManuals/ConfigUI/AdvancedMode.md).
+💪 : Collect not by default. You need to add the corresponding subtasks to collect these entities in the [advanced mode](../Configuration/AdvancedMode.md).
 
 | Domain Layer Entities                                                                       | ae  | dora | gitextractor | incoming webhook | github | gitlab | jenkins | jira | refdiff | tapd |
 | ------------------------------------------------------------------------------------------- | --- | ---- | ------------ | ---------------- | ------ | ------ | ------- | ---- | ------- | ---- |
diff --git a/docs/Plugins/bitbucket.md b/docs/Plugins/bitbucket.md
index 97e7f2025d..b5a2979391 100644
--- a/docs/Plugins/bitbucket.md
+++ b/docs/Plugins/bitbucket.md
@@ -35,8 +35,8 @@ Metrics that can be calculated based on the data collected from bitbucket:
 
 ## Configuration
 
-- Configuring Bitbucket via [Config UI](/UserManuals/ConfigUI/BitBucket.md)
-- Configuring Bitbucket via Config UI's [advanced mode](/UserManuals/ConfigUI/AdvancedMode.md#9-BitBucket).
+- Configuring Bitbucket via [Config UI](/Configuration/BitBucket.md)
+- Configuring Bitbucket via Config UI's [advanced mode](/Configuration/AdvancedMode.md#9-BitBucket).
 
 ## API Sample Request
 
diff --git a/docs/Plugins/github.md b/docs/Plugins/github.md
index f8874548fb..a57adee6bb 100644
--- a/docs/Plugins/github.md
+++ b/docs/Plugins/github.md
@@ -56,8 +56,8 @@ Metrics that can be calculated based on the data collected from GitHub:
 
 ## Configuration
 
-- Configuring GitHub via [Config UI](/UserManuals/ConfigUI/GitHub.md)
-- Configuring GitHub via Config UI's [advanced mode](/UserManuals/ConfigUI/AdvancedMode.md#1-github).
+- Configuring GitHub via [Config UI](/Configuration/GitHub.md)
+- Configuring GitHub via Config UI's [advanced mode](/Configuration/AdvancedMode.md#1-github).
 
 ## API Sample Request
 
diff --git a/docs/Plugins/gitlab.md b/docs/Plugins/gitlab.md
index f4b5663b7a..03dc16925a 100644
--- a/docs/Plugins/gitlab.md
+++ b/docs/Plugins/gitlab.md
@@ -49,8 +49,8 @@ Metrics that can be calculated based on the data collected from GitLab:
 
 ## Configuration
 
-- Configuring GitLab via [config-ui](/UserManuals/ConfigUI/GitLab.md).
-- Configuring GitLab via Config UI's [advanced mode](/UserManuals/ConfigUI/AdvancedMode.md#2-gitlab).
+- Configuring GitLab via [config-ui](/Configuration/GitLab.md).
+- Configuring GitLab via Config UI's [advanced mode](/Configuration/AdvancedMode.md#2-gitlab).
 
 ## API Sample Request
 
diff --git a/docs/Plugins/jenkins.md b/docs/Plugins/jenkins.md
index 13ab302736..6c2fcfea0a 100644
--- a/docs/Plugins/jenkins.md
+++ b/docs/Plugins/jenkins.md
@@ -34,8 +34,8 @@ Metrics that can be calculated based on the data collected from Jenkins:
 
 ## Configuration
 
-- Configuring Jenkins via [Config UI](/UserManuals/ConfigUI/Jenkins.md)
-- Configuring Jenkins via Config UI's [advanced mode](/UserManuals/ConfigUI/AdvancedMode.md#3-jenkins).
+- Configuring Jenkins via [Config UI](/Configuration/Jenkins.md)
+- Configuring Jenkins via Config UI's [advanced mode](/Configuration/AdvancedMode.md#3-jenkins).
 
 ## API Sample Request
 
diff --git a/docs/Plugins/jira.md b/docs/Plugins/jira.md
index ea2ef56d72..88e72e3a1f 100644
--- a/docs/Plugins/jira.md
+++ b/docs/Plugins/jira.md
@@ -31,8 +31,8 @@ Metrics that can be calculated based on the data collected from Jira:
 
 ## Configuration
 
-- Configuring Jira via [config-ui](/UserManuals/ConfigUI/Jira.md).
-- Configuring Jira via Config UI's [advanced mode](/UserManuals/ConfigUI/AdvancedMode.md#4-jira).
+- Configuring Jira via [config-ui](/Configuration/Jira.md).
+- Configuring Jira via Config UI's [advanced mode](/Configuration/AdvancedMode.md#4-jira).
 
 ## API Sample Request
 
diff --git a/docs/Plugins/refdiff.md b/docs/Plugins/refdiff.md
index 01be58de5b..73f7ed1fb3 100644
--- a/docs/Plugins/refdiff.md
+++ b/docs/Plugins/refdiff.md
@@ -100,7 +100,7 @@ curl 'http://localhost:8080/pipelines' \
 
 ## How to use refdiff in DORA
 
-RefDiff can be called by the [DORA plugin](https://github.com/apache/incubator-devlake/tree/main/plugins/dora) to support the calculation of [DORA metrics](https://devlake.apache.org/docs/UserManuals/DORA). RefDiff has a subtask called 'calculateProjectDeploymentCommitsDiff'. This subtask takes the `project_name` from task options to calculate the commits diff between two consecutive deployments in this project. That is to say, refdiff will generate the relationship between `deployed com [...]
+RefDiff can be called by the [DORA plugin](https://github.com/apache/incubator-devlake/tree/main/plugins/dora) to support the calculation of [DORA metrics](https://devlake.apache.org/docs/DORA). RefDiff has a subtask called 'calculateProjectDeploymentCommitsDiff'. This subtask takes the `project_name` from task options to calculate the commits diff between two consecutive deployments in this project. That is to say, refdiff will generate the relationship between `deployed commit(s)` and  [...]
 
 ```shell
 curl 'http://localhost:8080/pipelines' \
diff --git a/docs/Plugins/tapd.md b/docs/Plugins/tapd.md
index 691f7a930d..d4fa912548 100644
--- a/docs/Plugins/tapd.md
+++ b/docs/Plugins/tapd.md
@@ -20,5 +20,5 @@ Metrics that can be calculated based on the data collected from Tapd:
 
 ## Configuration
 
-- Configuring Tapd via [config-ui](/UserManuals/ConfigUI/Tapd.md).
-- Configuring Tapd via Config UI's [advanced mode](/UserManuals/ConfigUI/AdvancedMode.md#6-tapd).
+- Configuring Tapd via [config-ui](/Configuration/Tapd.md).
+- Configuring Tapd via Config UI's [advanced mode](/Configuration/AdvancedMode.md#6-tapd).
diff --git a/docs/Plugins/webhook.md b/docs/Plugins/webhook.md
index e11d6dd84f..3d180f29dd 100644
--- a/docs/Plugins/webhook.md
+++ b/docs/Plugins/webhook.md
@@ -33,7 +33,7 @@ Metrics that can be calculated based on the data collected from Incoming Webhook
 
 ## Configuration
 
-- Configuring Incoming Webhooks via [Config UI](/UserManuals/ConfigUI/webhook.md)
+- Configuring Incoming Webhooks via [Config UI](/Configuration/webhook.md)
 
 ## API Sample Request
 
@@ -67,7 +67,7 @@ curl https://sample-url.com/api/plugins/webhook/1/deployments -X 'POST' -d '{
   }'
 ```
 
-If you have set a [username/password](https://devlake.apache.org/docs/UserManuals/Authentication) for Config UI, you'll need to add them to the curl command to register a `deployment`:
+If you have set a [username/password](GettingStarted/Authentication.md) for Config UI, you'll need to add them to the curl command to register a `deployment`:
 
 ```
 curl https://sample-url.com/api/plugins/webhook/1/deployments -X 'POST' -u 'username:password' -d '{
diff --git a/docs/Plugins/zentao.md b/docs/Plugins/zentao.md
index 72d157ae4d..43d6398d49 100644
--- a/docs/Plugins/zentao.md
+++ b/docs/Plugins/zentao.md
@@ -20,5 +20,5 @@ Metrics that can be calculated based on the data collected from Zentao:
 
 ## Configuration
 
-- Configuring Zentao via [config-ui](/UserManuals/ConfigUI/Zentao.md).
-- Configuring Zentao via Config UI's [advanced mode](/UserManuals/ConfigUI/AdvancedMode.md#8-zentao).
+- Configuring Zentao via [config-ui](/Configuration/Zentao.md).
+- Configuring Zentao via Config UI's [advanced mode](/Configuration/AdvancedMode.md#8-zentao).
diff --git a/docs/Troubleshooting/Configuration.md b/docs/Troubleshooting/Configuration.md
index e1978a4525..fbe71e76c3 100644
--- a/docs/Troubleshooting/Configuration.md
+++ b/docs/Troubleshooting/Configuration.md
@@ -10,7 +10,7 @@ description: >
 | Error code | An example                  | Causes | Solutions |
 | ---------- | ----------------------------|--------|-----------|
 | 429        | subtask collectAPiPipelines ended unexpectedly caused: Error waiting for async Collector execution caused by: retry exceeded 3 times calling projects/{projectId}/pipelines {429} | This error exmaple is caused by GitLab's Pipeline APIs. These APIs are implemented via Cloudflare, which is different from other GitLab entities. | Two ways: <br/> - Enable `fixed rate limit` in the GitLab connection, lower the API rates to 2,000. If it works, you can try increase the rates to ac [...]
-| 403        | error: preparing task data for gitextractor caused by: unexpected http status code: 403 | This is usually caused by the permission of your tokens. For example, if you're using an un-supported auth method, or using a token without ticking permissions to certain entities you want to collect. | Find the supported authentication methods and token permissions that should be selected in the corresponding plugin's Config UI manuals, for example, [configuring GitHub](/docs/UserMan [...]
+| 403        | error: preparing task data for gitextractor caused by: unexpected http status code: 403 | This is usually caused by the permission of your tokens. For example, if you're using an un-supported auth method, or using a token without ticking permissions to certain entities you want to collect. | Find the supported authentication methods and token permissions that should be selected in the corresponding plugin's Config UI manuals, for example, [configuring GitHub](/docs/Configu [...]
 | 1406       | subtask extractApiBuilds ended unexpectedly caused by: error adding the result to batch caused by: Error 1406: Data too long for column 'full_display_name' at row 138. See bug [#4053](https://github.com/apache/incubator-devlake/issues/4053) | This is usually thrown by MySQL because a certain value is too long | A work-around is to manually change the field length to varchar(255) or longer in MySQL. Also, please put up a [bug](https://github.com/apache/incubator-devlake/iss [...]
 
 
diff --git a/docs/UserManuals/ConfigUI/_category_.json b/docs/UserManuals/ConfigUI/_category_.json
deleted file mode 100644
index 62f99d484f..0000000000
--- a/docs/UserManuals/ConfigUI/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "label": "Config UI",
-  "position": 4
-}
diff --git a/docs/UserManuals/Dashboards/_category_.json b/docs/UserManuals/Dashboards/_category_.json
deleted file mode 100644
index 0db83c6e9b..0000000000
--- a/docs/UserManuals/Dashboards/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "label": "Dashboards",
-  "position": 5
-}
diff --git a/livedemo/EngineeringLeads/DORA.md b/livedemo/EngineeringLeads/DORA.md
index c7b8a63abf..2c591db209 100644
--- a/livedemo/EngineeringLeads/DORA.md
+++ b/livedemo/EngineeringLeads/DORA.md
@@ -7,7 +7,7 @@ description: >
 
 # DORA
 
-To set up your own DORA metrics dashboard, you can checkout our detailed [DORA user guide](https://devlake.apache.org/docs/UserManuals/DORA).
+To set up your own DORA metrics dashboard, you can checkout our detailed [DORA user guide](https://devlake.apache.org/docs/DORA).
 
 <div className="info">
   <h5>
diff --git a/src/components/Sections/HeaderLearnMore.tsx b/src/components/Sections/HeaderLearnMore.tsx
index a58662e03b..782129044f 100644
--- a/src/components/Sections/HeaderLearnMore.tsx
+++ b/src/components/Sections/HeaderLearnMore.tsx
@@ -50,7 +50,7 @@ export function HeaderLearnMore() {
             mobile:my-[8px] sm:my-[8px]
             mobile:mx-auto sm:mx-auto
             "
-          to="https://devlake.apache.org/docs/UserManuals/DORA"
+          to="https://devlake.apache.org/docs/DORA"
         >
           Learn More
         </Link>
diff --git a/src/components/Sections/UserFlow.tsx b/src/components/Sections/UserFlow.tsx
index 79d1181126..3ff764b885 100644
--- a/src/components/Sections/UserFlow.tsx
+++ b/src/components/Sections/UserFlow.tsx
@@ -43,7 +43,7 @@ export function UserFlow() {
           icon={<UF2 width={40} height={40} />}
           text="Collect Data"
         >
-          Select, transform and set up a schedule for the data you wish to sync from your prefered data sources in the <InlineLink link="https://devlake.apache.org/docs/UserManuals/ConfigUI/Tutorial">Config UI</InlineLink>.
+          Select, transform and set up a schedule for the data you wish to sync from your prefered data sources in the <InlineLink link="https://devlake.apache.org/docs/Configuration/Tutorial">Config UI</InlineLink>.
         </Card>
         <Arrow />
         <Card
@@ -57,7 +57,7 @@ export function UserFlow() {
           icon={<UF4 width={40} height={40} />}
           text="Customize Metrics"
         >
-          <InlineLink link="https://devlake.apache.org/docs/UserManuals/Dashboards/GrafanaUserGuide#customizing-a-dashboard">Customize</InlineLink> your own metrics or dashboards with SQL to extend your usage of DevLake.
+          <InlineLink link="https://devlake.apache.org/docs/Configuration/Dashboards/GrafanaUserGuide#customizing-a-dashboard">Customize</InlineLink> your own metrics or dashboards with SQL to extend your usage of DevLake.
         </Card>
       </div>
     </div>
diff --git a/versioned_docs/version-v0.14/GettingStarted/RainbondSetup.md b/versioned_docs/version-v0.14/GettingStarted/RainbondSetup.md
index 41b3c15457..3b793c7ee9 100644
--- a/versioned_docs/version-v0.14/GettingStarted/RainbondSetup.md
+++ b/versioned_docs/version-v0.14/GettingStarted/RainbondSetup.md
@@ -31,4 +31,4 @@ Install DevLake in Rainbond is the easiest way to get started.
 
 ## Next Step
 
-Creating a Blueprint, ref [Tutorial](/docs/UserManuals/ConfigUI/Tutorial#creating-a-blueprint)
\ No newline at end of file
+Creating a Blueprint, ref [Tutorial](UserManuals/ConfigUI/Tutorial.md#creating-a-blueprint)
\ No newline at end of file
diff --git a/versioned_docs/version-v0.14/Troubleshooting.md b/versioned_docs/version-v0.14/Troubleshooting.md
index 278135b704..dba0cbf1d5 100644
--- a/versioned_docs/version-v0.14/Troubleshooting.md
+++ b/versioned_docs/version-v0.14/Troubleshooting.md
@@ -10,7 +10,7 @@ description: >
 | Error code | An example                  | Causes | Solutions |
 | ---------- | ----------------------------|--------|-----------|
 | 429        | subtask collectAPiPipelines ended unexpectedly caused: Error waiting for async Collector execution caused by: retry exceeded 3 times calling projects/{projectId}/pipelines {429} | This error exmaple is caused by GitLab's Pipeline APIs. These APIs are implemented via Cloudflare, which is different from other GitLab entities. | Two ways: <br/> - Enable `fixed rate limit` in the GitLab connection, lower the API rates to 2,000. If it works, you can try increase the rates to ac [...]
-| 403        | error: preparing task data for gitextractor caused by: unexpected http status code: 403 | This is usually caused by the permission of your tokens. For example, if you're using an un-supported auth method, or using a token without ticking permissions to certain entities you want to collect. | Find the supported authentication methods and token permissions that should be selected in the corresponding plugin's Config UI manuals, for example, [configuring GitHub](/docs/UserMan [...]
+| 403        | error: preparing task data for gitextractor caused by: unexpected http status code: 403 | This is usually caused by the permission of your tokens. For example, if you're using an un-supported auth method, or using a token without ticking permissions to certain entities you want to collect. | Find the supported authentication methods and token permissions that should be selected in the corresponding plugin's Config UI manuals, for example, [configuring GitHub](UserManuals/C [...]
 | 1406       | subtask extractApiBuilds ended unexpectedly caused by: error adding the result to batch caused by: Error 1406: Data too long for column 'full_display_name' at row 138. See bug [#4053](https://github.com/apache/incubator-devlake/issues/4053) | This is usually thrown by MySQL because a certain value is too long | A work-around is to manually change the field length to varchar(255) or longer in MySQL. Also, please put up a [bug](https://github.com/apache/incubator-devlake/iss [...]
 
 
diff --git a/docs/UserManuals/ConfigUI/AdvancedMode.md b/versioned_docs/version-v0.15/Configuration/AdvancedMode.md
similarity index 99%
rename from docs/UserManuals/ConfigUI/AdvancedMode.md
rename to versioned_docs/version-v0.15/Configuration/AdvancedMode.md
index d9f3823aec..6377d51644 100644
--- a/docs/UserManuals/ConfigUI/AdvancedMode.md
+++ b/versioned_docs/version-v0.15/Configuration/AdvancedMode.md
@@ -1,6 +1,6 @@
 ---
-title: "Using Advanced Mode"
-sidebar_position: 7
+title: "Blueprint Advanced Mode"
+sidebar_position: 8
 description: >
   Using the advanced mode of Config-UI
 ---
diff --git a/docs/UserManuals/ConfigUI/BitBucket.md b/versioned_docs/version-v0.15/Configuration/BitBucket.md
similarity index 98%
rename from docs/UserManuals/ConfigUI/BitBucket.md
rename to versioned_docs/version-v0.15/Configuration/BitBucket.md
index 317be3e8d7..871b2e9c86 100644
--- a/docs/UserManuals/ConfigUI/BitBucket.md
+++ b/versioned_docs/version-v0.15/Configuration/BitBucket.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring BitBucket(Beta)"
+title: "BitBucket(Beta)"
 sidebar_position: 2
 description: Config UI instruction for BitBucket(Cloud)
 ---
diff --git a/versioned_docs/version-v0.15/UserManuals/Dashboards/AccessControl.md b/versioned_docs/version-v0.15/Configuration/Dashboards/AccessControl.md
similarity index 100%
rename from versioned_docs/version-v0.15/UserManuals/Dashboards/AccessControl.md
rename to versioned_docs/version-v0.15/Configuration/Dashboards/AccessControl.md
diff --git a/versioned_docs/version-v0.15/UserManuals/Dashboards/GrafanaUserGuide.md b/versioned_docs/version-v0.15/Configuration/Dashboards/GrafanaUserGuide.md
similarity index 100%
rename from versioned_docs/version-v0.15/UserManuals/Dashboards/GrafanaUserGuide.md
rename to versioned_docs/version-v0.15/Configuration/Dashboards/GrafanaUserGuide.md
diff --git a/versioned_docs/version-v0.15/Configuration/Dashboards/_category_.json b/versioned_docs/version-v0.15/Configuration/Dashboards/_category_.json
new file mode 100644
index 0000000000..37da75a8c7
--- /dev/null
+++ b/versioned_docs/version-v0.15/Configuration/Dashboards/_category_.json
@@ -0,0 +1,4 @@
+{
+  "label": "Dashboard Configuration",
+  "position": 10
+}
diff --git a/versioned_docs/version-v0.15/UserManuals/ConfigUI/GitHub.md b/versioned_docs/version-v0.15/Configuration/GitHub.md
similarity index 98%
rename from versioned_docs/version-v0.15/UserManuals/ConfigUI/GitHub.md
rename to versioned_docs/version-v0.15/Configuration/GitHub.md
index c80152260f..eff040331a 100644
--- a/versioned_docs/version-v0.15/UserManuals/ConfigUI/GitHub.md
+++ b/versioned_docs/version-v0.15/Configuration/GitHub.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring GitHub"
+title: "GitHub"
 sidebar_position: 2
 description: Config UI instruction for GitHub
 ---
@@ -120,7 +120,8 @@ If you're using GitHub Action to conduct `deployments`, please select "Detect De
 - Deployment: A GitHub Action job with a name that matches the given regEx will be considered as a deployment.
 - Production: A GitHub Action job with a name that matches the given regEx will be considered a job in the production environment.
 
-A GitHub workflow run has many jobs. Each GitHub workflow run is converted to a cicd_pipeline in the domain layer and each GitHub Action job is converted to a cicd_task in the domain layer.
+A GitHub workflow run has many jobs. Each GitHub workflow run is converted to a 
+cicd_pipeline in the domain layer and each GitHub Action job is converted to a cicd_task in the domain layer.
 ![github-action-run](/img/ConfigUI/github-action-run.png)
 ![github-action-job](/img/ConfigUI/github-action-job.png)
 
diff --git a/versioned_docs/version-v0.15/UserManuals/ConfigUI/GitLab.md b/versioned_docs/version-v0.15/Configuration/GitLab.md
similarity index 99%
rename from versioned_docs/version-v0.15/UserManuals/ConfigUI/GitLab.md
rename to versioned_docs/version-v0.15/Configuration/GitLab.md
index f1db518f2b..69558b2974 100644
--- a/versioned_docs/version-v0.15/UserManuals/ConfigUI/GitLab.md
+++ b/versioned_docs/version-v0.15/Configuration/GitLab.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring GitLab"
+title: "GitLab"
 sidebar_position: 3
 description: Config UI instruction for GitLab
 ---
diff --git a/docs/UserManuals/ConfigUI/Jenkins.md b/versioned_docs/version-v0.15/Configuration/Jenkins.md
similarity index 99%
rename from docs/UserManuals/ConfigUI/Jenkins.md
rename to versioned_docs/version-v0.15/Configuration/Jenkins.md
index 999a9e04c9..45a301381a 100644
--- a/docs/UserManuals/ConfigUI/Jenkins.md
+++ b/versioned_docs/version-v0.15/Configuration/Jenkins.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring Jenkins"
+title: "Jenkins"
 sidebar_position: 5
 description: Config UI instruction for Jenkins
 ---
diff --git a/versioned_docs/version-v0.15/UserManuals/ConfigUI/Jira.md b/versioned_docs/version-v0.15/Configuration/Jira.md
similarity index 99%
rename from versioned_docs/version-v0.15/UserManuals/ConfigUI/Jira.md
rename to versioned_docs/version-v0.15/Configuration/Jira.md
index f9aaf2683a..f0d4732747 100644
--- a/versioned_docs/version-v0.15/UserManuals/ConfigUI/Jira.md
+++ b/versioned_docs/version-v0.15/Configuration/Jira.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring Jira"
+title: "Jira"
 sidebar_position: 4
 description: Config UI instruction for Jira
 ---
diff --git a/docs/UserManuals/ConfigUI/Tapd.md b/versioned_docs/version-v0.15/Configuration/Tapd.md
similarity index 97%
rename from docs/UserManuals/ConfigUI/Tapd.md
rename to versioned_docs/version-v0.15/Configuration/Tapd.md
index c65270d449..cf62019b0f 100644
--- a/docs/UserManuals/ConfigUI/Tapd.md
+++ b/versioned_docs/version-v0.15/Configuration/Tapd.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring TAPD(Beta)"
+title: "TAPD(Beta)"
 sidebar_position: 6
 description: Config UI instruction for Tapd
 ---
diff --git a/versioned_docs/version-v0.15/UserManuals/TeamConfiguration.md b/versioned_docs/version-v0.15/Configuration/TeamConfiguration.md
similarity index 100%
rename from versioned_docs/version-v0.15/UserManuals/TeamConfiguration.md
rename to versioned_docs/version-v0.15/Configuration/TeamConfiguration.md
diff --git a/docs/UserManuals/ConfigUI/Tutorial.md b/versioned_docs/version-v0.15/Configuration/Tutorial.md
similarity index 100%
rename from docs/UserManuals/ConfigUI/Tutorial.md
rename to versioned_docs/version-v0.15/Configuration/Tutorial.md
diff --git a/docs/UserManuals/ConfigUI/Zentao.md b/versioned_docs/version-v0.15/Configuration/Zentao.md
similarity index 97%
rename from docs/UserManuals/ConfigUI/Zentao.md
rename to versioned_docs/version-v0.15/Configuration/Zentao.md
index d8cfde289a..316e0dea1c 100644
--- a/docs/UserManuals/ConfigUI/Zentao.md
+++ b/versioned_docs/version-v0.15/Configuration/Zentao.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring Zentao(Beta)"
+title: "Zentao(Beta)"
 sidebar_position: 6
 description: Config UI instruction for Zentao
 ---
diff --git a/docs/UserManuals/_category_.json b/versioned_docs/version-v0.15/Configuration/_category_.json
similarity index 54%
rename from docs/UserManuals/_category_.json
rename to versioned_docs/version-v0.15/Configuration/_category_.json
index 23ce768a59..96a3608ba7 100644
--- a/docs/UserManuals/_category_.json
+++ b/versioned_docs/version-v0.15/Configuration/_category_.json
@@ -1,8 +1,8 @@
 {
-  "label": "User Manuals",
+  "label": "Configuration",
   "position": 3,
   "link":{
     "type": "generated-index",
-    "slug": "UserManuals"
+    "slug": "Configuration"
   }
 }
diff --git a/versioned_docs/version-v0.15/UserManuals/ConfigUI/webhook.md b/versioned_docs/version-v0.15/Configuration/webhook.md
similarity index 98%
rename from versioned_docs/version-v0.15/UserManuals/ConfigUI/webhook.md
rename to versioned_docs/version-v0.15/Configuration/webhook.md
index 9616feab99..97540285bb 100644
--- a/versioned_docs/version-v0.15/UserManuals/ConfigUI/webhook.md
+++ b/versioned_docs/version-v0.15/Configuration/webhook.md
@@ -1,5 +1,5 @@
 ---
-title: "Configuring Incoming Webhook"
+title: "Incoming Webhook"
 sidebar_position: 7
 description: Config UI instruction for Webhook
 ---
diff --git a/docs/UserManuals/DORA.md b/versioned_docs/version-v0.15/DORA.md
similarity index 96%
rename from docs/UserManuals/DORA.md
rename to versioned_docs/version-v0.15/DORA.md
index 81ac826b2b..8d3b9e9126 100644
--- a/docs/UserManuals/DORA.md
+++ b/versioned_docs/version-v0.15/DORA.md
@@ -1,6 +1,6 @@
 ---
 title: "DORA"
-sidebar_position: 7
+sidebar_position: 4
 description: >
   DORA Metrics
 ---
@@ -44,7 +44,7 @@ You can set up DORA metrics in DevLake in a few steps:
 
 DevLake now supports Jenkins, GitHub Action and GitLabCI as data sources for `deployments` data; Jira, GitHub issues, and TAPD as the sources for `incidents` data; Github PRs, GitLab MRs as the sources for `changes` data.
 
-If your CI/CD tools are not listed on the [Supported Data Sources](https://devlake.apache.org/docs/SupportedDataSources) page, have no fear! DevLake provides incoming webhooks to push your `deployments` data to DevLake. The webhook configuration doc can be found [here](https://devlake.apache.org/docs/UserManuals/ConfigUI/webhook/).
+If your CI/CD tools are not listed on the [Supported Data Sources](https://devlake.apache.org/docs/SupportedDataSources) page, have no fear! DevLake provides incoming webhooks to push your `deployments` data to DevLake. The webhook configuration doc can be found [here](https://devlake.apache.org/docs/Configuration/webhook/).
 
 
 ## A real-world example
@@ -86,7 +86,7 @@ In the next section, we'll demonstrate how to configure DevLake to implement DOR
 6. Choose sync frequency, click 'Save and Run Now' to start data collection. The time to completion varies by data source and depends on the volume of data.
 ![](https://i.imgur.com/zPkfzGr.png)
 
-For more details, please refer to our [blueprint manuals](https://devlake.apache.org/docs/UserManuals/ConfigUI/Tutorial).
+For more details, please refer to our [blueprint manuals](https://devlake.apache.org/docs/Configuration/Tutorial).
 
 ### Collect CircleCI data via `webhook`
 
@@ -144,7 +144,7 @@ Using CircleCI as an example, we demonstrate how to actively push data to DevLak
         - build
         - deploy
   ```
-  If you have set a [username/password](https://devlake.apache.org/docs/UserManuals/Authentication) for Config UI, you need to add them to the curl to register a deployment:
+  If you have set a [username/password](GettingStarted/Authentication.md) for Config UI, you need to add them to the curl to register a deployment:
 
   ```
   curl https://sample-url.com/api/plugins/webhook/1/deployments -X 'POST' -u 'username:password' -d '{
@@ -172,7 +172,7 @@ For a breakdown of each metric's SQL query, please refer to the corresponding me
   - [Median Time to Restore Service](https://devlake.apache.org/docs/Metrics/MTTR)
   - [Change Failure Rate](https://devlake.apache.org/docs/Metrics/CFR)
 
-If you aren't familiar with Grafana, please refer to our [Grafana doc](./Dashboards/GrafanaUserGuide.md), or jump into Slack for help.
+If you aren't familiar with Grafana, please refer to our [Grafana doc](Configuration/Dashboards/GrafanaUserGuide.md), or jump into Slack for help.
 
 <br/>
 
diff --git a/versioned_docs/version-v0.15/DataModels/DevLakeDomainLayerSchema.md b/versioned_docs/version-v0.15/DataModels/DevLakeDomainLayerSchema.md
index 5450c74868..78c0539ec8 100644
--- a/versioned_docs/version-v0.15/DataModels/DevLakeDomainLayerSchema.md
+++ b/versioned_docs/version-v0.15/DataModels/DevLakeDomainLayerSchema.md
@@ -498,7 +498,7 @@ A cicd_task is a single job of ci/cd.
 
 ### Project Metric Entities
 
-#### project_pr_metrics 
+#### project_pr_metrics
 
 | **field** | **type** | **length** | **description**                                                                        | **key** |
 | :-------- | :-------- |:-----------|:---------------------------------------------------------------------------------------| :-------- |
@@ -666,7 +666,7 @@ import "github.com/apache/incubator-devlake/models/domainlayer/domaininfo"
 
 domaininfo := domaininfo.GetDomainTablesInfo()
 for _, table := range domaininfo {
-  // do something
+// do something
 }
 ```
 
diff --git a/versioned_docs/version-v0.15/DeveloperManuals/DeveloperSetup.md b/versioned_docs/version-v0.15/DeveloperManuals/DeveloperSetup.md
index 064af5109d..b228880a1a 100644
--- a/versioned_docs/version-v0.15/DeveloperManuals/DeveloperSetup.md
+++ b/versioned_docs/version-v0.15/DeveloperManuals/DeveloperSetup.md
@@ -23,7 +23,7 @@ The following guide will walk through how to run DevLake's frontend (`config-ui`
 1. Navigate to where you would like to install this project and clone the repository:
 
    ```sh
-   git clone https://github.com/apache/incubator-devlake
+   git clone https://github.com/apache/incubator-devlake.git
    cd incubator-devlake
    ```
 
@@ -34,7 +34,9 @@ The following guide will walk through how to run DevLake's frontend (`config-ui`
 3. Install Go packages
 
     ```sh
+    cd backend
 	go get
+    cd ..
     ```
 
 4. Copy the sample config file to new local file:
@@ -67,7 +69,7 @@ The following guide will walk through how to run DevLake's frontend (`config-ui`
     For common errors, please see [Troubleshooting](#troubleshotting).
 
 8.  Config UI is running at `localhost:4000`
-    - For how to use Config UI, please refer to our [tutorial](UserManuals/ConfigUI/Tutorial.md)
+    - For how to use Config UI, please refer to our [tutorial](Configuration/Tutorial.md)
 
 ## Running Tests
 
@@ -97,7 +99,7 @@ All DevLake APIs (core service + plugin API) are documented with swagger. To see
 
 To access Grafana, click *View Dashboards* button in the top left corner of Config UI, or visit `localhost:3002` (username: `admin`, password: `admin`).
 
-For provisioning, customizing, and creating dashboards, please refer to our [Grafana Doc](../UserManuals/Dashboards/GrafanaUserGuide.md).
+For provisioning, customizing, and creating dashboards, please refer to our [Grafana Doc](../Configuration/Dashboards/GrafanaUserGuide.md).
 
 
 ## Troubleshooting
diff --git a/versioned_docs/version-v0.15/DeveloperManuals/UnitTest.md b/versioned_docs/version-v0.15/DeveloperManuals/UnitTest.md
new file mode 100644
index 0000000000..b7599dd26e
--- /dev/null
+++ b/versioned_docs/version-v0.15/DeveloperManuals/UnitTest.md
@@ -0,0 +1,42 @@
+---
+title: "UnitTest Test Guide"
+description: >
+  The steps to write UnitTest tests for plugins.
+---
+
+# Introduction of UnitTest 
+
+A unit test is a type of software testing that tests individual units or components of a software application. The goal of unit testing is to validate that each unit of the software performs as expected. Unit tests are typically written by developers as they work on the code, to ensure that the code they are writing is correct and behaves as intended.
+
+Unit tests are automated and are typically written in the same programming language as the code being tested. They are usually run as part of a continuous integration process, ensuring that changes to the codebase don't break existing functionality.
+
+Unit tests are typically small and focus on a specific function or method of the code. They are usually designed to run quickly and in isolation, so that any issues that are discovered can be easily traced back to the specific code that is causing the problem.
+
+# How to write UnitTest for golang
+
+Here are some resources for writing UnitTest for golang:
+
+- [Add a test - The Go Programming Language](https://go.dev/doc/tutorial/add-a-test)
+
+- [How To Write Unit Tests in Go | DigitalOcean](https://www.digitalocean.com/community/tutorials/how-to-write-unit-tests-in-go-using-go-test-and-the-testing-package)
+
+
+# Test case examples 
+
+- [Source code](https://github.com/apache/incubator-devlake/blob/243cc8a80aa5b37828e2a142ac9f7e3269b7e1dc/backend/core/migration/migrator_test.go)
+
+# Recommended Libraries for writing UnitTest cases
+
+- [Library-1](https://github.com/stretchr/testify/tree/master/assert)
+- [Library-2](https://github.com/stretchr/testify/tree/master/mock)
+
+
+
+
+
+
+
+
+
+
+
diff --git a/versioned_docs/version-v0.15/GettingStarted/DockerComposeSetup.md b/versioned_docs/version-v0.15/GettingStarted/DockerComposeSetup.md
index 7c592a85f2..00c2f0a8d6 100644
--- a/versioned_docs/version-v0.15/GettingStarted/DockerComposeSetup.md
+++ b/versioned_docs/version-v0.15/GettingStarted/DockerComposeSetup.md
@@ -22,11 +22,11 @@ sidebar_position: 1
 ## Collect data and view dashboards
 
 1. Visit `config-ui` at `http://localhost:4000` in your browser to configure DevLake and collect data.
-   - Please follow the [tutorial](UserManuals/ConfigUI/Tutorial.md)
+   - Please follow the [tutorial](Configuration/Tutorial.md)
    - `devlake` container takes a while to fully boot up. If `config-ui` complains about API being unreachable, please wait a few seconds and refresh the page.
 2. To view dashboards, click *View Dashboards* button in the top left corner, or visit `localhost:3002` (username: `admin`, password: `admin`).
    - We use [Grafana](https://grafana.com/) to visualize the DevOps [data](/Overview/SupportedDataSources.md) and build dashboards.
-   - For how to customize and provision dashboards, please see our [Grafana doc](../UserManuals/Dashboards/GrafanaUserGuide.md).
+   - For how to customize and provision dashboards, please see our [Grafana doc](../Configuration/Dashboards/GrafanaUserGuide.md).
 
 
 ## Upgrade to a newer version
diff --git a/versioned_docs/version-v0.15/GettingStarted/KubernetesSetup.md b/versioned_docs/version-v0.15/GettingStarted/KubernetesSetup.md
deleted file mode 100644
index 64a8bf966e..0000000000
--- a/versioned_docs/version-v0.15/GettingStarted/KubernetesSetup.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-title: "Install via Kubernetes"
-description: >
-  The steps to install Apache DevLake via Kubernetes
-sidebar_position: 3
----
-
-:::caution
-
-We highly recommend the [helm approach](./HelmSetup.md), this page is for Advanced Installation only
-
-:::
-
-We provide a sample [k8s-deploy.yaml](https://github.com/apache/incubator-devlake/blob/main/devops/deployment/k8s/k8s-deploy.yaml) to help deploy DevLake to Kubernetes
-
-[k8s-deploy.yaml](https://github.com/apache/incubator-devlake/blob/main/devops/deployment/k8s/k8s-deploy.yaml) will create a namespace `devlake` on your k8s cluster, and use `nodePort 30004` for `config-ui`,  `nodePort 30002` for `grafana` dashboards. If you would like to use a specific version of Apache DevLake, please update the image tag of `grafana`, `devlake` and `config-ui` deployments.
-
-## Step-by-step guide
-
-1. Download [k8s-deploy.yaml](https://github.com/apache/incubator-devlake/blob/main/devops/deployment/k8s/k8s-deploy.yaml)
-2. Customize the settings (`devlake-config` config map):
-   - Settings shared between `grafana` and `mysql`
-     * `MYSQL_ROOT_PASSWORD`: set root password for `mysql`
-     * `MYSQL_USER`: shared between `mysql` and `grafana`
-     * `MYSQL_PASSWORD`: shared between `mysql` and `grafana`
-     * `MYSQL_DATABASE`: shared between `mysql` and `grafana`
-   - Settings used by `grafana`
-     * `MYSQL_URL`: set MySQL URL for `grafana` in `$HOST:$PORT` format
-     * `GF_SERVER_ROOT_URL`: Public URL to the `grafana`
-   - Settings used by `config-ui`:
-     * `GRAFANA_ENDPOINT`: FQDN of grafana which can be reached within k8s cluster, normally you don't need to change it unless namespace was changed
-     * `DEVLAKE_ENDPOINT`: FQDN of devlake which can be reached within k8s cluster, normally you don't need to change it unless namespace was changed
-     * `ADMIN_USER`/`ADMIN_PASS`: Not required, but highly recommended
-   - Settings used by `devlake`:
-     * `DB_URL`: update this value if  `MYSQL_USER`, `MYSQL_PASSWORD` or `MYSQL_DATABASE` were changed
-     * `LOGGING_DIR`: the directory of logs for Devlake - you likely don't need to change it.
-3. The `devlake` deployment store its configuration in `/app/.env`. In our sample yaml, we use `hostPath` volume, so please make sure directory `/var/lib/devlake` exists on your k8s workers, or employ other techniques to persist `/app/.env` file. Please do NOT mount the entire `/app` directory, because plugins are located in `/app/bin` folder.
-4. Finally, execute the following command and DevLake should be up and running:
-   ```sh
-   kubectl apply -f k8s-deploy.yaml
-   ```
-
-
-## FAQ
-
-1. Can I use a managed Cloud database service instead of running database in docker?
-
-   Yes, it only takes a few changes in the sample yaml file. Below we'll use MySQL on AWS RDS as an example.
-   1. (Optional) Create a MySQL instance on AWS RDS following this [doc](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.html), skip this step if you'd like to use an existing instance
-   2. Remove the `mysql` deployment and service sections from `k8s-deploy.yaml`
-   3. Update `devlake-config` configmap according to your RDS instance setup:
-     * `MYSQL_ROOT_PASSWORD`: remove this line
-     * `MYSQL_USER`: use your RDS instance's master username
-     * `MYSQL_PASSWORD`: use your RDS instance's password
-     * `MYSQL_DATABASE`: use your RDS instance's DB name, you may need to create a database first with `CREATE DATABASE <DB name>;`
-     * `MYSQL_URL`: set this for `grafana` in `$HOST:$PORT` format, where $HOST and $PORT should be your RDS instance's endpoint and port respectively
-     * `DB_URL`: update the connection string with your RDS instance's info for `devlake`
-
-
-## Troubleshooting
-
-If you run into any problem, please check the [Troubleshooting](/Troubleshooting/Installation.md) or [create an issue](https://github.com/apache/incubator-devlake/issues)
diff --git a/versioned_docs/version-v0.15/GettingStarted/RainbondSetup.md b/versioned_docs/version-v0.15/GettingStarted/RainbondSetup.md
deleted file mode 100644
index fde8836547..0000000000
--- a/versioned_docs/version-v0.15/GettingStarted/RainbondSetup.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: "Install via Rainbond"
-sidebar_position: 7
-description: >
-  The steps to install DevLake in Rainbond.
----
-
-This tutorial is for users who don't know Kubernetes. [Rainbond](https://www.rainbond.com/) is cloud native application management platform built on Kubernetes, easy to use, no need to know Kubernetes knowledge, easily deploy applications in Kubernetes. 
-
-Install DevLake in Rainbond is the easiest way to get started.
-
-## Requirements
-
-* Rainbond 5.8.x or above
-
-## Deploy DevLake
-
-1.Login to Rainbond console, click `Market` in the left menu, switch to open source app store, and search `DevLake` in the search box, and click `Install` button.
-
-![](/img/GettingStarted/install-devlake.jpg)
-
-2.fill in the installation information, and click `Confirm` button startup install.
-  * Team: select a team or create a new team
-  * Cluster: select a cluster
-  * Application: select an application or create a new application
-  * Version: select a version
-
-3.Moment later, DevLake will be installed successfully, via the `Access` button to access DevLake.
-
-![](/img/GettingStarted/topology-devlake.jpg)
-
-## Next Step
-
-Creating a Blueprint, ref [Tutorial](/docs/UserManuals/ConfigUI/Tutorial#creating-a-blueprint)
-
-
-## Troubleshooting
-
-If you run into any problem, please check the [Troubleshooting](/Troubleshooting/Installation.md) or [create an issue](https://github.com/apache/incubator-devlake/issues)
diff --git a/versioned_docs/version-v0.15/GettingStarted/TemporalSetup.md b/versioned_docs/version-v0.15/GettingStarted/TemporalSetup.md
deleted file mode 100644
index 1d6ce844a5..0000000000
--- a/versioned_docs/version-v0.15/GettingStarted/TemporalSetup.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: "Install via Temporal"
-sidebar_position: 6
-description: >
-  The steps to install DevLake in Temporal mode.
----
-
-
-Normally, DevLake would execute pipelines on a local machine (we call it `local mode`), it is sufficient most of the time. However, when you have too many pipelines that need to be executed in parallel, it can be problematic, as the horsepower and throughput of a single machine is limited.
-
-`temporal mode` was added to support distributed pipeline execution, you can fire up arbitrary workers on multiple machines to carry out those pipelines in parallel to overcome the limitations of a single machine.
-
-But, be careful, many API services like JIRA/GITHUB have a request rate limit mechanism. Collecting data in parallel against the same API service with the same identity would most likely hit such limit.
-
-## How it works
-
-1. DevLake Server and Workers connect to the same temporal server by setting up `TEMPORAL_URL`
-2. DevLake Server sends a `pipeline` to the temporal server, and one of the Workers pick it up and execute it
-
-
-**IMPORTANT: This feature is in early stage of development. Please use with caution**
-
-
-## Temporal Demo
-
-### Requirements
-
-- [Docker](https://docs.docker.com/get-docker)
-- [docker-compose](https://docs.docker.com/compose/install/)
-- [temporalio](https://temporal.io/)
-
-### How to setup
-
-1. Clone and fire up the [temporalio](https://temporal.io/) services
-2. Clone this repo, and fire up DevLake with command `docker-compose -f deployment/temporal/docker-compose-temporal.yml up -d`
-
-
-## Troubleshooting
-
-If you run into any problem, please check the [Troubleshooting](/Troubleshooting/Installation.md) or [create an issue](https://github.com/apache/incubator-devlake/issues)
diff --git a/versioned_docs/version-v0.15/Overview/Introduction.md b/versioned_docs/version-v0.15/Overview/Introduction.md
index 6bb1194941..9bdb41cd58 100755
--- a/versioned_docs/version-v0.15/Overview/Introduction.md
+++ b/versioned_docs/version-v0.15/Overview/Introduction.md
@@ -16,7 +16,7 @@ Apache DevLake is designed for developer teams looking to make better sense of t
 
 ## How do I use DevLake?
 ### 1. Set up DevLake
-You can easily set up Apache DevLake by following our step-by step instructions for [Docker Compose setup](../GettingStarted/DockerComposeSetup.md) or [Kubernetes setup](../GettingStarted/KubernetesSetup.md).
+You can easily set up Apache DevLake by following our step-by step instructions for [Docker Compose setup](../GettingStarted/DockerComposeSetup.md) or [Helm setup](../GettingStarted/HelmSetup.md).
 
 ### 2. Create a Blueprint
 The DevLake Configuration UI will guide you through the process (a Blueprint) to define the data connections, data scope, transformation and sync frequency of the data you wish to collect.
diff --git a/versioned_docs/version-v0.15/Overview/SupportedDataSources.md b/versioned_docs/version-v0.15/Overview/SupportedDataSources.md
index 5d0669f0eb..20e6fbea3c 100644
--- a/versioned_docs/version-v0.15/Overview/SupportedDataSources.md
+++ b/versioned_docs/version-v0.15/Overview/SupportedDataSources.md
@@ -29,7 +29,7 @@ Apache DevLake(incubating) supports the following data sources. The data from ea
 
 This table shows the entities collected by each plugin. Domain layer entities in this table are consistent with the entities [here](/DataModels/DevLakeDomainLayerSchema.md).
 ✅ : Collect by default.
-💪 : Collect not by default. You need to add the corresponding subtasks to collect these entities in the [advanced mode](../UserManuals/ConfigUI/AdvancedMode.md).
+💪 : Collect not by default. You need to add the corresponding subtasks to collect these entities in the [advanced mode](../Configuration/AdvancedMode.md).
 
 | Domain Layer Entities                                                                       | ae  | dora | gitextractor | incoming webhook | github | gitlab | jenkins | jira | refdiff | tapd |
 | ------------------------------------------------------------------------------------------- | --- | ---- | ------------ | ---------------- | ------ | ------ | ------- | ---- | ------- | ---- |
diff --git a/versioned_docs/version-v0.15/Plugins/bitbucket.md b/versioned_docs/version-v0.15/Plugins/bitbucket.md
index 97e7f2025d..b5a2979391 100644
--- a/versioned_docs/version-v0.15/Plugins/bitbucket.md
+++ b/versioned_docs/version-v0.15/Plugins/bitbucket.md
@@ -35,8 +35,8 @@ Metrics that can be calculated based on the data collected from bitbucket:
 
 ## Configuration
 
-- Configuring Bitbucket via [Config UI](/UserManuals/ConfigUI/BitBucket.md)
-- Configuring Bitbucket via Config UI's [advanced mode](/UserManuals/ConfigUI/AdvancedMode.md#9-BitBucket).
+- Configuring Bitbucket via [Config UI](/Configuration/BitBucket.md)
+- Configuring Bitbucket via Config UI's [advanced mode](/Configuration/AdvancedMode.md#9-BitBucket).
 
 ## API Sample Request
 
diff --git a/versioned_docs/version-v0.15/Plugins/github.md b/versioned_docs/version-v0.15/Plugins/github.md
index f8874548fb..a57adee6bb 100644
--- a/versioned_docs/version-v0.15/Plugins/github.md
+++ b/versioned_docs/version-v0.15/Plugins/github.md
@@ -56,8 +56,8 @@ Metrics that can be calculated based on the data collected from GitHub:
 
 ## Configuration
 
-- Configuring GitHub via [Config UI](/UserManuals/ConfigUI/GitHub.md)
-- Configuring GitHub via Config UI's [advanced mode](/UserManuals/ConfigUI/AdvancedMode.md#1-github).
+- Configuring GitHub via [Config UI](/Configuration/GitHub.md)
+- Configuring GitHub via Config UI's [advanced mode](/Configuration/AdvancedMode.md#1-github).
 
 ## API Sample Request
 
diff --git a/versioned_docs/version-v0.15/Plugins/gitlab.md b/versioned_docs/version-v0.15/Plugins/gitlab.md
index f4b5663b7a..03dc16925a 100644
--- a/versioned_docs/version-v0.15/Plugins/gitlab.md
+++ b/versioned_docs/version-v0.15/Plugins/gitlab.md
@@ -49,8 +49,8 @@ Metrics that can be calculated based on the data collected from GitLab:
 
 ## Configuration
 
-- Configuring GitLab via [config-ui](/UserManuals/ConfigUI/GitLab.md).
-- Configuring GitLab via Config UI's [advanced mode](/UserManuals/ConfigUI/AdvancedMode.md#2-gitlab).
+- Configuring GitLab via [config-ui](/Configuration/GitLab.md).
+- Configuring GitLab via Config UI's [advanced mode](/Configuration/AdvancedMode.md#2-gitlab).
 
 ## API Sample Request
 
diff --git a/versioned_docs/version-v0.15/Plugins/jenkins.md b/versioned_docs/version-v0.15/Plugins/jenkins.md
index 13ab302736..6c2fcfea0a 100644
--- a/versioned_docs/version-v0.15/Plugins/jenkins.md
+++ b/versioned_docs/version-v0.15/Plugins/jenkins.md
@@ -34,8 +34,8 @@ Metrics that can be calculated based on the data collected from Jenkins:
 
 ## Configuration
 
-- Configuring Jenkins via [Config UI](/UserManuals/ConfigUI/Jenkins.md)
-- Configuring Jenkins via Config UI's [advanced mode](/UserManuals/ConfigUI/AdvancedMode.md#3-jenkins).
+- Configuring Jenkins via [Config UI](/Configuration/Jenkins.md)
+- Configuring Jenkins via Config UI's [advanced mode](/Configuration/AdvancedMode.md#3-jenkins).
 
 ## API Sample Request
 
diff --git a/versioned_docs/version-v0.15/Plugins/jira.md b/versioned_docs/version-v0.15/Plugins/jira.md
index ea2ef56d72..88e72e3a1f 100644
--- a/versioned_docs/version-v0.15/Plugins/jira.md
+++ b/versioned_docs/version-v0.15/Plugins/jira.md
@@ -31,8 +31,8 @@ Metrics that can be calculated based on the data collected from Jira:
 
 ## Configuration
 
-- Configuring Jira via [config-ui](/UserManuals/ConfigUI/Jira.md).
-- Configuring Jira via Config UI's [advanced mode](/UserManuals/ConfigUI/AdvancedMode.md#4-jira).
+- Configuring Jira via [config-ui](/Configuration/Jira.md).
+- Configuring Jira via Config UI's [advanced mode](/Configuration/AdvancedMode.md#4-jira).
 
 ## API Sample Request
 
diff --git a/versioned_docs/version-v0.15/Plugins/refdiff.md b/versioned_docs/version-v0.15/Plugins/refdiff.md
index 01be58de5b..73f7ed1fb3 100644
--- a/versioned_docs/version-v0.15/Plugins/refdiff.md
+++ b/versioned_docs/version-v0.15/Plugins/refdiff.md
@@ -100,7 +100,7 @@ curl 'http://localhost:8080/pipelines' \
 
 ## How to use refdiff in DORA
 
-RefDiff can be called by the [DORA plugin](https://github.com/apache/incubator-devlake/tree/main/plugins/dora) to support the calculation of [DORA metrics](https://devlake.apache.org/docs/UserManuals/DORA). RefDiff has a subtask called 'calculateProjectDeploymentCommitsDiff'. This subtask takes the `project_name` from task options to calculate the commits diff between two consecutive deployments in this project. That is to say, refdiff will generate the relationship between `deployed com [...]
+RefDiff can be called by the [DORA plugin](https://github.com/apache/incubator-devlake/tree/main/plugins/dora) to support the calculation of [DORA metrics](https://devlake.apache.org/docs/DORA). RefDiff has a subtask called 'calculateProjectDeploymentCommitsDiff'. This subtask takes the `project_name` from task options to calculate the commits diff between two consecutive deployments in this project. That is to say, refdiff will generate the relationship between `deployed commit(s)` and  [...]
 
 ```shell
 curl 'http://localhost:8080/pipelines' \
diff --git a/versioned_docs/version-v0.15/Plugins/tapd.md b/versioned_docs/version-v0.15/Plugins/tapd.md
index 691f7a930d..d4fa912548 100644
--- a/versioned_docs/version-v0.15/Plugins/tapd.md
+++ b/versioned_docs/version-v0.15/Plugins/tapd.md
@@ -20,5 +20,5 @@ Metrics that can be calculated based on the data collected from Tapd:
 
 ## Configuration
 
-- Configuring Tapd via [config-ui](/UserManuals/ConfigUI/Tapd.md).
-- Configuring Tapd via Config UI's [advanced mode](/UserManuals/ConfigUI/AdvancedMode.md#6-tapd).
+- Configuring Tapd via [config-ui](/Configuration/Tapd.md).
+- Configuring Tapd via Config UI's [advanced mode](/Configuration/AdvancedMode.md#6-tapd).
diff --git a/versioned_docs/version-v0.15/Plugins/webhook.md b/versioned_docs/version-v0.15/Plugins/webhook.md
index e11d6dd84f..3d180f29dd 100644
--- a/versioned_docs/version-v0.15/Plugins/webhook.md
+++ b/versioned_docs/version-v0.15/Plugins/webhook.md
@@ -33,7 +33,7 @@ Metrics that can be calculated based on the data collected from Incoming Webhook
 
 ## Configuration
 
-- Configuring Incoming Webhooks via [Config UI](/UserManuals/ConfigUI/webhook.md)
+- Configuring Incoming Webhooks via [Config UI](/Configuration/webhook.md)
 
 ## API Sample Request
 
@@ -67,7 +67,7 @@ curl https://sample-url.com/api/plugins/webhook/1/deployments -X 'POST' -d '{
   }'
 ```
 
-If you have set a [username/password](https://devlake.apache.org/docs/UserManuals/Authentication) for Config UI, you'll need to add them to the curl command to register a `deployment`:
+If you have set a [username/password](GettingStarted/Authentication.md) for Config UI, you'll need to add them to the curl command to register a `deployment`:
 
 ```
 curl https://sample-url.com/api/plugins/webhook/1/deployments -X 'POST' -u 'username:password' -d '{
diff --git a/versioned_docs/version-v0.15/Plugins/zentao.md b/versioned_docs/version-v0.15/Plugins/zentao.md
index 72d157ae4d..43d6398d49 100644
--- a/versioned_docs/version-v0.15/Plugins/zentao.md
+++ b/versioned_docs/version-v0.15/Plugins/zentao.md
@@ -20,5 +20,5 @@ Metrics that can be calculated based on the data collected from Zentao:
 
 ## Configuration
 
-- Configuring Zentao via [config-ui](/UserManuals/ConfigUI/Zentao.md).
-- Configuring Zentao via Config UI's [advanced mode](/UserManuals/ConfigUI/AdvancedMode.md#8-zentao).
+- Configuring Zentao via [config-ui](/Configuration/Zentao.md).
+- Configuring Zentao via Config UI's [advanced mode](/Configuration/AdvancedMode.md#8-zentao).
diff --git a/versioned_docs/version-v0.15/Troubleshooting/Configuration.md b/versioned_docs/version-v0.15/Troubleshooting/Configuration.md
index e1978a4525..fbe71e76c3 100644
--- a/versioned_docs/version-v0.15/Troubleshooting/Configuration.md
+++ b/versioned_docs/version-v0.15/Troubleshooting/Configuration.md
@@ -10,7 +10,7 @@ description: >
 | Error code | An example                  | Causes | Solutions |
 | ---------- | ----------------------------|--------|-----------|
 | 429        | subtask collectAPiPipelines ended unexpectedly caused: Error waiting for async Collector execution caused by: retry exceeded 3 times calling projects/{projectId}/pipelines {429} | This error exmaple is caused by GitLab's Pipeline APIs. These APIs are implemented via Cloudflare, which is different from other GitLab entities. | Two ways: <br/> - Enable `fixed rate limit` in the GitLab connection, lower the API rates to 2,000. If it works, you can try increase the rates to ac [...]
-| 403        | error: preparing task data for gitextractor caused by: unexpected http status code: 403 | This is usually caused by the permission of your tokens. For example, if you're using an un-supported auth method, or using a token without ticking permissions to certain entities you want to collect. | Find the supported authentication methods and token permissions that should be selected in the corresponding plugin's Config UI manuals, for example, [configuring GitHub](/docs/UserMan [...]
+| 403        | error: preparing task data for gitextractor caused by: unexpected http status code: 403 | This is usually caused by the permission of your tokens. For example, if you're using an un-supported auth method, or using a token without ticking permissions to certain entities you want to collect. | Find the supported authentication methods and token permissions that should be selected in the corresponding plugin's Config UI manuals, for example, [configuring GitHub](/docs/Configu [...]
 | 1406       | subtask extractApiBuilds ended unexpectedly caused by: error adding the result to batch caused by: Error 1406: Data too long for column 'full_display_name' at row 138. See bug [#4053](https://github.com/apache/incubator-devlake/issues/4053) | This is usually thrown by MySQL because a certain value is too long | A work-around is to manually change the field length to varchar(255) or longer in MySQL. Also, please put up a [bug](https://github.com/apache/incubator-devlake/iss [...]
 
 
diff --git a/versioned_docs/version-v0.15/UserManuals/ConfigUI/Tutorial.md b/versioned_docs/version-v0.15/UserManuals/ConfigUI/Tutorial.md
deleted file mode 100644
index 00f29ee5e1..0000000000
--- a/versioned_docs/version-v0.15/UserManuals/ConfigUI/Tutorial.md
+++ /dev/null
@@ -1,93 +0,0 @@
----
-title: "Tutorial"
-sidebar_position: 1
-description: Config UI instruction
----
-
-## Overview
-The Apache DevLake Config UI allows you to configure the data you wish to collect through a graphical user interface. Visit config-ui at `http://localhost:4000`.
-
-## Create a Project
-Starting from v0.15, DevLake has introduced the Project feature to alllow viewing project-based metrics, such as DORA. To create a project, simply go to Project on the main navigation, click on the "+ New Project" button and fill out the info on the dialog below.
-
-![img](/img/ConfigUI/BlueprintCreation-v0.15/project.png)
-
-## Create a Blueprint
-
-### Introduction
-A Blueprint is a plan that covers all the work to get your raw data ready for query and metric computation in the dashboards. Blueprints can either be used to collect data for a Project or be used alone without being dependent on any Project. To use the Blueprint within a Project, you can create the Blueprint once a Project is created; to use it alone, you can create the Blueprint from the Blueprint page from the main navigation. 
-
-For either usage of the Blueprint, creating it consists of four steps:
-
-1. Adding Data Connections: Add new or select from existing data connections for the data you wish to collect
-2. Setting Data Scope: Select the scope of data (e.g. GitHub projects or Jira boards) for your data connections
-3. Adding Transformations (Optional): Add transformation rules for the data scope you have selected in order to view corresponding metrics
-4. Setting the Sync Policies: Set the sync frequency, time range and the skip-on-fail option for your data
-
-### Step 1 - Add Data Connections
-There are two ways to add data connections to your Blueprint: adding them during the creation of a Blueprint and adding them separately on the Data Integrations page. There is no difference between these two ways.
-
-When adding data connections from the Blueprint, you can either create a new or select from existing data connections. 
-
-![img](/img/ConfigUI/BlueprintCreation-v0.15/step1.png)
-
-### Step 2 - Set Data Scope
-After adding data connections, click on "Next Step" and you will be prompted to select the data scope of each data connection. For instance, for a GitHub connection, you will need to select or enter the projects you wish to sync, and for Jira, you will need to select from your boards.
-
-![img](/img/ConfigUI/BlueprintCreation-v0.15/step2-1.png)
-![img](/img/ConfigUI/BlueprintCreation-v0.15/step2-2.png)
-
-### Step 3 - Add Transformations (Optional)
-This step is required for viewing certain metrics (e.g. Bug Age, Bug Count per 1k Lines of Code and DORA)in the pre-built dashboards that require data transformation. We highly recommend adding Transformations for your data for the best display of the metrics. but you can still view the basic metrics if you skip this step. 
-
-![img](/img/ConfigUI/BlueprintCreation-v0.15/step3-1.png)
-![img](/img/ConfigUI/BlueprintCreation-v0.15/step3-2.png)
-
-### Step 4 - Set the Sync Policies
-Time Filter: You can select the time range of the data you wish to sync to speed up the collection process.
-
-Frequency: You can choose how often you would like to sync your data in this step by selecting a sync frequency option or entering a cron code to specify your preferred schedule. 
-
-Running Policy: By default, the `Skip failed tasks` is checked to avoid losing all data when encountering a few bugs during data collection, when you are collecting a large volume of data, e.g. 10+ GitHub repositories, Jira boards, etc. For clarity, a task is a unit of a pipeline, an execution of a blueprint. By default, when a task is failed, the whole pipeline will fail and all the data that has been collected will be discarded. By skipping failed tasks, the pipeline will continue to r [...]
-
-![img](/img/ConfigUI/BlueprintCreation-v0.15/step4.png)
-
-### View the Blueprint Status and Download Logs for Historical Runs
-After setting up the Blueprint, you will be prompted to the Blueprint's status page, where you can track the progress of the current run and wait for it to finish before the dashboards become available. You can also view all historical runs of previously created Blueprints from the list on the Blueprint page.
-
-If you run into any errors, you can also download the pipeline logs and share them with us on Slack so that our developers can help you debug.
-
-![img](/img/ConfigUI/BlueprintEditing/blueprint-edit3.png)
-
-## Edit a Blueprint (Normal Mode)
-If you switch to the Configuration tab on the Blueprint detail page, you can see the settings of your Blueprint and edit them.
-
-In the current version, the Blueprint editing feature **allows** editing:
-- The Blueprint's name
-- The sync policies
-- The data scope of a connection
-- The data entities of the data scope
-- The transformation rules of any data scope
-
-and currently does **NOT allow**:
-- Adding or deleting connections of an existing Blueprint (will be available in the future)
-- Editing any connections
-
-Please note: 
-If you have created the Blueprint in the Normal mode, you will only be able to edit it in the Normal Mode; if you have created it in the Advanced Mode, please refer to [this guide](AdvancedMode.md#editing-a-blueprint-advanced-mode) for editing.
-
-![img](/img/ConfigUI/BlueprintEditing/blueprint-edit1.png)
-
-## Create and Manage Data Connections
-
-The Data Connections page allows you to view, create and manage all your data connections in one place.
-![img](/img/ConfigUI/BlueprintCreation-v0.15/connections.png)
-
-## Manage Transformations
-The Transformations page allows you to manage all your transformation rules.
-![img](/img/ConfigUI/BlueprintCreation-v0.15/transformations.png)
-
-
-## Troubleshooting
-
-If you run into any problem, please check [Troubleshooting](/Troubleshooting/Configuration.md), contact us on [Slack](https://join.slack.com/t/devlake-io/shared_invite/zt-17b6vuvps-x98pqseoUagM7EAmKC82xQ) or [create an issue](https://github.com/apache/incubator-devlake/issues).
diff --git a/versioned_docs/version-v0.15/UserManuals/ConfigUI/_category_.json b/versioned_docs/version-v0.15/UserManuals/ConfigUI/_category_.json
deleted file mode 100644
index 62f99d484f..0000000000
--- a/versioned_docs/version-v0.15/UserManuals/ConfigUI/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "label": "Config UI",
-  "position": 4
-}
diff --git a/versioned_docs/version-v0.15/UserManuals/Dashboards/_category_.json b/versioned_docs/version-v0.15/UserManuals/Dashboards/_category_.json
deleted file mode 100644
index 0db83c6e9b..0000000000
--- a/versioned_docs/version-v0.15/UserManuals/Dashboards/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "label": "Dashboards",
-  "position": 5
-}