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

VGalaxies pushed a commit to branch docusaurus-issue-103-preview
in repository https://gitbox.apache.org/repos/asf/hugegraph-doc.git

commit 5d29caba88aa12851e7decfa724603d50e950792
Author: VGalaxies <[email protected]>
AuthorDate: Tue May 5 12:04:35 2026 +0000

    docs: migrate website to Docusaurus
---
 .github/workflows/docusaurus.yml                   |  45 +++
 .github/workflows/hugo.yml                         |  58 ----
 .gitignore                                         |   3 +
 README.md                                          |  64 ++---
 content/cn/docs/clients/restful-api/_index.md      |   2 +-
 content/cn/docs/clients/restful-api/auth.md        |   2 +-
 content/cn/docs/clients/restful-api/edgelabel.md   |   2 +-
 content/cn/docs/clients/restful-api/graphs.md      |   4 +-
 content/cn/docs/clients/restful-api/gremlin.md     |   4 +-
 content/cn/docs/clients/restful-api/indexlabel.md  |   2 +-
 content/cn/docs/clients/restful-api/rebuild.md     |   6 +-
 content/cn/docs/clients/restful-api/vertexlabel.md |   2 +-
 content/cn/docs/config/config-guide.md             |   6 +-
 .../docs/quickstart/hugegraph/hugegraph-server.md  |   2 +-
 content/en/community/_index.md                     |   2 +-
 content/en/docs/clients/restful-api/_index.md      |   2 +-
 content/en/docs/clients/restful-api/auth.md        |   2 +-
 content/en/docs/clients/restful-api/edgelabel.md   |   2 +-
 content/en/docs/clients/restful-api/gremlin.md     |   4 +-
 content/en/docs/clients/restful-api/indexlabel.md  |   2 +-
 content/en/docs/clients/restful-api/rebuild.md     |   6 +-
 content/en/docs/clients/restful-api/vertexlabel.md |   2 +-
 content/en/docs/config/config-guide.md             |   2 +-
 .../docs/quickstart/hugegraph/hugegraph-server.md  |   2 +-
 docusaurus.config.js                               | 223 +++++++++++++++
 netlify.toml                                       |   5 +-
 package.json                                       |  46 ++--
 scripts/validate-build.js                          |  38 +++
 scripts/validate-content-inventory.js              |  40 +++
 scripts/validate-ui.js                             | 157 +++++++++++
 sidebars-cn.js                                     |   5 +
 sidebars-community-cn.js                           |   5 +
 sidebars-community.js                              |   5 +
 sidebars.js                                        |   5 +
 src/css/custom.css                                 | 304 +++++++++++++++++++++
 src/markdown/frontMatter.js                        |  81 ++++++
 src/pages/cn/index.js                              | 115 ++++++++
 src/pages/index.js                                 | 118 ++++++++
 src/sidebars/buildSidebars.js                      | 145 ++++++++++
 .../blog/images/images-server/agentic-abstract.png | Bin 0 -> 43130 bytes
 .../images/images-server/agentic-background.png    | Bin 0 -> 68171 bytes
 static/blog/images/images-server/agentic-frame.png | Bin 0 -> 96995 bytes
 .../blog/images/images-server/agentic-lifeline.svg |   1 +
 .../blog/images/images-server/agentic-pydantic.png | Bin 0 -> 18853 bytes
 .../images/images-server/agentic-scheduler.png     | Bin 0 -> 366031 bytes
 .../images/images-server/toplingdb-web-server.png  | Bin 0 -> 176351 bytes
 .../images/images-server/toplingdb-yaml-ref.png    | Bin 0 -> 99021 bytes
 static/docs/images/API-perf/v0.4.4/best.png        | Bin 0 -> 36328 bytes
 static/docs/images/API-perf/v0.4.4/cpu-memory.png  | Bin 0 -> 57282 bytes
 static/docs/images/API-perf/v0.4.4/ssd.png         | Bin 0 -> 58867 bytes
 .../docs/images/API-perf/v0.4.4/threads-batch.png  | Bin 0 -> 111282 bytes
 .../docs/images/API-perf/v0.4.4/threads-single.png | Bin 0 -> 117436 bytes
 .../API-perf/v0.5.6/cassandra/edge_batch.png       | Bin 0 -> 237802 bytes
 .../API-perf/v0.5.6/cassandra/edge_id_query.png    | Bin 0 -> 361191 bytes
 .../API-perf/v0.5.6/cassandra/edge_single.png      | Bin 0 -> 364710 bytes
 .../API-perf/v0.5.6/cassandra/vertex_batch.png     | Bin 0 -> 382379 bytes
 .../API-perf/v0.5.6/cassandra/vertex_id_query.png  | Bin 0 -> 578106 bytes
 .../API-perf/v0.5.6/cassandra/vertex_single.png    | Bin 0 -> 439086 bytes
 .../images/API-perf/v0.5.6/rocksdb/edge_batch.png  | Bin 0 -> 321570 bytes
 .../API-perf/v0.5.6/rocksdb/edge_id_query.png      | Bin 0 -> 383288 bytes
 .../images/API-perf/v0.5.6/rocksdb/edge_single.png | Bin 0 -> 403741 bytes
 .../API-perf/v0.5.6/rocksdb/vertex_batch.png       | Bin 0 -> 334702 bytes
 .../API-perf/v0.5.6/rocksdb/vertex_id_query.png    | Bin 0 -> 434422 bytes
 .../API-perf/v0.5.6/rocksdb/vertex_single.png      | Bin 0 -> 431661 bytes
 static/docs/images/demo-graph-model.png            | Bin 0 -> 68187 bytes
 static/docs/images/design/GraphCut.png             | Bin 0 -> 37174 bytes
 static/docs/images/design/PropertyGraph.png        | Bin 0 -> 126622 bytes
 static/docs/images/design/Self-loop.png            | Bin 0 -> 24915 bytes
 .../docs/images/design/architectural-component.png | Bin 0 -> 96645 bytes
 .../docs/images/design/architectural-overview.png  | Bin 0 -> 39763 bytes
 .../docs/images/design/architectural-revised.png   | Bin 0 -> 338402 bytes
 static/docs/images/design1-1.png                   | Bin 0 -> 114454 bytes
 static/docs/images/design1-2.png                   | Bin 0 -> 50288 bytes
 static/docs/images/design1-3.png                   | Bin 0 -> 37174 bytes
 static/docs/images/design1-5.png                   | Bin 0 -> 160775 bytes
 static/docs/images/design1-6.png                   | Bin 0 -> 414106 bytes
 static/docs/images/design4-1.png                   | Bin 0 -> 39763 bytes
 static/docs/images/design5-1.png                   | Bin 0 -> 96645 bytes
 static/docs/images/design5-2.png                   | Bin 0 -> 51385 bytes
 static/docs/images/design5-3.png                   | Bin 0 -> 38773 bytes
 static/docs/images/design5-4.png                   | Bin 0 -> 21405 bytes
 static/docs/images/design5-5.png                   | Bin 0 -> 37633 bytes
 static/docs/images/favicon.ico                     | Bin 0 -> 1150 bytes
 static/docs/images/gradio-config.png               | Bin 0 -> 115705 bytes
 static/docs/images/gradio-kg.png                   | Bin 0 -> 3931356 bytes
 static/docs/images/gradio-rag-1.png                | Bin 0 -> 32135 bytes
 static/docs/images/gradio-rag-2.png                | Bin 0 -> 59572 bytes
 static/docs/images/gradio-rag.png                  | Bin 0 -> 156454 bytes
 static/docs/images/graph-of-gods.png               | Bin 0 -> 77311 bytes
 ...75\277\347\224\250\346\265\201\347\250\213.png" | Bin 0 -> 16501 bytes
 .../311\345\233\276\345\210\233\345\273\272.png"   | Bin 0 -> 43330 bytes
 .../311\345\233\276\345\210\233\345\273\2722.png"  | Bin 0 -> 32918 bytes
 .../312\345\233\276\350\256\277\351\227\256.png"   | Bin 0 -> 18052 bytes
 .../313\345\233\276\347\256\241\347\220\206.png"   | Bin 0 -> 44390 bytes
 ...25\260\346\215\256\345\205\245\345\217\243.png" | Bin 0 -> 16958 bytes
 ...61\236\346\200\247\345\210\233\345\273\272.png" | Bin 0 -> 47486 bytes
 ...1\236\346\200\247\345\210\233\345\273\2722.png" | Bin 0 -> 44974 bytes
 ...61\236\346\200\247\345\244\215\347\224\250.png" | Bin 0 -> 45206 bytes
 ...1\236\346\200\247\345\244\215\347\224\2502.png" | Bin 0 -> 38322 bytes
 ...41\266\347\202\271\345\210\233\345\273\272.png" | Bin 0 -> 50443 bytes
 ...1\266\347\202\271\345\210\233\345\273\2722.png" | Bin 0 -> 218874 bytes
 ...41\266\347\202\271\345\210\240\351\231\244.png" | Bin 0 -> 51380 bytes
 .../3241\350\276\271\345\210\233\345\273\272.png"  | Bin 0 -> 44222 bytes
 .../3241\350\276\271\345\210\233\345\273\2722.png" | Bin 0 -> 54431 bytes
 ...57\274\345\205\245\345\205\245\345\217\243.png" | Bin 0 -> 14972 bytes
 ...10\233\345\273\272\344\273\273\345\212\241.png" | Bin 0 -> 37103 bytes
 ...70\212\344\274\240\346\226\207\344\273\266.png" | Bin 0 -> 37049 bytes
 ...56\276\347\275\256\346\230\240\345\260\204.png" | Bin 0 -> 48435 bytes
 ...6\276\347\275\256\346\230\240\345\260\2042.png" | Bin 0 -> 41622 bytes
 ...57\274\345\205\245\350\256\276\347\275\256.png" | Bin 0 -> 34369 bytes
 ...57\274\345\205\245\350\257\246\346\203\205.png" | Bin 0 -> 89644 bytes
 ...57\274\345\205\245\346\265\201\347\250\213.png" | Bin 0 -> 15988 bytes
 ...10\206\346\236\220\345\205\245\345\217\243.png" | Bin 0 -> 20590 bytes
 ...44\232\345\233\276\345\210\207\346\215\242.png" | Bin 0 -> 39777 bytes
 ...3\345\233\276\345\210\206\346\236\220-json.png" | Bin 0 -> 32487 bytes
 ...3\276\345\210\206\346\236\220-\345\233\276.png" | Bin 0 -> 178218 bytes
 ...0\206\346\236\220-\350\241\250\346\240\274.png" | Bin 0 -> 22507 bytes
 ...67\257\345\276\204\346\237\245\350\257\242.png" | Bin 0 -> 127765 bytes
 ...26\260\345\242\236\351\241\266\347\202\271.png" | Bin 0 -> 136834 bytes
 ...6\260\345\242\236\351\241\266\347\202\2712.png" | Bin 0 -> 79370 bytes
 .../images-hubble/347\346\224\266\350\227\217.png" | Bin 0 -> 25531 bytes
 ...56\241\347\220\206\345\205\245\345\217\243.png" | Bin 0 -> 21133 bytes
 ...73\273\345\212\241\345\210\227\350\241\250.png" | Bin 0 -> 62502 bytes
 .../353gremlin\344\273\273\345\212\241.png"        | Bin 0 -> 29797 bytes
 .../353gremlin\344\273\273\345\212\2412.png"       | Bin 0 -> 40644 bytes
 ...73\273\345\212\241\350\257\246\346\203\205.png" | Bin 0 -> 20009 bytes
 ...31\244\345\205\203\346\225\260\346\215\256.png" | Bin 0 -> 45397 bytes
 ...36\204\345\273\272\347\264\242\345\274\225.png" | Bin 0 -> 75735 bytes
 .../docs/images/images-server/31docker-option.jpg  | Bin 0 -> 202402 bytes
 .../images-server/swagger-ui-set-auth-example.png  | Bin 0 -> 144877 bytes
 .../swagger-ui-where-set-auth-example.png          | Bin 0 -> 62142 bytes
 static/docs/images/images-server/swagger-ui.png    | Bin 0 -> 319057 bytes
 static/docs/images/images-studio/add-schema.png    | Bin 0 -> 240595 bytes
 static/docs/images/images-studio/example-2V-1E.png | Bin 0 -> 160832 bytes
 static/docs/images/images-studio/home-page.png     | Bin 0 -> 55603 bytes
 static/docs/images/images-studio/show-graph.png    | Bin 0 -> 140693 bytes
 static/docs/images/images-studio/show-json.png     | Bin 0 -> 205466 bytes
 static/docs/images/images-studio/show-table.png    | Bin 0 -> 243473 bytes
 static/docs/images/kg-uml.png                      | Bin 0 -> 49357 bytes
 static/docs/images/logo.png                        | Bin 0 -> 1286 bytes
 static/docs/images/ojdbc8.png                      | Bin 0 -> 440550 bytes
 static/docs/images/oracle-download.png             | Bin 0 -> 165421 bytes
 static/docs/images/toolchain-test-mermaid-1.png    | Bin 0 -> 120324 bytes
 static/docs/images/toolchain-test-mermaid-2.png    | Bin 0 -> 30642 bytes
 static/img/apache-logo.svg                         | 210 ++++++++++++++
 static/img/featured-background.jpg                 | Bin 0 -> 1370737 bytes
 static/img/hugegraph-logo.svg                      |   1 +
 147 files changed, 1593 insertions(+), 139 deletions(-)

diff --git a/.github/workflows/docusaurus.yml b/.github/workflows/docusaurus.yml
new file mode 100644
index 00000000..d3e7b12e
--- /dev/null
+++ b/.github/workflows/docusaurus.yml
@@ -0,0 +1,45 @@
+# Build and deploy the Docusaurus documentation site.
+name: "Deploy site to pages (docusaurus)"
+
+on:
+  pull_request:
+  push:
+    branches-ignore:
+      - asf-site
+      - gh-pages
+
+jobs:
+  deploy:
+    runs-on: ubuntu-latest
+    permissions:
+      contents: write
+      pages: write
+      id-token: write
+    concurrency:
+      group: ${{ github.workflow }}-${{ github.ref }}
+    steps:
+      - uses: actions/checkout@v3
+        with:
+          fetch-depth: 0
+
+      - name: Setup Node
+        uses: actions/setup-node@v3
+        with:
+          node-version: "20"
+
+      - name: Install dependencies
+        run: npm install
+
+      - name: Build Site
+        run: npm run build
+
+      - name: Deploy Site
+        uses: peaceiris/actions-gh-pages@v3
+        if: ${{ github.ref == 'refs/heads/master' }}
+        with:
+          github_token: ${{ secrets.GITHUB_TOKEN }}
+          # Refer: https://github.com/marketplace/actions/github-pages-action
+          publish_dir: ./build
+          publish_branch: asf-site
+          keep_files: true # A simple way to keep ".asf.yaml" file
+          commit_message: ${{ github.event.head_commit.message }}
diff --git a/.github/workflows/hugo.yml b/.github/workflows/hugo.yml
deleted file mode 100644
index 17a1e185..00000000
--- a/.github/workflows/hugo.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-# Sample workflow for building and deploying a Hugo site to GitHub Pages
-name: "Deploy site to pages (hugo)"
-
-on:
-  pull_request:
-  push:
-    branches: ["master"] # Set a branch name to trigger deployment
-
-jobs:
-  deploy:
-    runs-on: ubuntu-latest
-    permissions:
-      contents: write
-      pages: write
-      id-token: write
-    concurrency:
-      group: ${{ github.workflow }}-${{ github.ref }}
-    # Hugo steps
-    steps:
-      - uses: actions/checkout@v3
-        with:
-          submodules: true  # Fetch Hugo themes (true OR recursive)
-          fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod
-
-      - name: Setup Node
-        uses: actions/setup-node@v3
-        with:
-          node-version: "16"
-
-      - name: Setup Hugo
-        uses: peaceiris/actions-hugo@v2
-        with:
-          hugo-version: '0.102.3'
-          extended: true
-
-      - uses: actions/cache@v3
-        with:
-          path: /tmp/hugo_cache
-          key: ${{ runner.os }}-hugomod-${{ hashFiles('**/go.sum') }}
-          restore-keys: |
-            ${{ runner.os }}-hugomod-
-
-      - name: Check Links
-        run: bash dist/validate-links.sh
-
-      - name: Build Site (minify)
-        run: npm i && hugo --minify
-
-      - name: Deploy Site
-        uses: peaceiris/actions-gh-pages@v3
-        if: ${{ github.ref == 'refs/heads/master' }}
-        with:
-          github_token: ${{ secrets.GITHUB_TOKEN }}
-          # Refer: https://github.com/marketplace/actions/github-pages-action
-          publish_dir: ./public
-          publish_branch: asf-site
-          keep_files: true # A simple way to keep ".asf.yaml" file
-          commit_message: ${{ github.event.head_commit.message }}
diff --git a/.gitignore b/.gitignore
index 86f2983b..6956c29f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,7 @@
 public/
+build/
+.docusaurus/
+artifacts/
 resources/
 node_modules/
 package-lock.json
diff --git a/README.md b/README.md
index 8f19005b..fe4ddce5 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
 
 [![Ask 
DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/apache/hugegraph-doc)
 
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)
-[![Hugo](https://img.shields.io/badge/Hugo-Extended-ff4088?logo=hugo)](https://gohugo.io/)
+[![Docusaurus](https://img.shields.io/badge/Docusaurus-3.x-2e8555?logo=docusaurus)](https://docusaurus.io/)
 
 ---
 
@@ -16,7 +16,7 @@ For the HugeGraph database project, visit 
[apache/hugegraph](https://github.com/
 
 Only **3 steps** to run the documentation website locally:
 
-**Prerequisites:** [Hugo Extended](https://github.com/gohugoio/hugo/releases) 
v0.95+ and Node.js v16+
+**Prerequisites:** Node.js v18+
 
 ```bash
 # 1. Clone repository
@@ -27,13 +27,10 @@ cd hugegraph-doc
 npm install
 
 # 3. Start development server (auto-reload)
-hugo server
+npm run start
 ```
 
-Open http://localhost:1313 to preview.
-
-> **Troubleshooting:** If you see `TOCSS: failed to transform 
"scss/main.scss"`,
-> install Hugo **Extended** version, not the standard version.
+Open http://localhost:3000 to preview.
 
 ## Repository Structure
 
@@ -51,11 +48,10 @@ hugegraph-doc/
 │   │   └── community/          #    Community pages
 │   └── en/                     # 🇺🇸 English documentation (mirrors cn/ 
structure)
 │
-├── themes/docsy/               # 🎨 Docsy theme (git submodule)
-├── assets/                     # 🖼️  Custom assets (fonts, images, scss)
-├── layouts/                    # 📐 Hugo template overrides
-├── static/                     # 📁 Static files
-├── config.toml                 # ⚙️  Site configuration
+├── src/                        # 🎨 Docusaurus pages, CSS, and helpers
+├── static/                     # 📁 Static files served from site root
+├── docusaurus.config.js        # ⚙️  Site configuration
+├── sidebars*.js                # 🧭 Documentation sidebar configuration
 └── package.json                # 📦 Node.js dependencies
 ```
 
@@ -74,22 +70,23 @@ hugegraph-doc/
 |-------------|-------------|
 | **Bilingual Updates** | Update **BOTH** `content/cn/` and `content/en/` |
 | **PR Screenshots** | Include **before/after screenshots** in PR |
-| **Markdown** | Use Markdown with Hugo front matter |
+| **Markdown** | Use Markdown with front matter |
 
 ### Detailed Guide
 
 See [contribution.md](./contribution.md) for:
-- Platform-specific Hugo installation
-- Docsy theme customization
+- Local development setup
+- Docusaurus theme customization
 - Translation tips
 
 ## Commands
 
 | Command | Description |
 |---------|-------------|
-| `hugo server` | Start dev server (hot reload) |
-| `hugo --minify` | Build production to `./public/` |
-| `hugo server -p 8080` | Custom port |
+| `npm run start` | Start dev server (hot reload) |
+| `npm run build` | Build production site to `./build/` |
+| `npm run serve` | Serve the production build locally |
+| `npm run validate` | Build, check content inventory, and run headless UI 
validation |
 
 ---
 
@@ -103,7 +100,7 @@ See [contribution.md](./contribution.md) for:
 
 只需 **3 步**即可在本地启动文档网站:
 
-**前置条件:** [Hugo Extended](https://github.com/gohugoio/hugo/releases) v0.95+ 和 
Node.js v16+
+**前置条件:** Node.js v18+
 
 ```bash
 # 1. 克隆仓库
@@ -114,13 +111,10 @@ cd hugegraph-doc
 npm install
 
 # 3. 启动开发服务器(支持热重载)
-hugo server
+npm run start
 ```
 
-打开 http://localhost:1313 预览网站。
-
-> **常见问题:** 如果遇到 `TOCSS: failed to transform "scss/main.scss"` 错误,
-> 说明你需要安装 Hugo **Extended** 版本,而不是标准版本。
+打开 http://localhost:3000 预览网站。
 
 ### 仓库结构
 
@@ -138,11 +132,10 @@ hugegraph-doc/
 │   │   └── community/          #    社区页面
 │   └── en/                     # 🇺🇸 英文文档(与 cn/ 结构一致)
 │
-├── themes/docsy/               # 🎨 Docsy 主题 (git submodule)
-├── assets/                     # 🖼️  自定义资源 (fonts, images, scss)
-├── layouts/                    # 📐 Hugo 模板覆盖
-├── static/                     # 📁 静态文件
-├── config.toml                 # ⚙️  站点配置
+├── src/                        # 🎨 Docusaurus 页面、样式和辅助脚本
+├── static/                     # 📁 站点根路径静态文件
+├── docusaurus.config.js        # ⚙️  站点配置
+├── sidebars*.js                # 🧭 文档侧边栏配置
 └── package.json                # 📦 Node.js 依赖
 ```
 
@@ -161,22 +154,23 @@ hugegraph-doc/
 |------|------|
 | **双语更新** | 修改内容时需**同时更新** `content/cn/` 和 `content/en/` |
 | **PR 截图** | 提交 PR 时需附上修改**前后对比截图** |
-| **Markdown** | 文档使用 Markdown 格式,带 Hugo front matter |
+| **Markdown** | 文档使用 Markdown 格式,带 front matter |
 
 #### 详细指南
 
 查看 [contribution.md](./contribution.md) 了解:
-- 各平台 Hugo 安装方法
-- Docsy 主题定制
+- 本地开发环境配置
+- Docusaurus 主题定制
 - 翻译技巧
 
 ### 常用命令
 
 | 命令 | 说明 |
 |------|------|
-| `hugo server` | 启动开发服务器(热重载) |
-| `hugo --minify` | 构建生产版本到 `./public/` |
-| `hugo server -p 8080` | 指定端口 |
+| `npm run start` | 启动开发服务器(热重载) |
+| `npm run build` | 构建生产版本到 `./build/` |
+| `npm run serve` | 本地预览生产构建 |
+| `npm run validate` | 构建、检查内容清单并运行无头 UI 校验 |
 
 ---
 
diff --git a/content/cn/docs/clients/restful-api/_index.md 
b/content/cn/docs/clients/restful-api/_index.md
index 67097fa5..16ff54de 100644
--- a/content/cn/docs/clients/restful-api/_index.md
+++ b/content/cn/docs/clients/restful-api/_index.md
@@ -11,7 +11,7 @@ weight: 1
 > - 默认图空间名称为 `DEFAULT`,可直接使用
 > - 旧版本 doc 参考:[HugeGraph 1.5.x RESTful 
 > API](https://github.com/apache/hugegraph-doc/tree/release-1.5.0)
 
-除了下方的文档,你还可以通过 `localhost:8080/swagger-ui/index.html` 访问 `swagger-ui` 以查看 
`RESTful 
API`。[示例可以参考此处](/cn/docs/quickstart/hugegraph/hugegraph-server#swaggerui-example)
+除了下方的文档,你还可以通过 `localhost:8080/swagger-ui/index.html` 访问 `swagger-ui` 以查看 
`RESTful 
API`。[示例可以参考此处](/cn/docs/quickstart/hugegraph/hugegraph-server/#62-请求-server)
 
 [comment]: <> (- Graph Schema)
 
diff --git a/content/cn/docs/clients/restful-api/auth.md 
b/content/cn/docs/clients/restful-api/auth.md
index ffcc7b92..c2713800 100644
--- a/content/cn/docs/clients/restful-api/auth.md
+++ b/content/cn/docs/clients/restful-api/auth.md
@@ -1049,7 +1049,7 @@ GET 
http://localhost:8080/graphspaces/DEFAULT/auth/accesses/S-69:all>-88>11>S-77
 
 ### 10.7 图空间管理员(Manager)API
 
-**重要提示**:在使用以下 API 之前,需要先创建图空间(graphspace)。请参考 [Graphspace API](./graphspace) 
创建名为 `gs1` 的图空间。文档中的示例均假设已存在名为 `gs1` 的图空间
+**重要提示**:在使用以下 API 之前,需要先创建图空间(graphspace)。请参考 [Graphspace 
API](/cn/docs/clients/restful-api/graphspace/) 创建名为 `gs1` 的图空间。文档中的示例均假设已存在名为 
`gs1` 的图空间
 
 1. 图空间管理员 API 用于在 graphspace 维度给用户授予/回收管理员角色,并查询当前用户或其他用户在该 graphspace 
下的角色信息。角色类型可取 `SPACE`、`SPACE_MEMBER`、`ADMIN` 。
 
diff --git a/content/cn/docs/clients/restful-api/edgelabel.md 
b/content/cn/docs/clients/restful-api/edgelabel.md
index 33f1ad54..e0bf3815 100644
--- a/content/cn/docs/clients/restful-api/edgelabel.md
+++ b/content/cn/docs/clients/restful-api/edgelabel.md
@@ -311,4 +311,4 @@ DELETE 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/schema/edgelab
 
 注:
 
-> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1`(其中"1"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](./task)
+> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1`(其中"1"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](/cn/docs/clients/restful-api/task/)
diff --git a/content/cn/docs/clients/restful-api/graphs.md 
b/content/cn/docs/clients/restful-api/graphs.md
index 560efc61..5f2d94ea 100644
--- a/content/cn/docs/clients/restful-api/graphs.md
+++ b/content/cn/docs/clients/restful-api/graphs.md
@@ -175,7 +175,7 @@ POST 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph-xx
 
 **注意**!!
 1. 在 1.7.0 版本中,动态创建图会导致 NPE 错误。该问题已在 
[PR#2912](https://github.com/apache/hugegraph/pull/2912) 中修复。当前 master 版本和 
1.7.0 之前的版本不受此问题影响。
-2. 1.7.0 及之前版本,如果 backend 是 hstore,必须在请求体加上 "task.scheduler_type": 
"distributed"。同时请确保 HugeGraph-Server 已正确配置 PD,参见 [HStore 
配置](/cn/docs/quickstart/hugegraph/hugegraph-server/#511-分布式存储hstore)。
+2. 1.7.0 及之前版本,如果 backend 是 hstore,必须在请求体加上 "task.scheduler_type": 
"distributed"。同时请确保 HugeGraph-Server 已正确配置 PD,参见 [HStore 
配置](/cn/docs/quickstart/hugegraph/hugegraph-server/#511-分布式存储-hstore)。
 
 **RocksDB 示例:**
 
@@ -508,4 +508,4 @@ PUT 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/compact
         "local": "OK"
     }
 }
-```
\ No newline at end of file
+```
diff --git a/content/cn/docs/clients/restful-api/gremlin.md 
b/content/cn/docs/clients/restful-api/gremlin.md
index 52642f56..ccf063be 100644
--- a/content/cn/docs/clients/restful-api/gremlin.md
+++ b/content/cn/docs/clients/restful-api/gremlin.md
@@ -234,7 +234,7 @@ POST 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/jobs/gremlin
 
 注:
 
-> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1`(其中"1"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](./task)
+> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1`(其中"1"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](/cn/docs/clients/restful-api/task/)
 
 **查询边**
 
@@ -265,4 +265,4 @@ POST 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/jobs/gremlin
 
 注:
 
-> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/2`(其中"2"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](./task)
+> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/2`(其中"2"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](/cn/docs/clients/restful-api/task/)
diff --git a/content/cn/docs/clients/restful-api/indexlabel.md 
b/content/cn/docs/clients/restful-api/indexlabel.md
index 0a51d23f..9975258f 100644
--- a/content/cn/docs/clients/restful-api/indexlabel.md
+++ b/content/cn/docs/clients/restful-api/indexlabel.md
@@ -174,4 +174,4 @@ DELETE 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/schema/indexla
 
 注:
 
-> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1`(其中"1"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](./task)
+> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1`(其中"1"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](/cn/docs/clients/restful-api/task/)
diff --git a/content/cn/docs/clients/restful-api/rebuild.md 
b/content/cn/docs/clients/restful-api/rebuild.md
index db6281ac..bdde3b49 100644
--- a/content/cn/docs/clients/restful-api/rebuild.md
+++ b/content/cn/docs/clients/restful-api/rebuild.md
@@ -31,7 +31,7 @@ PUT 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/jobs/rebuild/inde
 
 注:
 
-> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1`(其中"1"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](./task)
+> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1`(其中"1"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](/cn/docs/clients/restful-api/task/)
 
 #### 1.6.2 VertexLabel 对应的全部索引重建
 
@@ -57,7 +57,7 @@ PUT 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/jobs/rebuild/vert
 
 注:
 
-> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/2`(其中"2"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](./task)
+> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/2`(其中"2"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](/cn/docs/clients/restful-api/task/)
 
 #### 1.6.3 EdgeLabel 对应的全部索引重建
 
@@ -83,4 +83,4 @@ PUT 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/jobs/rebuild/edge
 
 注:
 
-> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/3`(其中"3"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](./task)
+> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/3`(其中"3"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](/cn/docs/clients/restful-api/task/)
diff --git a/content/cn/docs/clients/restful-api/vertexlabel.md 
b/content/cn/docs/clients/restful-api/vertexlabel.md
index 9d15589f..2f8033f1 100644
--- a/content/cn/docs/clients/restful-api/vertexlabel.md
+++ b/content/cn/docs/clients/restful-api/vertexlabel.md
@@ -308,4 +308,4 @@ DELETE 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/schema/vertexl
 
 注:
 
-> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1`(其中"1"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](./task)
+> 可以通过`GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1`(其中"1"是 
task_id)来查询异步任务的执行状态,更多[异步任务 RESTful API](/cn/docs/clients/restful-api/task/)
diff --git a/content/cn/docs/config/config-guide.md 
b/content/cn/docs/config/config-guide.md
index fed7ba85..0871474f 100644
--- a/content/cn/docs/config/config-guide.md
+++ b/content/cn/docs/config/config-guide.md
@@ -138,7 +138,7 @@ ssl: {
 
 - graphs:GremlinServer 启动时需要打开的图,该项是一个 map 结构,key 是图的名字,value 是该图的配置文件路径;
 - channelizer:GremlinServer 与客户端有两种通信方式,分别是 WebSocket 和 HTTP(默认)。如果选择 
WebSocket,
-用户可以通过 [Gremlin-Console](../clients/gremlin-console) 快速体验 HugeGraph 
的特性,但是不支持大规模数据导入,
+用户可以通过 [Gremlin-Console](/cn/docs/clients/gremlin-console/) 快速体验 HugeGraph 
的特性,但是不支持大规模数据导入,
 推荐使用 HTTP 的通信方式,HugeGraph 的外围组件都是基于 HTTP 实现的;
 
 默认 GremlinServer 是服务在 localhost:8182,如果需要修改,配置 host、port 即可
@@ -146,7 +146,7 @@ ssl: {
 - host:部署 GremlinServer 机器的机器名或 IP,目前 HugeGraphServer 不支持分布式部署,且 GremlinServer 
不直接暴露给用户;
 - port:部署 GremlinServer 机器的端口;
 
-同时需要在 rest-server.properties 中增加对应的配置项 gremlinserver.url=http://host:port
+同时需要在 rest-server.properties 中增加对应的配置项 `gremlinserver.url=http://host:port`
 
 ### 3 rest-server.properties
 
@@ -215,7 +215,7 @@ memory_monitor.period=2000
 
 > 注意:gremlin-server.yaml 和 rest-server.properties 都包含 graphs 配置项,而 
 > `init-store` 命令是根据 gremlin-server.yaml 的 graphs 下的图进行初始化的。
 
-> 配置项 gremlinserver.url 是 GremlinServer 为 RestServer 提供服务的 url,该配置项默认为 
http://localhost:8182,如需修改,需要和 gremlin-server.yaml 中的 host 和 port 相匹配;
+> 配置项 gremlinserver.url 是 GremlinServer 为 RestServer 提供服务的 url,该配置项默认为 
`http://localhost:8182`,如需修改,需要和 gremlin-server.yaml 中的 host 和 port 相匹配;
 
 ### 4 hugegraph.properties
 
diff --git a/content/cn/docs/quickstart/hugegraph/hugegraph-server.md 
b/content/cn/docs/quickstart/hugegraph/hugegraph-server.md
index 2be45ba4..5257bc01 100644
--- a/content/cn/docs/quickstart/hugegraph/hugegraph-server.md
+++ b/content/cn/docs/quickstart/hugegraph/hugegraph-server.md
@@ -371,7 +371,7 @@ Connecting to HugeGraphServer 
(http://127.0.0.1:8080/graphs)....OK
 
 提示的 url 与 `rest-server.properties` 中配置的 `restserver.url` 一致
 
-**ToplingDB (Beta)**: 作为 RocksDB 的高性能替代方案,配置方式请参考: [ToplingDB Quick Start]({{< 
ref path="/blog/hugegraph/toplingdb/toplingdb-quick-start.md" lang="cn">}})
+**ToplingDB (Beta)**: 作为 RocksDB 的高性能替代方案,配置方式请参考: [ToplingDB Quick 
Start](/cn/blog/2025/10/09/toplingdb-quick-start/)
 
 </details>
 
diff --git a/content/en/community/_index.md b/content/en/community/_index.md
index 1ae39a24..60332c9b 100644
--- a/content/en/community/_index.md
+++ b/content/en/community/_index.md
@@ -5,4 +5,4 @@ menu:
     weight: 40
 ---
 
-Visit the [Project Maturity]({{< relref "maturity" >}}) assessment.
+Visit the [Project Maturity](/community/maturity/) assessment.
diff --git a/content/en/docs/clients/restful-api/_index.md 
b/content/en/docs/clients/restful-api/_index.md
index c5158247..2410b6ee 100644
--- a/content/en/docs/clients/restful-api/_index.md
+++ b/content/en/docs/clients/restful-api/_index.md
@@ -12,7 +12,7 @@ weight: 1
 > - **Note**: Before version 1.5.0, the format of ids such as group/target was 
 > similar to -69:grant. After version 1.7.0, the id and name were consistent, 
 > such as admin [HugeGraph 1.5.x RESTful 
 > API](https://github.com/apache/hugegraph-doc/tree/release-1.5.0)
 
 
-Besides the documentation below, you can also open `swagger-ui` at 
`localhost:8080/swagger-ui/index.html` to explore the RESTful API. [Here is an 
example](/docs/quickstart/hugegraph/hugegraph-server#swaggerui-example)
+Besides the documentation below, you can also open `swagger-ui` at 
`localhost:8080/swagger-ui/index.html` to explore the RESTful API. [Here is an 
example](/docs/quickstart/hugegraph/hugegraph-server/#62-request-server)
 
 [comment]: <> (- Graph Schema)
 
diff --git a/content/en/docs/clients/restful-api/auth.md 
b/content/en/docs/clients/restful-api/auth.md
index a3af6339..41651db3 100644
--- a/content/en/docs/clients/restful-api/auth.md
+++ b/content/en/docs/clients/restful-api/auth.md
@@ -1049,7 +1049,7 @@ GET 
http://localhost:8080/graphspaces/DEFAULT/auth/accesses/S-69:all>-88>11>S-77
 
 ### 10.7 Graphspace Manager (Manager) API
 
-> **Note**: Before using the following APIs, you need to create a graphspace 
first. For example, create a graphspace named `gs1` via the [Graphspace 
API](./graphspace). The examples below assume that `gs1` already exists.
+> **Note**: Before using the following APIs, you need to create a graphspace 
first. For example, create a graphspace named `gs1` via the [Graphspace 
API](/docs/clients/restful-api/graphspace/). The examples below assume that 
`gs1` already exists.
 
 1. The graphspace manager API is used to grant/revoke manager roles for users 
at the graphspace level, and to query the roles of the current user or other 
users in a graphspace. Supported role types include `SPACE`, `SPACE_MEMBER`, 
and `ADMIN`.
 
diff --git a/content/en/docs/clients/restful-api/edgelabel.md 
b/content/en/docs/clients/restful-api/edgelabel.md
index a452ec5e..a8fe4df9 100644
--- a/content/en/docs/clients/restful-api/edgelabel.md
+++ b/content/en/docs/clients/restful-api/edgelabel.md
@@ -311,4 +311,4 @@ DELETE 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/schema/edgelab
 
 Note:
 
-> You can query the execution status of an asynchronous task by using `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1` (where "1" 
is the task_id). For more information, refer to the [Asynchronous Task RESTful 
API](./task).
+> You can query the execution status of an asynchronous task by using `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1` (where "1" 
is the task_id). For more information, refer to the [Asynchronous Task RESTful 
API](/docs/clients/restful-api/task/).
diff --git a/content/en/docs/clients/restful-api/gremlin.md 
b/content/en/docs/clients/restful-api/gremlin.md
index 3b348e7c..4454b033 100644
--- a/content/en/docs/clients/restful-api/gremlin.md
+++ b/content/en/docs/clients/restful-api/gremlin.md
@@ -230,7 +230,7 @@ Note:
 
 Note:
 
-> You can query the execution status of an asynchronous task by using `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1` (where "1" 
is the task_id). For more information, refer to the [Asynchronous Task RESTful 
API](./task).
+> You can query the execution status of an asynchronous task by using `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1` (where "1" 
is the task_id). For more information, refer to the [Asynchronous Task RESTful 
API](/docs/clients/restful-api/task/).
 
 **Querying edges**
 
@@ -261,4 +261,4 @@ Note:
 
 Note:
 
-> You can query the execution status of an asynchronous task by using `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/2` (where "2" 
is the task_id). For more information, refer to the [Asynchronous Task RESTful 
API](./task).
+> You can query the execution status of an asynchronous task by using `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/2` (where "2" 
is the task_id). For more information, refer to the [Asynchronous Task RESTful 
API](/docs/clients/restful-api/task/).
diff --git a/content/en/docs/clients/restful-api/indexlabel.md 
b/content/en/docs/clients/restful-api/indexlabel.md
index d56c156a..c419e91d 100644
--- a/content/en/docs/clients/restful-api/indexlabel.md
+++ b/content/en/docs/clients/restful-api/indexlabel.md
@@ -174,4 +174,4 @@ DELETE 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/schema/indexla
 
 Note:
 
-> You can query the execution status of an asynchronous task by using `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1` (where "1" 
is the task_id). For more information, refer to the [Asynchronous Task RESTful 
API](./task).
+> You can query the execution status of an asynchronous task by using `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1` (where "1" 
is the task_id). For more information, refer to the [Asynchronous Task RESTful 
API](/docs/clients/restful-api/task/).
diff --git a/content/en/docs/clients/restful-api/rebuild.md 
b/content/en/docs/clients/restful-api/rebuild.md
index ef76d6e4..6cb7d6e2 100644
--- a/content/en/docs/clients/restful-api/rebuild.md
+++ b/content/en/docs/clients/restful-api/rebuild.md
@@ -30,7 +30,7 @@ PUT 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/jobs/rebuild/inde
 ```
 Note:
 
-> You can get the asynchronous job status by `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/${task_id}` 
(the task_id here should be 1). See More [AsyncJob RESTfull API](./task)
+> You can get the asynchronous job status by `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/${task_id}` 
(the task_id here should be 1). See More [AsyncJob RESTfull 
API](/docs/clients/restful-api/task/)
 
 #### 1.6.2 Rebulid all Indexs of VertexLabel
 
@@ -56,7 +56,7 @@ PUT 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/jobs/rebuild/vert
 
 Note:
 
-> You can get the asynchronous job status by `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/${task_id}` 
(the task_id here should be 2). See More [AsyncJob RESTfull API](./task)
+> You can get the asynchronous job status by `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/${task_id}` 
(the task_id here should be 2). See More [AsyncJob RESTfull 
API](/docs/clients/restful-api/task/)
 
 #### 1.6.3 Rebulid all Indexs of EdgeLabel
 
@@ -82,4 +82,4 @@ PUT 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/jobs/rebuild/edge
 
 Note:
 
-> You can get the asynchronous job status by `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/${task_id}` 
(the task_id here should be 3). See More [AsyncJob RESTfull API](./task)
\ No newline at end of file
+> You can get the asynchronous job status by `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/${task_id}` 
(the task_id here should be 3). See More [AsyncJob RESTfull 
API](/docs/clients/restful-api/task/)
\ No newline at end of file
diff --git a/content/en/docs/clients/restful-api/vertexlabel.md 
b/content/en/docs/clients/restful-api/vertexlabel.md
index 6e6388a7..493e3ce6 100644
--- a/content/en/docs/clients/restful-api/vertexlabel.md
+++ b/content/en/docs/clients/restful-api/vertexlabel.md
@@ -308,4 +308,4 @@ DELETE 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/schema/vertexl
 
 Note:
 
-> You can use `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1` (where "1" 
is the task_id) to query the execution status of the asynchronous task. For 
more information, refer to the [Asynchronous Task RESTful API](./task).
+> You can use `GET 
http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/tasks/1` (where "1" 
is the task_id) to query the execution status of the asynchronous task. For 
more information, refer to the [Asynchronous Task RESTful 
API](/docs/clients/restful-api/task/).
diff --git a/content/en/docs/config/config-guide.md 
b/content/en/docs/config/config-guide.md
index 8d5c3699..aef5ca09 100644
--- a/content/en/docs/config/config-guide.md
+++ b/content/en/docs/config/config-guide.md
@@ -137,7 +137,7 @@ ssl: {
 There are many configuration options mentioned above, but for now, let's focus 
on the following options: `channelizer` and `graphs`.
 
 - `graphs`: This option specifies the graphs that need to be opened when the 
GremlinServer starts. It is a map structure where the key is the name of the 
graph and the value is the configuration file path for that graph.
-- `channelizer`: The GremlinServer supports two communication modes with 
clients: WebSocket and HTTP (default). If WebSocket is chosen, users can 
quickly experience the features of HugeGraph using 
[Gremlin-Console](../clients/gremlin-console), but it does not support 
importing large-scale data. It is recommended to use HTTP for communication, as 
all peripheral components of HugeGraph are implemented based on HTTP.
+- `channelizer`: The GremlinServer supports two communication modes with 
clients: WebSocket and HTTP (default). If WebSocket is chosen, users can 
quickly experience the features of HugeGraph using 
[Gremlin-Console](/docs/clients/gremlin-console/), but it does not support 
importing large-scale data. It is recommended to use HTTP for communication, as 
all peripheral components of HugeGraph are implemented based on HTTP.
 
 By default, the GremlinServer serves at `localhost:8182`. If you need to 
modify it, configure the `host` and `port` settings.
 
diff --git a/content/en/docs/quickstart/hugegraph/hugegraph-server.md 
b/content/en/docs/quickstart/hugegraph/hugegraph-server.md
index 4197acbb..8dd2539a 100644
--- a/content/en/docs/quickstart/hugegraph/hugegraph-server.md
+++ b/content/en/docs/quickstart/hugegraph/hugegraph-server.md
@@ -406,7 +406,7 @@ Starting HugeGraphServer...
 Connecting to HugeGraphServer (http://127.0.0.1:8080/graphs)....OK
 ```
 
-**ToplingDB (Beta)**: As a high-performance alternative to RocksDB, please 
refer to the configuration guide: [ToplingDB Quick Start]({{< ref 
path="/blog/hugegraph/toplingdb/toplingdb-quick-start.md" lang="en">}})
+**ToplingDB (Beta)**: As a high-performance alternative to RocksDB, please 
refer to the configuration guide: [ToplingDB Quick 
Start](/blog/2025/10/09/toplingdb-quick-start/)
 
 </details>
 
diff --git a/docusaurus.config.js b/docusaurus.config.js
new file mode 100644
index 00000000..96b57f7d
--- /dev/null
+++ b/docusaurus.config.js
@@ -0,0 +1,223 @@
+const hugoFrontMatter = require('./src/markdown/frontMatter');
+
+const apacheLinks = [
+  {label: 'Foundation', href: 'https://www.apache.org/'},
+  {label: 'License', href: 'https://www.apache.org/licenses/'},
+  {label: 'Events', href: 'https://www.apache.org/events/current-event.html'},
+  {label: 'Privacy', href: 
'https://privacy.apache.org/policies/privacy-policy-public.html'},
+  {label: 'Security', href: 'https://www.apache.org/security/'},
+  {label: 'Sponsorship', href: 
'https://www.apache.org/foundation/sponsorship.html'},
+  {label: 'Thanks', href: 'https://www.apache.org/foundation/thanks.html'},
+  {label: 'Code of Conduct', href: 
'https://www.apache.org/foundation/policies/conduct.html'},
+];
+
+const docsExclude = ['**/_*/**', '**/SUMMARY.md', '**/*.test.{js,jsx,ts,tsx}', 
'**/__tests__/**'];
+
+/** @type {import('@docusaurus/types').Config} */
+const config = {
+  title: 'Apache HugeGraph',
+  tagline: 'A full-stack graph database ecosystem for OLTP, OLAP, and AI',
+  favicon: 'img/hugegraph-logo.svg',
+
+  url: 'https://hugegraph.apache.org',
+  baseUrl: '/',
+  organizationName: 'apache',
+  projectName: 'hugegraph-doc',
+  trailingSlash: true,
+
+  onBrokenLinks: 'throw',
+  onBrokenAnchors: 'throw',
+  onDuplicateRoutes: 'throw',
+
+  markdown: {
+    format: 'md',
+    mermaid: true,
+    parseFrontMatter: hugoFrontMatter,
+    hooks: {
+      onBrokenMarkdownLinks: 'throw',
+      onBrokenMarkdownImages: 'throw',
+    },
+  },
+
+  i18n: {
+    defaultLocale: 'en',
+    locales: ['en'],
+  },
+
+  presets: [
+    [
+      'classic',
+      /** @type {import('@docusaurus/preset-classic').Options} */
+      ({
+        docs: {
+          path: 'content/en/docs',
+          routeBasePath: 'docs',
+          sidebarPath: require.resolve('./sidebars.js'),
+          exclude: docsExclude,
+          editUrl: 'https://github.com/apache/hugegraph-doc/edit/master/',
+          showLastUpdateAuthor: false,
+          showLastUpdateTime: false,
+        },
+        blog: {
+          path: 'content/en/blog',
+          routeBasePath: 'blog',
+          include: ['**/*.md', '**/*.mdx'],
+          exclude: ['**/_index.md'],
+          blogSidebarTitle: 'All posts',
+          blogSidebarCount: 'ALL',
+          showReadingTime: true,
+          onUntruncatedBlogPosts: 'ignore',
+          editUrl: 'https://github.com/apache/hugegraph-doc/edit/master/',
+        },
+        pages: {
+          path: 'src/pages',
+        },
+        theme: {
+          customCss: require.resolve('./src/css/custom.css'),
+        },
+      }),
+    ],
+  ],
+
+  plugins: [
+    [
+      '@docusaurus/plugin-content-docs',
+      {
+        id: 'docs-cn',
+        path: 'content/cn/docs',
+        routeBasePath: 'cn/docs',
+        sidebarPath: require.resolve('./sidebars-cn.js'),
+        exclude: docsExclude,
+        editUrl: 'https://github.com/apache/hugegraph-doc/edit/master/',
+        showLastUpdateAuthor: false,
+        showLastUpdateTime: false,
+      },
+    ],
+    [
+      '@docusaurus/plugin-content-docs',
+      {
+        id: 'community',
+        path: 'content/en/community',
+        routeBasePath: 'community',
+        sidebarPath: require.resolve('./sidebars-community.js'),
+        exclude: docsExclude,
+        editUrl: 'https://github.com/apache/hugegraph-doc/edit/master/',
+        showLastUpdateAuthor: false,
+        showLastUpdateTime: false,
+      },
+    ],
+    [
+      '@docusaurus/plugin-content-docs',
+      {
+        id: 'community-cn',
+        path: 'content/cn/community',
+        routeBasePath: 'cn/community',
+        sidebarPath: require.resolve('./sidebars-community-cn.js'),
+        exclude: docsExclude,
+        editUrl: 'https://github.com/apache/hugegraph-doc/edit/master/',
+        showLastUpdateAuthor: false,
+        showLastUpdateTime: false,
+      },
+    ],
+    [
+      '@docusaurus/plugin-content-blog',
+      {
+        id: 'blog-cn',
+        path: 'content/cn/blog',
+        routeBasePath: 'cn/blog',
+        include: ['**/*.md', '**/*.mdx'],
+        exclude: ['**/_index.md'],
+        blogSidebarTitle: '所有文章',
+        blogSidebarCount: 'ALL',
+        showReadingTime: true,
+        onUntruncatedBlogPosts: 'ignore',
+        editUrl: 'https://github.com/apache/hugegraph-doc/edit/master/',
+      },
+    ],
+  ],
+
+  themes: ['@docusaurus/theme-mermaid'],
+
+  themeConfig:
+    /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
+    ({
+      colorMode: {
+        defaultMode: 'light',
+        respectPrefersColorScheme: true,
+      },
+      navbar: {
+        title: 'Apache HugeGraph',
+        logo: {
+          alt: 'Apache HugeGraph logo',
+          src: 'img/hugegraph-logo.svg',
+        },
+        items: [
+          {to: '/docs/', label: 'Docs', position: 'left'},
+          {to: '/blog/', label: 'Blog', position: 'left'},
+          {to: '/community/', label: 'Community', position: 'left'},
+          {to: '/docs/download/download/', label: 'Download', position: 
'left'},
+          {
+            label: 'ASF',
+            position: 'right',
+            items: apacheLinks,
+          },
+          {
+            label: 'Language',
+            position: 'right',
+            className: 'navbar-language-dropdown',
+            items: [
+              {label: 'English', to: '/'},
+              {label: '中文', to: '/cn/'},
+            ],
+          },
+          {
+            href: 'https://github.com/apache/hugegraph',
+            label: 'GitHub',
+            position: 'right',
+          },
+        ],
+      },
+      footer: {
+        style: 'dark',
+        logo: {
+          alt: 'Apache Software Foundation logo',
+          src: 'img/apache-logo.svg',
+          href: 'https://www.apache.org/',
+          width: 220,
+        },
+        links: [
+          {
+            title: 'Project',
+            items: [
+              {label: 'Documentation', to: '/docs/'},
+              {label: 'Download', to: '/docs/download/download/'},
+              {label: 'GitHub', href: 'https://github.com/apache/hugegraph'},
+              {label: 'Issue Tracker', href: 
'https://github.com/apache/hugegraph/issues'},
+            ],
+          },
+          {
+            title: 'Community',
+            items: [
+              {label: 'Community', to: '/community/'},
+              {label: 'Mailing List', href: 
'mailto:[email protected]'},
+              {label: 'ASF Slack', href: 
'https://the-asf.slack.com/archives/C059UU2FJ23'},
+            ],
+          },
+          {
+            title: 'ASF',
+            items: apacheLinks,
+          },
+        ],
+        copyright: `Copyright © ${new Date().getFullYear()} The Apache 
Software Foundation. Licensed under the Apache License, Version 2.0. Apache 
HugeGraph, HugeGraph, Apache, the Apache feather logo, and the Apache HugeGraph 
project logo are either registered trademarks or trademarks of The Apache 
Software Foundation in the United States and other countries.`,
+      },
+      prism: {
+        additionalLanguages: ['bash', 'java', 'json', 'python', 'yaml'],
+      },
+      tableOfContents: {
+        minHeadingLevel: 2,
+        maxHeadingLevel: 4,
+      },
+    }),
+};
+
+module.exports = config;
diff --git a/netlify.toml b/netlify.toml
index 0e94ebab..2aaab7d6 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -1,3 +1,6 @@
 [build]
+command = "npm run build"
+publish = "build"
+
 [build.environment]
-HUGO_VERSION = "0.88.1"
+NODE_VERSION = "20"
diff --git a/package.json b/package.json
index 4b562815..d280f076 100644
--- a/package.json
+++ b/package.json
@@ -1,27 +1,41 @@
 {
-  "name": "tech-doc-hugo",
-  "version": "0.0.1",
-  "description": "Hugo theme for technical documentation.",
-  "main": "none.js",
+  "name": "apache-hugegraph-doc",
+  "version": "0.0.0",
+  "private": true,
+  "description": "Apache HugeGraph documentation website built with 
Docusaurus.",
   "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
+    "start": "docusaurus start --host 0.0.0.0",
+    "build": "docusaurus build",
+    "serve": "docusaurus serve --host 0.0.0.0",
+    "clear": "docusaurus clear",
+    "playwright:install": "playwright install chromium",
+    "validate:content": "node scripts/validate-content-inventory.js",
+    "validate:build": "npm run build && node scripts/validate-build.js && npm 
run validate:content",
+    "validate:ui": "node scripts/validate-ui.js",
+    "validate": "npm run validate:build && npm run validate:ui"
   },
   "repository": {
     "type": "git",
-    "url": "git+https://github.com/google/docsy-example.git";
+    "url": "git+https://github.com/apache/hugegraph-doc.git";
   },
-  "author": "",
-  "license": "ISC",
+  "license": "Apache-2.0",
   "bugs": {
-    "url": "https://github.com/google/docsy-example/issues";
-  },
-  "homepage": "https://github.com/google/docsy-example#readme";,
-  "devDependencies": {
-    "autoprefixer": "^10.4.0",
-    "postcss": "^8.3.7",
-    "postcss-cli": "^9.0.2"
+    "url": "https://github.com/apache/hugegraph-doc/issues";
   },
+  "homepage": "https://hugegraph.apache.org/";,
   "dependencies": {
-    "mermaid": "^10.9.5"
+    "@docusaurus/core": "3.10.1",
+    "@docusaurus/preset-classic": "3.10.1",
+    "@docusaurus/theme-mermaid": "3.10.1",
+    "@mermaid-js/layout-elk": "0.1.9",
+    "@mdx-js/react": "3.1.1",
+    "clsx": "2.1.1",
+    "mermaid": "11.10.1",
+    "prism-react-renderer": "2.4.1",
+    "react": "18.3.1",
+    "react-dom": "18.3.1"
+  },
+  "devDependencies": {
+    "@playwright/test": "^1.52.0"
   }
 }
diff --git a/scripts/validate-build.js b/scripts/validate-build.js
new file mode 100644
index 00000000..473cf8dc
--- /dev/null
+++ b/scripts/validate-build.js
@@ -0,0 +1,38 @@
+#!/usr/bin/env node
+const fs = require('fs');
+const path = require('path');
+
+const repoRoot = path.resolve(__dirname, '..');
+const buildDir = path.join(repoRoot, 'build');
+
+const expectedPages = [
+  ['homepage', 'index.html', 'Apache HugeGraph'],
+  ['docs landing', 'docs/index.html', 'Apache HugeGraph Documentation'],
+  ['English deep docs page', 
'docs/quickstart/hugegraph/hugegraph-server/index.html', 'HugeGraph-Server'],
+  ['Chinese docs landing', 'cn/docs/index.html', 'Apache HugeGraph 文档'],
+  ['Chinese deep docs page', 
'cn/docs/quickstart/hugegraph/hugegraph-server/index.html', 'HugeGraph-Server'],
+  ['English blog', 'blog/index.html', 'Blog'],
+  ['Chinese blog', 'cn/blog/index.html', 'Blog'],
+  ['community', 'community/index.html', 'Community'],
+  ['community maturity', 'community/maturity/index.html', 'Apache Maturity 
Model'],
+];
+
+for (const [label, relPath, text] of expectedPages) {
+  const file = path.join(buildDir, relPath);
+  if (!fs.existsSync(file)) {
+    throw new Error(`Missing ${label}: ${relPath}`);
+  }
+  const html = fs.readFileSync(file, 'utf8');
+  if (!html.includes(text)) {
+    throw new Error(`Expected ${label} to contain "${text}"`);
+  }
+}
+
+const homepage = fs.readFileSync(path.join(buildDir, 'index.html'), 'utf8');
+for (const label of ['Foundation', 'License', 'Events', 'Privacy', 'Security', 
'Sponsorship', 'Thanks', 'Code of Conduct']) {
+  if (!homepage.includes(label)) {
+    throw new Error(`Homepage is missing ASF menu label: ${label}`);
+  }
+}
+
+console.log(`Build content OK: ${expectedPages.length} representative pages 
found.`);
diff --git a/scripts/validate-content-inventory.js 
b/scripts/validate-content-inventory.js
new file mode 100644
index 00000000..1969aa6f
--- /dev/null
+++ b/scripts/validate-content-inventory.js
@@ -0,0 +1,40 @@
+#!/usr/bin/env node
+const fs = require('fs');
+const path = require('path');
+const {execFileSync} = require('child_process');
+
+const repoRoot = path.resolve(__dirname, '..');
+const artifactDir = path.join(repoRoot, 'artifacts', 'validation');
+
+function gitFiles() {
+  return execFileSync('git', ['ls-files', '*.md', '*.mdx'], {
+    cwd: repoRoot,
+    encoding: 'utf8',
+  })
+    .trim()
+    .split('\n')
+    .filter(Boolean)
+    .sort();
+}
+
+function exists(relPath) {
+  return fs.existsSync(path.join(repoRoot, relPath));
+}
+
+fs.mkdirSync(artifactDir, {recursive: true});
+
+const before = gitFiles();
+const missing = before.filter((file) => !exists(file));
+
+const after = before.filter(exists);
+fs.writeFileSync(path.join(artifactDir, 'md-inventory-before.txt'), 
`${before.join('\n')}\n`);
+fs.writeFileSync(path.join(artifactDir, 'md-inventory-after.txt'), 
`${after.join('\n')}\n`);
+fs.writeFileSync(path.join(artifactDir, 'md-inventory-missing.json'), 
`${JSON.stringify(missing, null, 2)}\n`);
+
+if (missing.length > 0) {
+  console.error(`Missing Markdown/MDX files:\n${missing.join('\n')}`);
+  process.exit(1);
+}
+
+console.log(`Markdown inventory OK: ${before.length} original tracked .md/.mdx 
files still exist.`);
+console.log(`Inventory artifacts: ${path.relative(repoRoot, artifactDir)}`);
diff --git a/scripts/validate-ui.js b/scripts/validate-ui.js
new file mode 100644
index 00000000..f68e663d
--- /dev/null
+++ b/scripts/validate-ui.js
@@ -0,0 +1,157 @@
+#!/usr/bin/env node
+const fs = require('fs');
+const path = require('path');
+const {spawn, spawnSync} = require('child_process');
+const {chromium} = require('playwright');
+
+const repoRoot = path.resolve(__dirname, '..');
+const buildDir = path.join(repoRoot, 'build');
+const artifactDir = path.join(repoRoot, 'artifacts', 'playwright');
+const port = Number(process.env.DOCUSAURUS_TEST_PORT || 4173);
+const baseUrl = `http://127.0.0.1:${port}`;
+
+function ensureBuild() {
+  if (fs.existsSync(path.join(buildDir, 'index.html'))) {
+    return;
+  }
+  const result = spawnSync('npm', ['run', 'build'], {cwd: repoRoot, stdio: 
'inherit'});
+  if (result.status !== 0) {
+    process.exit(result.status || 1);
+  }
+}
+
+async function waitForServer(server) {
+  const deadline = Date.now() + 30000;
+  while (Date.now() < deadline) {
+    if (server.exitCode !== null) {
+      throw new Error(`Docusaurus server exited with code ${server.exitCode}`);
+    }
+    try {
+      const response = await fetch(baseUrl);
+      if (response.ok) {
+        return;
+      }
+    } catch {
+      await new Promise((resolve) => setTimeout(resolve, 250));
+    }
+  }
+  throw new Error('Timed out waiting for Docusaurus test server');
+}
+
+async function expectVisible(locator, label) {
+  try {
+    await locator.first().waitFor({state: 'visible', timeout: 5000});
+  } catch {
+    throw new Error(`${label} is not visible`);
+  }
+}
+
+async function assertShell(page) {
+  await page.goto(`${baseUrl}/`, {waitUntil: 'networkidle'});
+  await expectVisible(page.locator('nav.navbar'), 'top navigation');
+
+  const asfDropdown = page.locator('.navbar__item.dropdown', {hasText: 
'ASF'}).first();
+  await asfDropdown.hover();
+  await page.waitForTimeout(200);
+  const asfText = await asfDropdown.textContent();
+  for (const label of ['Foundation', 'License', 'Events', 'Privacy', 
'Security', 'Sponsorship', 'Thanks', 'Code of Conduct']) {
+    if (!asfText.includes(label)) {
+      throw new Error(`ASF dropdown is missing ${label}`);
+    }
+  }
+
+  const footer = page.locator('footer.footer');
+  await footer.scrollIntoViewIfNeeded();
+  await expectVisible(footer.locator('img[alt*="Apache Software 
Foundation"]'), 'Apache/ASF footer logo');
+  const footerText = await footer.textContent();
+  for (const text of ['Copyright', 'Apache License, Version 2.0', 
'trademarks', 'The Apache Software Foundation']) {
+    if (!footerText.includes(text)) {
+      throw new Error(`Footer is missing "${text}"`);
+    }
+  }
+}
+
+async function assertDocs(page) {
+  await page.goto(`${baseUrl}/docs/quickstart/hugegraph/hugegraph-server/`, 
{waitUntil: 'networkidle'});
+  const sidebar = page.locator('aside.theme-doc-sidebar-container');
+  await expectVisible(sidebar, 'docs sidebar');
+  const quickStart = sidebar.getByText('Quick Start').first();
+  await expectVisible(quickStart, 'docs sidebar Quick Start item');
+}
+
+async function assertMobileMenu(page) {
+  await page.setViewportSize({width: 390, height: 844});
+  await page.goto(`${baseUrl}/`, {waitUntil: 'networkidle'});
+  await page.locator('.navbar__toggle').click();
+  const sidebar = page.locator('.navbar-sidebar');
+  await expectVisible(sidebar, 'mobile navbar sidebar');
+  const text = await sidebar.textContent();
+  for (const label of ['Docs', 'Blog', 'Community', 'ASF']) {
+    if (!text.includes(label)) {
+      throw new Error(`Mobile menu is missing ${label}`);
+    }
+  }
+}
+
+async function captureScreenshots(page) {
+  fs.mkdirSync(artifactDir, {recursive: true});
+  const viewports = [
+    ['desktop', {width: 1440, height: 900}],
+    ['mobile', {width: 390, height: 844}],
+  ];
+  const pages = [
+    ['homepage', '/'],
+    ['docs-landing', '/docs/'],
+    ['deep-docs', '/docs/quickstart/hugegraph/hugegraph-server/'],
+  ];
+
+  for (const [viewportName, viewport] of viewports) {
+    await page.setViewportSize(viewport);
+    for (const [name, route] of pages) {
+      await page.goto(`${baseUrl}${route}`, {waitUntil: 'networkidle'});
+      await page.screenshot({
+        path: path.join(artifactDir, `${name}-${viewportName}.png`),
+        fullPage: false,
+      });
+    }
+
+    await page.goto(`${baseUrl}/`, {waitUntil: 'networkidle'});
+    await page.locator('footer.footer').scrollIntoViewIfNeeded();
+    await page.screenshot({
+      path: path.join(artifactDir, `footer-${viewportName}.png`),
+      fullPage: false,
+    });
+  }
+}
+
+async function main() {
+  ensureBuild();
+
+  const bin = path.join(repoRoot, 'node_modules', '.bin', 'docusaurus');
+  const server = spawn(bin, ['serve', '--host', '127.0.0.1', '--port', 
String(port)], {
+    cwd: repoRoot,
+    stdio: ['ignore', 'pipe', 'pipe'],
+  });
+  server.stdout.on('data', (data) => process.stdout.write(data));
+  server.stderr.on('data', (data) => process.stderr.write(data));
+
+  try {
+    await waitForServer(server);
+    const browser = await chromium.launch();
+    const page = await browser.newPage({viewport: {width: 1440, height: 900}});
+    await assertShell(page);
+    await assertDocs(page);
+    await assertMobileMenu(page);
+    await captureScreenshots(page);
+    await browser.close();
+  } finally {
+    server.kill('SIGTERM');
+  }
+
+  console.log(`UI validation OK. Screenshots: ${path.relative(repoRoot, 
artifactDir)}`);
+}
+
+main().catch((error) => {
+  console.error(error);
+  process.exit(1);
+});
diff --git a/sidebars-cn.js b/sidebars-cn.js
new file mode 100644
index 00000000..aa388017
--- /dev/null
+++ b/sidebars-cn.js
@@ -0,0 +1,5 @@
+const {buildSidebar} = require('./src/sidebars/buildSidebars');
+
+module.exports = {
+  docsSidebar: buildSidebar('content/cn/docs'),
+};
diff --git a/sidebars-community-cn.js b/sidebars-community-cn.js
new file mode 100644
index 00000000..4186b9c3
--- /dev/null
+++ b/sidebars-community-cn.js
@@ -0,0 +1,5 @@
+const {buildSidebar} = require('./src/sidebars/buildSidebars');
+
+module.exports = {
+  docsSidebar: buildSidebar('content/cn/community'),
+};
diff --git a/sidebars-community.js b/sidebars-community.js
new file mode 100644
index 00000000..c011961b
--- /dev/null
+++ b/sidebars-community.js
@@ -0,0 +1,5 @@
+const {buildSidebar} = require('./src/sidebars/buildSidebars');
+
+module.exports = {
+  docsSidebar: buildSidebar('content/en/community'),
+};
diff --git a/sidebars.js b/sidebars.js
new file mode 100644
index 00000000..2164934e
--- /dev/null
+++ b/sidebars.js
@@ -0,0 +1,5 @@
+const {buildSidebar} = require('./src/sidebars/buildSidebars');
+
+module.exports = {
+  docsSidebar: buildSidebar('content/en/docs'),
+};
diff --git a/src/css/custom.css b/src/css/custom.css
new file mode 100644
index 00000000..e9ac76c9
--- /dev/null
+++ b/src/css/custom.css
@@ -0,0 +1,304 @@
+:root {
+  --ifm-color-primary: #b32025;
+  --ifm-color-primary-dark: #9f1c21;
+  --ifm-color-primary-darker: #8f191d;
+  --ifm-color-primary-darkest: #751418;
+  --ifm-color-primary-light: #c83b3f;
+  --ifm-color-primary-lighter: #d15256;
+  --ifm-color-primary-lightest: #df7477;
+  --ifm-font-family-base: Inter, ui-sans-serif, system-ui, -apple-system, 
BlinkMacSystemFont, "Segoe UI", sans-serif;
+  --ifm-heading-font-family: var(--ifm-font-family-base);
+  --ifm-navbar-height: 4rem;
+  --ifm-global-radius: 8px;
+  --hugegraph-ink: #18212f;
+  --hugegraph-muted: #5f6877;
+  --hugegraph-border: #dfe4ec;
+  --hugegraph-band: #f6f8fb;
+  --hugegraph-accent: #117a8b;
+}
+
+html[data-theme='dark'] {
+  --ifm-color-primary: #ff7a7e;
+  --ifm-background-color: #111827;
+  --ifm-navbar-background-color: #101723;
+  --hugegraph-ink: #f8fafc;
+  --hugegraph-muted: #c7ced8;
+  --hugegraph-border: #2b3545;
+  --hugegraph-band: #151f2c;
+}
+
+.navbar {
+  border-bottom: 1px solid var(--hugegraph-border);
+  box-shadow: none;
+}
+
+.navbar__brand {
+  font-weight: 700;
+}
+
+.navbar__logo {
+  height: 2rem;
+  width: 2rem;
+}
+
+.navbar__item.dropdown > .navbar__link::after {
+  margin-left: 0.4rem;
+}
+
+.hugegraphHero {
+  align-items: center;
+  background-image: url('/img/featured-background.jpg');
+  background-position: center;
+  background-size: cover;
+  color: #ffffff;
+  display: flex;
+  min-height: min(690px, 72vh);
+  overflow: hidden;
+  position: relative;
+}
+
+.hugegraphHero__overlay {
+  background: rgba(11, 18, 29, 0.72);
+  inset: 0;
+  position: absolute;
+}
+
+.hugegraphHero__content {
+  margin: 0 auto;
+  max-width: 1180px;
+  padding: 5rem 1.5rem 4rem;
+  position: relative;
+  width: 100%;
+}
+
+.hugegraphHero h1 {
+  color: #ffffff;
+  font-size: 5.25rem;
+  letter-spacing: 0;
+  line-height: 1;
+  margin: 0 0 1.25rem;
+}
+
+.hugegraphHero__lead {
+  color: #e8edf5;
+  font-size: 1.35rem;
+  line-height: 1.6;
+  max-width: 780px;
+}
+
+.hugegraphHero__actions {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 0.8rem;
+  margin-top: 2rem;
+}
+
+.hugegraphHero .button--secondary {
+  --ifm-button-background-color: rgba(255, 255, 255, 0.12);
+  --ifm-button-border-color: rgba(255, 255, 255, 0.75);
+  --ifm-button-color: #ffffff;
+  color: #ffffff;
+}
+
+.apacheEyebrow {
+  color: var(--ifm-color-primary);
+  font-size: 0.78rem;
+  font-weight: 700;
+  letter-spacing: 0;
+  margin-bottom: 0.65rem;
+  text-transform: uppercase;
+}
+
+.hugegraphHero .apacheEyebrow {
+  color: #ffb5b8;
+}
+
+.siteBand {
+  padding: 4.5rem 0;
+}
+
+.siteBand--light {
+  background: var(--hugegraph-band);
+}
+
+.sectionHeading {
+  margin-bottom: 2rem;
+  max-width: 760px;
+}
+
+.sectionHeading h2,
+.ecosystemLayout h2 {
+  color: var(--hugegraph-ink);
+  font-size: 2.65rem;
+  letter-spacing: 0;
+  line-height: 1.1;
+  margin: 0;
+}
+
+.sectionHeading p,
+.ecosystemLayout p {
+  color: var(--hugegraph-muted);
+}
+
+.highlightGrid {
+  display: grid;
+  gap: 1rem;
+  grid-template-columns: repeat(3, minmax(0, 1fr));
+}
+
+.productCard {
+  background: var(--ifm-background-surface-color);
+  border: 1px solid var(--hugegraph-border);
+  border-radius: 8px;
+  min-height: 230px;
+  padding: 1.5rem;
+}
+
+.productCard h3 {
+  color: var(--hugegraph-ink);
+  font-size: 1.3rem;
+  letter-spacing: 0;
+}
+
+.productCard p {
+  color: var(--hugegraph-muted);
+  line-height: 1.65;
+}
+
+.productCard a {
+  font-weight: 700;
+}
+
+.ecosystemLayout {
+  align-items: center;
+  display: grid;
+  gap: 3rem;
+  grid-template-columns: minmax(0, 0.9fr) minmax(320px, 1.1fr);
+}
+
+.ecosystemMap {
+  border: 1px solid var(--hugegraph-border);
+  border-radius: 8px;
+  display: grid;
+  gap: 1px;
+  grid-template-columns: repeat(2, minmax(0, 1fr));
+  overflow: hidden;
+}
+
+.ecosystemNode {
+  background: var(--ifm-background-surface-color);
+  min-height: 150px;
+  padding: 1.25rem;
+}
+
+.ecosystemNode strong,
+.ecosystemNode span {
+  display: block;
+}
+
+.ecosystemNode strong {
+  color: var(--hugegraph-ink);
+  font-size: 1.2rem;
+  margin-bottom: 0.6rem;
+}
+
+.ecosystemNode span {
+  color: var(--hugegraph-muted);
+  line-height: 1.55;
+}
+
+.ecosystemNode--5 {
+  grid-column: 1 / -1;
+}
+
+.theme-doc-sidebar-container {
+  border-right-color: var(--hugegraph-border) !important;
+}
+
+.theme-doc-sidebar-item-category-level-1 > .menu__list-item-collapsible 
.menu__link {
+  font-weight: 700;
+}
+
+.markdown h1,
+.markdown h2,
+.markdown h3 {
+  letter-spacing: 0;
+}
+
+.markdown table {
+  display: table;
+  width: 100%;
+}
+
+.markdown img {
+  border: 1px solid var(--hugegraph-border);
+  border-radius: 8px;
+  max-width: 100%;
+}
+
+.footer {
+  background: #14171f;
+}
+
+.footer__logo {
+  background: #ffffff;
+  border-radius: 8px;
+  padding: 0.6rem;
+}
+
+.footer__copyright {
+  color: #d7dce5;
+  margin: 1.5rem auto 0;
+  max-width: 1060px;
+}
+
+@media (max-width: 996px) {
+  .hugegraphHero {
+    min-height: 68vh;
+  }
+
+  .hugegraphHero h1 {
+    font-size: 4rem;
+  }
+
+  .hugegraphHero__lead {
+    font-size: 1.2rem;
+  }
+
+  .sectionHeading h2,
+  .ecosystemLayout h2 {
+    font-size: 2.2rem;
+  }
+
+  .highlightGrid,
+  .ecosystemLayout {
+    grid-template-columns: 1fr;
+  }
+
+  .ecosystemMap {
+    grid-template-columns: 1fr;
+  }
+
+  .ecosystemNode--5 {
+    grid-column: auto;
+  }
+}
+
+@media (max-width: 480px) {
+  .hugegraphHero__content {
+    padding: 4rem 1rem 3rem;
+  }
+
+  .hugegraphHero h1 {
+    font-size: 3rem;
+  }
+
+  .siteBand {
+    padding: 3rem 0;
+  }
+
+  .productCard,
+  .ecosystemNode {
+    min-height: auto;
+  }
+}
diff --git a/src/markdown/frontMatter.js b/src/markdown/frontMatter.js
new file mode 100644
index 00000000..de908ae0
--- /dev/null
+++ b/src/markdown/frontMatter.js
@@ -0,0 +1,81 @@
+const path = require('path');
+const {DEFAULT_PARSE_FRONT_MATTER} = require('@docusaurus/utils');
+
+function indexSlug(filePath) {
+  if (path.basename(filePath) !== '_index.md') {
+    return undefined;
+  }
+
+  const normalized = filePath.split(path.sep).join('/');
+  const match = 
normalized.match(/content\/(?:en|cn)\/(?:docs|community)\/(.*)_index\.md$/);
+  if (!match) {
+    return undefined;
+  }
+
+  const slug = match[1].replace(/\/$/, '');
+  return slug ? `/${slug}` : '/';
+}
+
+function slugify(value) {
+  return String(value)
+    .trim()
+    .toLowerCase()
+    .replace(/&/g, ' and ')
+    .replace(/[^a-z0-9\u4e00-\u9fa5]+/g, '-')
+    .replace(/^-+|-+$/g, '');
+}
+
+function blogSlug(filePath, frontMatter) {
+  const normalized = filePath.split(path.sep).join('/');
+  if (!normalized.includes('/content/en/blog/') && 
!normalized.includes('/content/cn/blog/')) {
+    return undefined;
+  }
+  if (!frontMatter.date) {
+    return undefined;
+  }
+
+  const date =
+    frontMatter.date instanceof Date
+      ? frontMatter.date.toISOString().slice(0, 10)
+      : String(frontMatter.date).slice(0, 10);
+  const match = date.match(/^(\d{4})-(\d{2})-(\d{2})$/);
+  if (!match) {
+    return undefined;
+  }
+
+  const [, year, month, day] = match;
+  const fallback = path.basename(filePath).replace(/\.mdx?$/i, '');
+  return `/${year}/${month}/${day}/${slugify(frontMatter.title || fallback)}`;
+}
+
+function legacyDocSlug(filePath) {
+  const normalized = filePath.split(path.sep).join('/');
+  const match = 
normalized.match(/content\/(?:en|cn)\/docs\/download\/download\.md$/);
+  return match ? '/download/download' : undefined;
+}
+
+module.exports = async function parseHugoFrontMatter(args) {
+  const parsed = await DEFAULT_PARSE_FRONT_MATTER(args);
+  parsed.frontMatter = parsed.frontMatter || {};
+  const slug = indexSlug(args.filePath);
+
+  if (slug && parsed.frontMatter.slug === undefined) {
+    parsed.frontMatter.slug = slug;
+  }
+
+  const legacySlug = legacyDocSlug(args.filePath);
+  if (legacySlug && parsed.frontMatter.slug === undefined) {
+    parsed.frontMatter.slug = legacySlug;
+  }
+
+  const postSlug = blogSlug(args.filePath, parsed.frontMatter);
+  if (postSlug && parsed.frontMatter.slug === undefined) {
+    parsed.frontMatter.slug = postSlug;
+  }
+
+  if (parsed.frontMatter.linkTitle && parsed.frontMatter.sidebar_label === 
undefined) {
+    parsed.frontMatter.sidebar_label = parsed.frontMatter.linkTitle;
+  }
+
+  return parsed;
+};
diff --git a/src/pages/cn/index.js b/src/pages/cn/index.js
new file mode 100644
index 00000000..80658588
--- /dev/null
+++ b/src/pages/cn/index.js
@@ -0,0 +1,115 @@
+import React from 'react';
+import clsx from 'clsx';
+import Layout from '@theme/Layout';
+import Link from '@docusaurus/Link';
+
+const highlights = [
+  {
+    title: '图数据库',
+    text: '面向 OLTP 场景的图存储与实时遍历,支持 REST、Gremlin 和 Cypher 访问。',
+    link: '/cn/docs/quickstart/hugegraph/hugegraph-server/',
+  },
+  {
+    title: '图计算',
+    text: '通过 HugeGraph Computer 与 Vermeer 处理大规模图分析任务。',
+    link: '/cn/docs/quickstart/computing/hugegraph-computer/',
+  },
+  {
+    title: '图智能',
+    text: 'GraphRAG、知识图谱构建以及图机器学习组件。',
+    link: '/cn/docs/quickstart/hugegraph-ai/',
+  },
+];
+
+const components = [
+  ['Server', '在线图查询核心引擎'],
+  ['Store / PD', '分布式存储与元数据调度'],
+  ['Toolchain', 'Loader、Hubble、客户端与运维工具'],
+  ['Computer', '分布式图分析与批处理'],
+  ['AI', 'LLM、RAG 与图机器学习集成'],
+];
+
+function HomepageHeader() {
+  return (
+    <header className="hugegraphHero">
+      <div className="hugegraphHero__overlay" />
+      <div className="hugegraphHero__content">
+        <p className="apacheEyebrow">Apache Software Foundation Project</p>
+        <h1>Apache HugeGraph</h1>
+        <p className="hugegraphHero__lead">
+          面向实时图查询、大规模图分析和 AI 应用的全栈图数据库生态系统。
+        </p>
+        <div className="hugegraphHero__actions">
+          <Link className="button button--primary button--lg" to="/cn/docs/">
+            阅读文档
+          </Link>
+          <Link className="button button--secondary button--lg" 
to="/cn/docs/download/download/">
+            下载
+          </Link>
+        </div>
+      </div>
+    </header>
+  );
+}
+
+function Highlights() {
+  return (
+    <section className="siteBand siteBand--light">
+      <div className="container">
+        <div className="sectionHeading">
+          <p className="apacheEyebrow">文档入口</p>
+          <h2>从你需要的技术栈开始</h2>
+        </div>
+        <div className="highlightGrid">
+          {highlights.map((item) => (
+            <article className="productCard" key={item.title}>
+              <h3>{item.title}</h3>
+              <p>{item.text}</p>
+              <Link to={item.link}>打开指南</Link>
+            </article>
+          ))}
+        </div>
+      </div>
+    </section>
+  );
+}
+
+function Ecosystem() {
+  return (
+    <section className="siteBand">
+      <div className="container ecosystemLayout">
+        <div>
+          <p className="apacheEyebrow">HugeGraph 生态</p>
+          <h2>覆盖完整项目族的一站式文档</h2>
+          <p>
+            新站点保留 HugeGraph Server、Store、PD、Toolchain、Computer 与 AI
+            文档,并提供中英文导航。
+          </p>
+          <Link className="button button--outline button--primary" 
to="/cn/community/">
+            社区
+          </Link>
+        </div>
+        <div className="ecosystemMap" aria-label="HugeGraph ecosystem 
components">
+          {components.map(([name, text], index) => (
+            <div className={clsx('ecosystemNode', `ecosystemNode--${index + 
1}`)} key={name}>
+              <strong>{name}</strong>
+              <span>{text}</span>
+            </div>
+          ))}
+        </div>
+      </div>
+    </section>
+  );
+}
+
+export default function HomeCn() {
+  return (
+    <Layout title="Apache HugeGraph" description="Apache HugeGraph 中文文档。">
+      <HomepageHeader />
+      <main>
+        <Highlights />
+        <Ecosystem />
+      </main>
+    </Layout>
+  );
+}
diff --git a/src/pages/index.js b/src/pages/index.js
new file mode 100644
index 00000000..eaf0aafd
--- /dev/null
+++ b/src/pages/index.js
@@ -0,0 +1,118 @@
+import React from 'react';
+import clsx from 'clsx';
+import Layout from '@theme/Layout';
+import Link from '@docusaurus/Link';
+
+const highlights = [
+  {
+    title: 'Graph Database',
+    text: 'OLTP graph storage and real-time traversal with REST, Gremlin, and 
Cypher access paths.',
+    link: '/docs/quickstart/hugegraph/hugegraph-server/',
+  },
+  {
+    title: 'Graph Computing',
+    text: 'OLAP processing for large graphs through HugeGraph Computer and 
Vermeer.',
+    link: '/docs/quickstart/computing/hugegraph-computer/',
+  },
+  {
+    title: 'Graph AI',
+    text: 'GraphRAG, knowledge graph construction, and graph machine learning 
components.',
+    link: '/docs/quickstart/hugegraph-ai/',
+  },
+];
+
+const components = [
+  ['Server', 'Core graph engine for online graph queries'],
+  ['Store / PD', 'Distributed storage and placement metadata'],
+  ['Toolchain', 'Loader, Hubble, clients, and operational tools'],
+  ['Computer', 'Distributed graph analytics and batch processing'],
+  ['AI', 'LLM, RAG, and graph ML integrations'],
+];
+
+function HomepageHeader() {
+  return (
+    <header className="hugegraphHero">
+      <div className="hugegraphHero__overlay" />
+      <div className="hugegraphHero__content">
+        <p className="apacheEyebrow">Apache Software Foundation Project</p>
+        <h1>Apache HugeGraph</h1>
+        <p className="hugegraphHero__lead">
+          A full-stack graph database ecosystem for real-time graph queries,
+          large-scale graph analytics, and AI applications.
+        </p>
+        <div className="hugegraphHero__actions">
+          <Link className="button button--primary button--lg" to="/docs/">
+            Read Documentation
+          </Link>
+          <Link className="button button--secondary button--lg" 
to="/docs/download/download/">
+            Download
+          </Link>
+        </div>
+      </div>
+    </header>
+  );
+}
+
+function Highlights() {
+  return (
+    <section className="siteBand siteBand--light">
+      <div className="container">
+        <div className="sectionHeading">
+          <p className="apacheEyebrow">Documentation Entry Points</p>
+          <h2>Start from the part of the stack you need</h2>
+        </div>
+        <div className="highlightGrid">
+          {highlights.map((item) => (
+            <article className="productCard" key={item.title}>
+              <h3>{item.title}</h3>
+              <p>{item.text}</p>
+              <Link to={item.link}>Open guide</Link>
+            </article>
+          ))}
+        </div>
+      </div>
+    </section>
+  );
+}
+
+function Ecosystem() {
+  return (
+    <section className="siteBand">
+      <div className="container ecosystemLayout">
+        <div>
+          <p className="apacheEyebrow">HugeGraph Ecosystem</p>
+          <h2>One documentation home for the full project family</h2>
+          <p>
+            The site keeps the existing HugeGraph Server, Store, PD, Toolchain,
+            Computer, and AI documentation together with bilingual navigation.
+          </p>
+          <Link className="button button--outline button--primary" 
to="/community/">
+            Community
+          </Link>
+        </div>
+        <div className="ecosystemMap" aria-label="HugeGraph ecosystem 
components">
+          {components.map(([name, text], index) => (
+            <div className={clsx('ecosystemNode', `ecosystemNode--${index + 
1}`)} key={name}>
+              <strong>{name}</strong>
+              <span>{text}</span>
+            </div>
+          ))}
+        </div>
+      </div>
+    </section>
+  );
+}
+
+export default function Home() {
+  return (
+    <Layout
+      title="Apache HugeGraph"
+      description="Apache HugeGraph documentation for graph database, graph 
computing, and graph AI.">
+      <HomepageHeader />
+      <main>
+        <Highlights />
+        <Ecosystem />
+      </main>
+    </Layout>
+  );
+}
diff --git a/src/sidebars/buildSidebars.js b/src/sidebars/buildSidebars.js
new file mode 100644
index 00000000..db26224c
--- /dev/null
+++ b/src/sidebars/buildSidebars.js
@@ -0,0 +1,145 @@
+const fs = require('fs');
+const path = require('path');
+
+const SKIP_DIRS = new Set(['images', 'scripts', 'styles']);
+const SKIP_FILES = new Set(['SUMMARY.md']);
+
+const SECTION_ORDER = [
+  'introduction',
+  'download',
+  'quickstart',
+  'config',
+  'clients',
+  'guides',
+  'language',
+  'performance',
+  'contribution-guidelines',
+  'changelog',
+];
+
+function readFrontMatter(filePath) {
+  const text = fs.readFileSync(filePath, 'utf8');
+  const match = text.match(/^---\n([\s\S]*?)\n---/);
+  if (!match) {
+    return {};
+  }
+
+  const data = {};
+  for (const line of match[1].split('\n')) {
+    const item = line.match(/^([A-Za-z_][A-Za-z0-9_]*):\s*(.*)$/);
+    if (!item) {
+      continue;
+    }
+    data[item[1]] = item[2].replace(/^['"]|['"]$/g, '');
+  }
+  return data;
+}
+
+function labelFromPath(filePath, fallback) {
+  const fm = readFrontMatter(filePath);
+  return fm.linkTitle || fm.title || fallback;
+}
+
+function weight(filePath, name) {
+  const fm = fs.existsSync(filePath) ? readFrontMatter(filePath) : {};
+  if (fm.weight !== undefined && !Number.isNaN(Number(fm.weight))) {
+    return Number(fm.weight);
+  }
+  const sectionIndex = SECTION_ORDER.indexOf(name);
+  return sectionIndex === -1 ? 1000 : sectionIndex;
+}
+
+function stripExtension(fileName) {
+  return fileName.replace(/\.mdx?$/i, '');
+}
+
+function docId(relPath) {
+  return stripExtension(relPath).split(path.sep).join('/');
+}
+
+function titleCase(value) {
+  return value
+    .replace(/[-_]+/g, ' ')
+    .replace(/\b\w/g, (char) => char.toUpperCase());
+}
+
+function sortEntries(baseDir, relDir, entries) {
+  return entries.sort((a, b) => {
+    const aPath = path.join(baseDir, relDir, a.name, a.isDirectory() ? 
'_index.md' : '');
+    const bPath = path.join(baseDir, relDir, b.name, b.isDirectory() ? 
'_index.md' : '');
+    const aWeight = weight(a.isDirectory() ? aPath : path.join(baseDir, 
relDir, a.name), stripExtension(a.name));
+    const bWeight = weight(b.isDirectory() ? bPath : path.join(baseDir, 
relDir, b.name), stripExtension(b.name));
+    if (aWeight !== bWeight) {
+      return aWeight - bWeight;
+    }
+    return a.name.localeCompare(b.name);
+  });
+}
+
+function buildDirectory(baseDir, relDir = '') {
+  const dir = path.join(baseDir, relDir);
+  const entries = fs.readdirSync(dir, {withFileTypes: true});
+
+  const files = sortEntries(
+    baseDir,
+    relDir,
+    entries.filter(
+      (entry) =>
+        entry.isFile() &&
+        /\.mdx?$/i.test(entry.name) &&
+        entry.name !== '_index.md' &&
+        !SKIP_FILES.has(entry.name),
+    ),
+  ).map((entry) => ({
+    type: 'doc',
+    id: docId(path.join(relDir, entry.name)),
+    label: labelFromPath(path.join(baseDir, relDir, entry.name), 
titleCase(stripExtension(entry.name))),
+  }));
+
+  const dirs = sortEntries(
+    baseDir,
+    relDir,
+    entries.filter((entry) => entry.isDirectory() && 
!SKIP_DIRS.has(entry.name)),
+  ).map((entry) => buildCategory(baseDir, path.join(relDir, entry.name)));
+
+  return [...dirs, ...files];
+}
+
+function buildCategory(baseDir, relDir) {
+  const indexFile = path.join(baseDir, relDir, '_index.md');
+  const label = fs.existsSync(indexFile)
+    ? labelFromPath(indexFile, titleCase(path.basename(relDir)))
+    : titleCase(path.basename(relDir));
+  const category = {
+    type: 'category',
+    label,
+    collapsible: true,
+    collapsed: true,
+    items: buildDirectory(baseDir, relDir),
+  };
+
+  if (fs.existsSync(indexFile)) {
+    category.link = {
+      type: 'doc',
+      id: docId(path.join(relDir, '_index.md')),
+    };
+  }
+
+  return category;
+}
+
+function buildSidebar(baseDir) {
+  const items = [];
+  const rootIndex = path.join(baseDir, '_index.md');
+  if (fs.existsSync(rootIndex)) {
+    items.push({
+      type: 'doc',
+      id: '_index',
+      label: labelFromPath(rootIndex, 'Documentation'),
+    });
+  }
+  items.push(...buildDirectory(baseDir));
+  return items;
+}
+
+module.exports = {buildSidebar};
diff --git a/static/blog/images/images-server/agentic-abstract.png 
b/static/blog/images/images-server/agentic-abstract.png
new file mode 100644
index 00000000..4703cc43
Binary files /dev/null and 
b/static/blog/images/images-server/agentic-abstract.png differ
diff --git a/static/blog/images/images-server/agentic-background.png 
b/static/blog/images/images-server/agentic-background.png
new file mode 100644
index 00000000..8d01f796
Binary files /dev/null and 
b/static/blog/images/images-server/agentic-background.png differ
diff --git a/static/blog/images/images-server/agentic-frame.png 
b/static/blog/images/images-server/agentic-frame.png
new file mode 100644
index 00000000..7fddf769
Binary files /dev/null and b/static/blog/images/images-server/agentic-frame.png 
differ
diff --git a/static/blog/images/images-server/agentic-lifeline.svg 
b/static/blog/images/images-server/agentic-lifeline.svg
new file mode 100644
index 00000000..010b19a9
--- /dev/null
+++ b/static/blog/images/images-server/agentic-lifeline.svg
@@ -0,0 +1 @@
+<svg aria-roledescription="sequence" role="graphics-document document" 
viewBox="-50 -10 1378.5 2189" style="max-width: 1378.5px;" 
xmlns:xlink="http://www.w3.org/1999/xlink"; xmlns="http://www.w3.org/2000/svg"; 
width="100%" id="mermaid-1762185155961"><g><rect class="actor actor-bottom" 
ry="3" rx="3" name="Node" height="65" width="150" stroke="#666" fill="#eaeaea" 
y="2103" x="1128.5"/><text style="text-anchor: middle; font-size: 16px; 
font-weight: 400;" class="actor actor-box" alignment-base [...]
\ No newline at end of file
diff --git a/static/blog/images/images-server/agentic-pydantic.png 
b/static/blog/images/images-server/agentic-pydantic.png
new file mode 100644
index 00000000..26d9c169
Binary files /dev/null and 
b/static/blog/images/images-server/agentic-pydantic.png differ
diff --git a/static/blog/images/images-server/agentic-scheduler.png 
b/static/blog/images/images-server/agentic-scheduler.png
new file mode 100644
index 00000000..1b4c960e
Binary files /dev/null and 
b/static/blog/images/images-server/agentic-scheduler.png differ
diff --git a/static/blog/images/images-server/toplingdb-web-server.png 
b/static/blog/images/images-server/toplingdb-web-server.png
new file mode 100644
index 00000000..aa475ff3
Binary files /dev/null and 
b/static/blog/images/images-server/toplingdb-web-server.png differ
diff --git a/static/blog/images/images-server/toplingdb-yaml-ref.png 
b/static/blog/images/images-server/toplingdb-yaml-ref.png
new file mode 100644
index 00000000..07476def
Binary files /dev/null and 
b/static/blog/images/images-server/toplingdb-yaml-ref.png differ
diff --git a/static/docs/images/API-perf/v0.4.4/best.png 
b/static/docs/images/API-perf/v0.4.4/best.png
new file mode 100644
index 00000000..2aa751a8
Binary files /dev/null and b/static/docs/images/API-perf/v0.4.4/best.png differ
diff --git a/static/docs/images/API-perf/v0.4.4/cpu-memory.png 
b/static/docs/images/API-perf/v0.4.4/cpu-memory.png
new file mode 100644
index 00000000..05fb760d
Binary files /dev/null and b/static/docs/images/API-perf/v0.4.4/cpu-memory.png 
differ
diff --git a/static/docs/images/API-perf/v0.4.4/ssd.png 
b/static/docs/images/API-perf/v0.4.4/ssd.png
new file mode 100644
index 00000000..46b4de1e
Binary files /dev/null and b/static/docs/images/API-perf/v0.4.4/ssd.png differ
diff --git a/static/docs/images/API-perf/v0.4.4/threads-batch.png 
b/static/docs/images/API-perf/v0.4.4/threads-batch.png
new file mode 100644
index 00000000..410fdc65
Binary files /dev/null and 
b/static/docs/images/API-perf/v0.4.4/threads-batch.png differ
diff --git a/static/docs/images/API-perf/v0.4.4/threads-single.png 
b/static/docs/images/API-perf/v0.4.4/threads-single.png
new file mode 100644
index 00000000..b2a28259
Binary files /dev/null and 
b/static/docs/images/API-perf/v0.4.4/threads-single.png differ
diff --git a/static/docs/images/API-perf/v0.5.6/cassandra/edge_batch.png 
b/static/docs/images/API-perf/v0.5.6/cassandra/edge_batch.png
new file mode 100644
index 00000000..a3bfb33a
Binary files /dev/null and 
b/static/docs/images/API-perf/v0.5.6/cassandra/edge_batch.png differ
diff --git a/static/docs/images/API-perf/v0.5.6/cassandra/edge_id_query.png 
b/static/docs/images/API-perf/v0.5.6/cassandra/edge_id_query.png
new file mode 100644
index 00000000..e8d9ce6c
Binary files /dev/null and 
b/static/docs/images/API-perf/v0.5.6/cassandra/edge_id_query.png differ
diff --git a/static/docs/images/API-perf/v0.5.6/cassandra/edge_single.png 
b/static/docs/images/API-perf/v0.5.6/cassandra/edge_single.png
new file mode 100644
index 00000000..6cdf74b4
Binary files /dev/null and 
b/static/docs/images/API-perf/v0.5.6/cassandra/edge_single.png differ
diff --git a/static/docs/images/API-perf/v0.5.6/cassandra/vertex_batch.png 
b/static/docs/images/API-perf/v0.5.6/cassandra/vertex_batch.png
new file mode 100644
index 00000000..e69a9e78
Binary files /dev/null and 
b/static/docs/images/API-perf/v0.5.6/cassandra/vertex_batch.png differ
diff --git a/static/docs/images/API-perf/v0.5.6/cassandra/vertex_id_query.png 
b/static/docs/images/API-perf/v0.5.6/cassandra/vertex_id_query.png
new file mode 100644
index 00000000..efb4702b
Binary files /dev/null and 
b/static/docs/images/API-perf/v0.5.6/cassandra/vertex_id_query.png differ
diff --git a/static/docs/images/API-perf/v0.5.6/cassandra/vertex_single.png 
b/static/docs/images/API-perf/v0.5.6/cassandra/vertex_single.png
new file mode 100644
index 00000000..e411da21
Binary files /dev/null and 
b/static/docs/images/API-perf/v0.5.6/cassandra/vertex_single.png differ
diff --git a/static/docs/images/API-perf/v0.5.6/rocksdb/edge_batch.png 
b/static/docs/images/API-perf/v0.5.6/rocksdb/edge_batch.png
new file mode 100644
index 00000000..d1639c98
Binary files /dev/null and 
b/static/docs/images/API-perf/v0.5.6/rocksdb/edge_batch.png differ
diff --git a/static/docs/images/API-perf/v0.5.6/rocksdb/edge_id_query.png 
b/static/docs/images/API-perf/v0.5.6/rocksdb/edge_id_query.png
new file mode 100644
index 00000000..bf34321c
Binary files /dev/null and 
b/static/docs/images/API-perf/v0.5.6/rocksdb/edge_id_query.png differ
diff --git a/static/docs/images/API-perf/v0.5.6/rocksdb/edge_single.png 
b/static/docs/images/API-perf/v0.5.6/rocksdb/edge_single.png
new file mode 100644
index 00000000..67b011e3
Binary files /dev/null and 
b/static/docs/images/API-perf/v0.5.6/rocksdb/edge_single.png differ
diff --git a/static/docs/images/API-perf/v0.5.6/rocksdb/vertex_batch.png 
b/static/docs/images/API-perf/v0.5.6/rocksdb/vertex_batch.png
new file mode 100644
index 00000000..ce3d54e6
Binary files /dev/null and 
b/static/docs/images/API-perf/v0.5.6/rocksdb/vertex_batch.png differ
diff --git a/static/docs/images/API-perf/v0.5.6/rocksdb/vertex_id_query.png 
b/static/docs/images/API-perf/v0.5.6/rocksdb/vertex_id_query.png
new file mode 100644
index 00000000..db20de6b
Binary files /dev/null and 
b/static/docs/images/API-perf/v0.5.6/rocksdb/vertex_id_query.png differ
diff --git a/static/docs/images/API-perf/v0.5.6/rocksdb/vertex_single.png 
b/static/docs/images/API-perf/v0.5.6/rocksdb/vertex_single.png
new file mode 100644
index 00000000..2378cc06
Binary files /dev/null and 
b/static/docs/images/API-perf/v0.5.6/rocksdb/vertex_single.png differ
diff --git a/static/docs/images/demo-graph-model.png 
b/static/docs/images/demo-graph-model.png
new file mode 100644
index 00000000..b7071125
Binary files /dev/null and b/static/docs/images/demo-graph-model.png differ
diff --git a/static/docs/images/design/GraphCut.png 
b/static/docs/images/design/GraphCut.png
new file mode 100644
index 00000000..adf3852d
Binary files /dev/null and b/static/docs/images/design/GraphCut.png differ
diff --git a/static/docs/images/design/PropertyGraph.png 
b/static/docs/images/design/PropertyGraph.png
new file mode 100644
index 00000000..12dbde1d
Binary files /dev/null and b/static/docs/images/design/PropertyGraph.png differ
diff --git a/static/docs/images/design/Self-loop.png 
b/static/docs/images/design/Self-loop.png
new file mode 100644
index 00000000..274a8b89
Binary files /dev/null and b/static/docs/images/design/Self-loop.png differ
diff --git a/static/docs/images/design/architectural-component.png 
b/static/docs/images/design/architectural-component.png
new file mode 100644
index 00000000..c4e7117b
Binary files /dev/null and 
b/static/docs/images/design/architectural-component.png differ
diff --git a/static/docs/images/design/architectural-overview.png 
b/static/docs/images/design/architectural-overview.png
new file mode 100644
index 00000000..c6b9a8e8
Binary files /dev/null and 
b/static/docs/images/design/architectural-overview.png differ
diff --git a/static/docs/images/design/architectural-revised.png 
b/static/docs/images/design/architectural-revised.png
new file mode 100644
index 00000000..2316ebf9
Binary files /dev/null and 
b/static/docs/images/design/architectural-revised.png differ
diff --git a/static/docs/images/design1-1.png b/static/docs/images/design1-1.png
new file mode 100644
index 00000000..27609f76
Binary files /dev/null and b/static/docs/images/design1-1.png differ
diff --git a/static/docs/images/design1-2.png b/static/docs/images/design1-2.png
new file mode 100644
index 00000000..5c56dc51
Binary files /dev/null and b/static/docs/images/design1-2.png differ
diff --git a/static/docs/images/design1-3.png b/static/docs/images/design1-3.png
new file mode 100644
index 00000000..adf3852d
Binary files /dev/null and b/static/docs/images/design1-3.png differ
diff --git a/static/docs/images/design1-5.png b/static/docs/images/design1-5.png
new file mode 100644
index 00000000..c52397f1
Binary files /dev/null and b/static/docs/images/design1-5.png differ
diff --git a/static/docs/images/design1-6.png b/static/docs/images/design1-6.png
new file mode 100644
index 00000000..e9e885d0
Binary files /dev/null and b/static/docs/images/design1-6.png differ
diff --git a/static/docs/images/design4-1.png b/static/docs/images/design4-1.png
new file mode 100644
index 00000000..c6b9a8e8
Binary files /dev/null and b/static/docs/images/design4-1.png differ
diff --git a/static/docs/images/design5-1.png b/static/docs/images/design5-1.png
new file mode 100644
index 00000000..c4e7117b
Binary files /dev/null and b/static/docs/images/design5-1.png differ
diff --git a/static/docs/images/design5-2.png b/static/docs/images/design5-2.png
new file mode 100644
index 00000000..8785ce8b
Binary files /dev/null and b/static/docs/images/design5-2.png differ
diff --git a/static/docs/images/design5-3.png b/static/docs/images/design5-3.png
new file mode 100644
index 00000000..e7359a67
Binary files /dev/null and b/static/docs/images/design5-3.png differ
diff --git a/static/docs/images/design5-4.png b/static/docs/images/design5-4.png
new file mode 100644
index 00000000..3ce55112
Binary files /dev/null and b/static/docs/images/design5-4.png differ
diff --git a/static/docs/images/design5-5.png b/static/docs/images/design5-5.png
new file mode 100644
index 00000000..b7645b88
Binary files /dev/null and b/static/docs/images/design5-5.png differ
diff --git a/static/docs/images/favicon.ico b/static/docs/images/favicon.ico
new file mode 100644
index 00000000..53f0191e
Binary files /dev/null and b/static/docs/images/favicon.ico differ
diff --git a/static/docs/images/gradio-config.png 
b/static/docs/images/gradio-config.png
new file mode 100644
index 00000000..b5a28252
Binary files /dev/null and b/static/docs/images/gradio-config.png differ
diff --git a/static/docs/images/gradio-kg.png b/static/docs/images/gradio-kg.png
new file mode 100644
index 00000000..825c1933
Binary files /dev/null and b/static/docs/images/gradio-kg.png differ
diff --git a/static/docs/images/gradio-rag-1.png 
b/static/docs/images/gradio-rag-1.png
new file mode 100644
index 00000000..0a4df78c
Binary files /dev/null and b/static/docs/images/gradio-rag-1.png differ
diff --git a/static/docs/images/gradio-rag-2.png 
b/static/docs/images/gradio-rag-2.png
new file mode 100644
index 00000000..ee24cc43
Binary files /dev/null and b/static/docs/images/gradio-rag-2.png differ
diff --git a/static/docs/images/gradio-rag.png 
b/static/docs/images/gradio-rag.png
new file mode 100644
index 00000000..855ed655
Binary files /dev/null and b/static/docs/images/gradio-rag.png differ
diff --git a/static/docs/images/graph-of-gods.png 
b/static/docs/images/graph-of-gods.png
new file mode 100644
index 00000000..616c9f79
Binary files /dev/null and b/static/docs/images/graph-of-gods.png differ
diff --git 
"a/static/docs/images/images-hubble/2\345\271\263\345\217\260\344\275\277\347\224\250\346\265\201\347\250\213.png"
 
"b/static/docs/images/images-hubble/2\345\271\263\345\217\260\344\275\277\347\224\250\346\265\201\347\250\213.png"
new file mode 100644
index 00000000..c2c902cd
Binary files /dev/null and 
"b/static/docs/images/images-hubble/2\345\271\263\345\217\260\344\275\277\347\224\250\346\265\201\347\250\213.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/311\345\233\276\345\210\233\345\273\272.png"
 
"b/static/docs/images/images-hubble/311\345\233\276\345\210\233\345\273\272.png"
new file mode 100644
index 00000000..b44bd14c
Binary files /dev/null and 
"b/static/docs/images/images-hubble/311\345\233\276\345\210\233\345\273\272.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/311\345\233\276\345\210\233\345\273\2722.png"
 
"b/static/docs/images/images-hubble/311\345\233\276\345\210\233\345\273\2722.png"
new file mode 100644
index 00000000..2ad9c529
Binary files /dev/null and 
"b/static/docs/images/images-hubble/311\345\233\276\345\210\233\345\273\2722.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/312\345\233\276\350\256\277\351\227\256.png"
 
"b/static/docs/images/images-hubble/312\345\233\276\350\256\277\351\227\256.png"
new file mode 100644
index 00000000..6c1b7913
Binary files /dev/null and 
"b/static/docs/images/images-hubble/312\345\233\276\350\256\277\351\227\256.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/313\345\233\276\347\256\241\347\220\206.png"
 
"b/static/docs/images/images-hubble/313\345\233\276\347\256\241\347\220\206.png"
new file mode 100644
index 00000000..dd98d97f
Binary files /dev/null and 
"b/static/docs/images/images-hubble/313\345\233\276\347\256\241\347\220\206.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/321\345\205\203\346\225\260\346\215\256\345\205\245\345\217\243.png"
 
"b/static/docs/images/images-hubble/321\345\205\203\346\225\260\346\215\256\345\205\245\345\217\243.png"
new file mode 100644
index 00000000..3004ed0d
Binary files /dev/null and 
"b/static/docs/images/images-hubble/321\345\205\203\346\225\260\346\215\256\345\205\245\345\217\243.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/3221\345\261\236\346\200\247\345\210\233\345\273\272.png"
 
"b/static/docs/images/images-hubble/3221\345\261\236\346\200\247\345\210\233\345\273\272.png"
new file mode 100644
index 00000000..5da69a18
Binary files /dev/null and 
"b/static/docs/images/images-hubble/3221\345\261\236\346\200\247\345\210\233\345\273\272.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/3221\345\261\236\346\200\247\345\210\233\345\273\2722.png"
 
"b/static/docs/images/images-hubble/3221\345\261\236\346\200\247\345\210\233\345\273\2722.png"
new file mode 100644
index 00000000..8b277fb1
Binary files /dev/null and 
"b/static/docs/images/images-hubble/3221\345\261\236\346\200\247\345\210\233\345\273\2722.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/3222\345\261\236\346\200\247\345\244\215\347\224\250.png"
 
"b/static/docs/images/images-hubble/3222\345\261\236\346\200\247\345\244\215\347\224\250.png"
new file mode 100644
index 00000000..634ae136
Binary files /dev/null and 
"b/static/docs/images/images-hubble/3222\345\261\236\346\200\247\345\244\215\347\224\250.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/3222\345\261\236\346\200\247\345\244\215\347\224\2502.png"
 
"b/static/docs/images/images-hubble/3222\345\261\236\346\200\247\345\244\215\347\224\2502.png"
new file mode 100644
index 00000000..ef0054d0
Binary files /dev/null and 
"b/static/docs/images/images-hubble/3222\345\261\236\346\200\247\345\244\215\347\224\2502.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/3231\351\241\266\347\202\271\345\210\233\345\273\272.png"
 
"b/static/docs/images/images-hubble/3231\351\241\266\347\202\271\345\210\233\345\273\272.png"
new file mode 100644
index 00000000..0a43bfd6
Binary files /dev/null and 
"b/static/docs/images/images-hubble/3231\351\241\266\347\202\271\345\210\233\345\273\272.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/3231\351\241\266\347\202\271\345\210\233\345\273\2722.png"
 
"b/static/docs/images/images-hubble/3231\351\241\266\347\202\271\345\210\233\345\273\2722.png"
new file mode 100644
index 00000000..339c89e3
Binary files /dev/null and 
"b/static/docs/images/images-hubble/3231\351\241\266\347\202\271\345\210\233\345\273\2722.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/3233\351\241\266\347\202\271\345\210\240\351\231\244.png"
 
"b/static/docs/images/images-hubble/3233\351\241\266\347\202\271\345\210\240\351\231\244.png"
new file mode 100644
index 00000000..0ef343f5
Binary files /dev/null and 
"b/static/docs/images/images-hubble/3233\351\241\266\347\202\271\345\210\240\351\231\244.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/3241\350\276\271\345\210\233\345\273\272.png"
 
"b/static/docs/images/images-hubble/3241\350\276\271\345\210\233\345\273\272.png"
new file mode 100644
index 00000000..545e6050
Binary files /dev/null and 
"b/static/docs/images/images-hubble/3241\350\276\271\345\210\233\345\273\272.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/3241\350\276\271\345\210\233\345\273\2722.png"
 
"b/static/docs/images/images-hubble/3241\350\276\271\345\210\233\345\273\2722.png"
new file mode 100644
index 00000000..ac536c88
Binary files /dev/null and 
"b/static/docs/images/images-hubble/3241\350\276\271\345\210\233\345\273\2722.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/331\345\257\274\345\205\245\345\205\245\345\217\243.png"
 
"b/static/docs/images/images-hubble/331\345\257\274\345\205\245\345\205\245\345\217\243.png"
new file mode 100644
index 00000000..caf203f5
Binary files /dev/null and 
"b/static/docs/images/images-hubble/331\345\257\274\345\205\245\345\205\245\345\217\243.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/332\345\210\233\345\273\272\344\273\273\345\212\241.png"
 
"b/static/docs/images/images-hubble/332\345\210\233\345\273\272\344\273\273\345\212\241.png"
new file mode 100644
index 00000000..109aa482
Binary files /dev/null and 
"b/static/docs/images/images-hubble/332\345\210\233\345\273\272\344\273\273\345\212\241.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/333\344\270\212\344\274\240\346\226\207\344\273\266.png"
 
"b/static/docs/images/images-hubble/333\344\270\212\344\274\240\346\226\207\344\273\266.png"
new file mode 100644
index 00000000..ae738f97
Binary files /dev/null and 
"b/static/docs/images/images-hubble/333\344\270\212\344\274\240\346\226\207\344\273\266.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/334\350\256\276\347\275\256\346\230\240\345\260\204.png"
 
"b/static/docs/images/images-hubble/334\350\256\276\347\275\256\346\230\240\345\260\204.png"
new file mode 100644
index 00000000..7d5ac74a
Binary files /dev/null and 
"b/static/docs/images/images-hubble/334\350\256\276\347\275\256\346\230\240\345\260\204.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/334\350\256\276\347\275\256\346\230\240\345\260\2042.png"
 
"b/static/docs/images/images-hubble/334\350\256\276\347\275\256\346\230\240\345\260\2042.png"
new file mode 100644
index 00000000..26d7b56e
Binary files /dev/null and 
"b/static/docs/images/images-hubble/334\350\256\276\347\275\256\346\230\240\345\260\2042.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/335\345\257\274\345\205\245\350\256\276\347\275\256.png"
 
"b/static/docs/images/images-hubble/335\345\257\274\345\205\245\350\256\276\347\275\256.png"
new file mode 100644
index 00000000..98913365
Binary files /dev/null and 
"b/static/docs/images/images-hubble/335\345\257\274\345\205\245\350\256\276\347\275\256.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/335\345\257\274\345\205\245\350\257\246\346\203\205.png"
 
"b/static/docs/images/images-hubble/335\345\257\274\345\205\245\350\257\246\346\203\205.png"
new file mode 100644
index 00000000..1bb36aa2
Binary files /dev/null and 
"b/static/docs/images/images-hubble/335\345\257\274\345\205\245\350\257\246\346\203\205.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/33\345\257\274\345\205\245\346\265\201\347\250\213.png"
 
"b/static/docs/images/images-hubble/33\345\257\274\345\205\245\346\265\201\347\250\213.png"
new file mode 100644
index 00000000..604ac360
Binary files /dev/null and 
"b/static/docs/images/images-hubble/33\345\257\274\345\205\245\346\265\201\347\250\213.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/341\345\210\206\346\236\220\345\205\245\345\217\243.png"
 
"b/static/docs/images/images-hubble/341\345\210\206\346\236\220\345\205\245\345\217\243.png"
new file mode 100644
index 00000000..fdaac4dc
Binary files /dev/null and 
"b/static/docs/images/images-hubble/341\345\210\206\346\236\220\345\205\245\345\217\243.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/342\345\244\232\345\233\276\345\210\207\346\215\242.png"
 
"b/static/docs/images/images-hubble/342\345\244\232\345\233\276\345\210\207\346\215\242.png"
new file mode 100644
index 00000000..c4814610
Binary files /dev/null and 
"b/static/docs/images/images-hubble/342\345\244\232\345\233\276\345\210\207\346\215\242.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/343\345\233\276\345\210\206\346\236\220-json.png"
 
"b/static/docs/images/images-hubble/343\345\233\276\345\210\206\346\236\220-json.png"
new file mode 100644
index 00000000..712ffb91
Binary files /dev/null and 
"b/static/docs/images/images-hubble/343\345\233\276\345\210\206\346\236\220-json.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/343\345\233\276\345\210\206\346\236\220-\345\233\276.png"
 
"b/static/docs/images/images-hubble/343\345\233\276\345\210\206\346\236\220-\345\233\276.png"
new file mode 100644
index 00000000..59214e32
Binary files /dev/null and 
"b/static/docs/images/images-hubble/343\345\233\276\345\210\206\346\236\220-\345\233\276.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/343\345\233\276\345\210\206\346\236\220-\350\241\250\346\240\274.png"
 
"b/static/docs/images/images-hubble/343\345\233\276\345\210\206\346\236\220-\350\241\250\346\240\274.png"
new file mode 100644
index 00000000..2cdc6ad6
Binary files /dev/null and 
"b/static/docs/images/images-hubble/343\345\233\276\345\210\206\346\236\220-\350\241\250\346\240\274.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/345\345\256\232\345\210\266\350\267\257\345\276\204\346\237\245\350\257\242.png"
 
"b/static/docs/images/images-hubble/345\345\256\232\345\210\266\350\267\257\345\276\204\346\237\245\350\257\242.png"
new file mode 100644
index 00000000..0ede7322
Binary files /dev/null and 
"b/static/docs/images/images-hubble/345\345\256\232\345\210\266\350\267\257\345\276\204\346\237\245\350\257\242.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/346\346\226\260\345\242\236\351\241\266\347\202\271.png"
 
"b/static/docs/images/images-hubble/346\346\226\260\345\242\236\351\241\266\347\202\271.png"
new file mode 100644
index 00000000..3487fb5b
Binary files /dev/null and 
"b/static/docs/images/images-hubble/346\346\226\260\345\242\236\351\241\266\347\202\271.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/346\346\226\260\345\242\236\351\241\266\347\202\2712.png"
 
"b/static/docs/images/images-hubble/346\346\226\260\345\242\236\351\241\266\347\202\2712.png"
new file mode 100644
index 00000000..1c8fc91b
Binary files /dev/null and 
"b/static/docs/images/images-hubble/346\346\226\260\345\242\236\351\241\266\347\202\2712.png"
 differ
diff --git "a/static/docs/images/images-hubble/347\346\224\266\350\227\217.png" 
"b/static/docs/images/images-hubble/347\346\224\266\350\227\217.png"
new file mode 100644
index 00000000..bf8ca10c
Binary files /dev/null and 
"b/static/docs/images/images-hubble/347\346\224\266\350\227\217.png" differ
diff --git 
"a/static/docs/images/images-hubble/351\344\273\273\345\212\241\347\256\241\347\220\206\345\205\245\345\217\243.png"
 
"b/static/docs/images/images-hubble/351\344\273\273\345\212\241\347\256\241\347\220\206\345\205\245\345\217\243.png"
new file mode 100644
index 00000000..383d72eb
Binary files /dev/null and 
"b/static/docs/images/images-hubble/351\344\273\273\345\212\241\347\256\241\347\220\206\345\205\245\345\217\243.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/352\344\273\273\345\212\241\345\210\227\350\241\250.png"
 
"b/static/docs/images/images-hubble/352\344\273\273\345\212\241\345\210\227\350\241\250.png"
new file mode 100644
index 00000000..6cf016f5
Binary files /dev/null and 
"b/static/docs/images/images-hubble/352\344\273\273\345\212\241\345\210\227\350\241\250.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/353gremlin\344\273\273\345\212\241.png" 
"b/static/docs/images/images-hubble/353gremlin\344\273\273\345\212\241.png"
new file mode 100644
index 00000000..d260959f
Binary files /dev/null and 
"b/static/docs/images/images-hubble/353gremlin\344\273\273\345\212\241.png" 
differ
diff --git 
"a/static/docs/images/images-hubble/353gremlin\344\273\273\345\212\2412.png" 
"b/static/docs/images/images-hubble/353gremlin\344\273\273\345\212\2412.png"
new file mode 100644
index 00000000..9bb49f46
Binary files /dev/null and 
"b/static/docs/images/images-hubble/353gremlin\344\273\273\345\212\2412.png" 
differ
diff --git 
"a/static/docs/images/images-hubble/355\344\273\273\345\212\241\350\257\246\346\203\205.png"
 
"b/static/docs/images/images-hubble/355\344\273\273\345\212\241\350\257\246\346\203\205.png"
new file mode 100644
index 00000000..8d96130f
Binary files /dev/null and 
"b/static/docs/images/images-hubble/355\344\273\273\345\212\241\350\257\246\346\203\205.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/355\345\210\240\351\231\244\345\205\203\346\225\260\346\215\256.png"
 
"b/static/docs/images/images-hubble/355\345\210\240\351\231\244\345\205\203\346\225\260\346\215\256.png"
new file mode 100644
index 00000000..4ec32dbc
Binary files /dev/null and 
"b/static/docs/images/images-hubble/355\345\210\240\351\231\244\345\205\203\346\225\260\346\215\256.png"
 differ
diff --git 
"a/static/docs/images/images-hubble/355\346\236\204\345\273\272\347\264\242\345\274\225.png"
 
"b/static/docs/images/images-hubble/355\346\236\204\345\273\272\347\264\242\345\274\225.png"
new file mode 100644
index 00000000..61d0c87e
Binary files /dev/null and 
"b/static/docs/images/images-hubble/355\346\236\204\345\273\272\347\264\242\345\274\225.png"
 differ
diff --git a/static/docs/images/images-server/31docker-option.jpg 
b/static/docs/images/images-server/31docker-option.jpg
new file mode 100644
index 00000000..67db0fcc
Binary files /dev/null and 
b/static/docs/images/images-server/31docker-option.jpg differ
diff --git a/static/docs/images/images-server/swagger-ui-set-auth-example.png 
b/static/docs/images/images-server/swagger-ui-set-auth-example.png
new file mode 100644
index 00000000..2ef357d0
Binary files /dev/null and 
b/static/docs/images/images-server/swagger-ui-set-auth-example.png differ
diff --git 
a/static/docs/images/images-server/swagger-ui-where-set-auth-example.png 
b/static/docs/images/images-server/swagger-ui-where-set-auth-example.png
new file mode 100644
index 00000000..1e13bf72
Binary files /dev/null and 
b/static/docs/images/images-server/swagger-ui-where-set-auth-example.png differ
diff --git a/static/docs/images/images-server/swagger-ui.png 
b/static/docs/images/images-server/swagger-ui.png
new file mode 100644
index 00000000..87a15481
Binary files /dev/null and b/static/docs/images/images-server/swagger-ui.png 
differ
diff --git a/static/docs/images/images-studio/add-schema.png 
b/static/docs/images/images-studio/add-schema.png
new file mode 100644
index 00000000..9bec32e6
Binary files /dev/null and b/static/docs/images/images-studio/add-schema.png 
differ
diff --git a/static/docs/images/images-studio/example-2V-1E.png 
b/static/docs/images/images-studio/example-2V-1E.png
new file mode 100644
index 00000000..e9d13a68
Binary files /dev/null and b/static/docs/images/images-studio/example-2V-1E.png 
differ
diff --git a/static/docs/images/images-studio/home-page.png 
b/static/docs/images/images-studio/home-page.png
new file mode 100644
index 00000000..fb46571b
Binary files /dev/null and b/static/docs/images/images-studio/home-page.png 
differ
diff --git a/static/docs/images/images-studio/show-graph.png 
b/static/docs/images/images-studio/show-graph.png
new file mode 100644
index 00000000..a1b90dde
Binary files /dev/null and b/static/docs/images/images-studio/show-graph.png 
differ
diff --git a/static/docs/images/images-studio/show-json.png 
b/static/docs/images/images-studio/show-json.png
new file mode 100644
index 00000000..f82e402c
Binary files /dev/null and b/static/docs/images/images-studio/show-json.png 
differ
diff --git a/static/docs/images/images-studio/show-table.png 
b/static/docs/images/images-studio/show-table.png
new file mode 100644
index 00000000..786b8045
Binary files /dev/null and b/static/docs/images/images-studio/show-table.png 
differ
diff --git a/static/docs/images/kg-uml.png b/static/docs/images/kg-uml.png
new file mode 100644
index 00000000..d823e7f8
Binary files /dev/null and b/static/docs/images/kg-uml.png differ
diff --git a/static/docs/images/logo.png b/static/docs/images/logo.png
new file mode 100644
index 00000000..12df76ac
Binary files /dev/null and b/static/docs/images/logo.png differ
diff --git a/static/docs/images/ojdbc8.png b/static/docs/images/ojdbc8.png
new file mode 100644
index 00000000..b6d095d7
Binary files /dev/null and b/static/docs/images/ojdbc8.png differ
diff --git a/static/docs/images/oracle-download.png 
b/static/docs/images/oracle-download.png
new file mode 100644
index 00000000..357db40e
Binary files /dev/null and b/static/docs/images/oracle-download.png differ
diff --git a/static/docs/images/toolchain-test-mermaid-1.png 
b/static/docs/images/toolchain-test-mermaid-1.png
new file mode 100644
index 00000000..d7dd096a
Binary files /dev/null and b/static/docs/images/toolchain-test-mermaid-1.png 
differ
diff --git a/static/docs/images/toolchain-test-mermaid-2.png 
b/static/docs/images/toolchain-test-mermaid-2.png
new file mode 100644
index 00000000..d8e38c1b
Binary files /dev/null and b/static/docs/images/toolchain-test-mermaid-2.png 
differ
diff --git a/static/img/apache-logo.svg b/static/img/apache-logo.svg
new file mode 100644
index 00000000..620694c5
--- /dev/null
+++ b/static/img/apache-logo.svg
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 
6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg version="1.1" id="Layer_2" xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; x="0px" y="0px"
+        viewBox="0 0 7127.6 2890" enable-background="new 0 0 7127.6 2890" 
xml:space="preserve">
+<path fill="#6D6E71" 
d="M7104.7,847.8c15.3,15.3,22.9,33.7,22.9,55.2c0,21.5-7.6,39.9-22.9,55.4c-15.3,15.4-33.8,23.1-55.6,23.1
+       
c-21.8,0-40.2-7.6-55.4-22.9c-15.1-15.3-22.7-33.7-22.7-55.2c0-21.5,7.6-39.9,22.9-55.4c15.3-15.4,33.7-23.1,55.4-23.1
+       C7070.9,824.9,7089.4,832.5,7104.7,847.8z 
M7098.1,951.9c13.3-13.6,20-29.8,20-48.7s-6.6-35-19.8-48.5
+       
c-13.2-13.4-29.4-20.1-48.6-20.1c-19.2,0-35.4,6.7-48.7,20.2c-13.3,13.5-19.9,29.7-19.9,48.7c0,19,6.6,35.2,19.7,48.6
+       c13.1,13.4,29.3,20.1,48.5,20.1S7084.7,965.4,7098.1,951.9z 
M7087.1,888.1c0,14-6.1,22.8-18.4,26.4l22.5,30.5h-18.2l-20.3-28.3
+       
h-18.6v28.3h-14.7v-84.6h31.8c12.8,0,22,2.2,27.6,6.6C7084.4,871.4,7087.1,878.4,7087.1,888.1z
 M7068.2,900c3-2.4,4.4-6.5,4.4-12
+       
c0-5.5-1.5-9.4-4.5-11.6c-3-2.2-8.4-3.2-16-3.2h-18v30.5h17.5C7059.7,903.6,7065.3,902.4,7068.2,900z"/>
+<path fill="#6D6E71" 
d="M1803.6,499.8v155.4h-20V499.8h-56.8v-19.2h133.9v19.2H1803.6z"/>
+<path fill="#6D6E71" 
d="M2082.2,655.2v-76.9h-105.2v76.9h-20V480.5h20v78.9h105.2v-78.9h20v174.7H2082.2z"/>
+<path fill="#6D6E71" 
d="M2241.4,499.8v57.4h88.1v19.2h-88.1v59.8h101.8v19h-121.8V480.5H2340v19.2H2241.4z"/>
+<path fill="#D22128" 
d="M1574.5,1852.4l417.3-997.6h80.1l417.3,997.6h-105.4l-129.3-311.9h-448.2l-127.9,311.9H1574.5z
 M2032.6,970
+       l-205.1,493.2h404.7L2032.6,970z"/>
+<path fill="#D22128" 
d="M2596.9,1852.4V854.8H3010c171.4,0,295.1,158.8,295.1,313.3c0,163-115.2,316.1-286.6,316.1h-324.6v368.1
+       H2596.9z 
M2693.9,1397.1h318.9c118,0,193.9-108.2,193.9-229c0-125.1-92.7-226.2-202.3-226.2h-310.5V1397.1z"/>
+<path fill="#D22128" 
d="M3250.5,1852.4l417.3-997.6h80.1l417.3,997.6h-105.4l-129.3-311.9h-448.2l-127.9,311.9H3250.5z
 M3708.6,970
+       l-205.1,493.2h404.7L3708.6,970z"/>
+<path fill="#D22128" 
d="M4637.3,849.1c177,0,306.3,89.9,368.1,217.8l-78.7,47.8c-63.2-132.1-186.9-177-295.1-177
+       
c-238.9,0-369.5,213.6-369.5,414.5c0,220.6,161.6,420.1,373.7,420.1c112.4,0,244.5-56.2,307.7-185.5l81.5,42.1
+       
c-64.6,148.9-241.7,231.8-394.8,231.8c-274,0-466.5-261.3-466.5-514.2C4163.8,1106.3,4336.6,849.1,4637.3,849.1z"/>
+<path fill="#D22128" 
d="M5949.1,854.8v997.6h-98.4v-466.5h-591.5v466.5h-96.9V854.8h96.9v444h591.5v-444H5949.1z"/>
+<path fill="#D22128" 
d="M6844.6,1765.2v87.1h-670.2V854.8H6832v87.1h-560.6v359.7h489v82.9h-489v380.8H6844.6z"/>
+<path fill="#6D6E71" 
d="M1667.6,2063.6c11.8,3.5,22.2,8.3,31,14.2l-10.3,22.6c-9-6-18.6-10.4-28.9-13.4c-10.2-2.9-20-4.4-29.2-4.4
+       
c-13.6,0-24.5,2.4-32.6,7.3c-8.1,4.9-12.2,11.8-12.2,20.7c0,7.6,2.3,14,6.8,19c4.5,5,10.2,8.9,17,11.7c6.8,2.8,16.1,6,28,9.6
+       
c14.4,4.6,26,8.9,34.7,12.9c8.8,4,16.3,9.9,22.5,17.8c6.2,7.8,9.3,18.2,9.3,31c0,11.7-3.2,21.8-9.5,30.6
+       
c-6.3,8.7-15.3,15.5-26.8,20.3c-11.6,4.8-24.9,7.2-40,7.2c-15.1,0-29.7-2.9-43.9-8.7c-14.2-5.8-26.4-13.6-36.6-23.4l10.7-21.6
+       
c9.6,9.4,20.7,16.7,33.3,21.9c12.6,5.2,24.8,7.8,36.8,7.8c15.3,0,27.3-3,36.1-8.9c8.8-5.9,13.2-13.9,13.2-23.9
+       
c0-7.8-2.3-14.3-6.9-19.4c-4.6-5.1-10.3-9-17.1-11.9c-6.8-2.8-16.1-6-28-9.6c-14.2-4.2-25.7-8.3-34.6-12.2
+       
c-8.9-3.9-16.4-9.7-22.5-17.5c-6.1-7.7-9.2-17.9-9.2-30.6c0-10.9,3-20.4,9-28.6c6-8.2,14.6-14.6,25.6-19.1
+       
c11.1-4.5,23.8-6.8,38.2-6.8C1643.8,2058.3,1655.7,2060.1,1667.6,2063.6z"/>
+<path fill="#6D6E71" 
d="M1980.1,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6
+       
c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6
+       
c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14
+       C1944.8,2058.6,1963.2,2063.3,1980.1,2072.8z 
M1881.9,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7
+       
c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1
+       
c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30
+       
c-13-7.4-27.2-11.2-42.6-11.2C1909.4,2081.5,1895.1,2085.2,1881.9,2092.7z"/>
+<path fill="#6D6E71" 
d="M2186.5,2082.4v74h98.4v23.2h-98.4v90.2h-24.1v-210.6h133.8v23.2H2186.5z"/>
+<path fill="#6D6E71" 
d="M2491.6,2082.4v187.4h-24.1v-187.4h-68.4v-23.2h161.4v23.2H2491.6z"/>
+<path fill="#6D6E71" 
d="M2871.8,2269.8l-56.8-177.4l-57.6,177.4h-24.5l-70.5-210.6h25.9l57.9,182.7l57.1-182.4l24.1-0.3l57.7,182.7
+       l57.1-182.7h25l-70.6,210.6H2871.8z"/>
+<path fill="#6D6E71" 
d="M3087.3,2216.6l-23.5,53.2h-25.6l94.4-210.6h25l94.1,210.6h-26.1l-23.5-53.2H3087.3z
 M3144.5,2086.6
+       l-46.9,106.8h94.4L3144.5,2086.6z"/>
+<path fill="#6D6E71" 
d="M3461.1,2202.7c-6,0.4-10.7,0.6-14.1,0.6h-56v66.5H3367v-210.6h80c26.2,0,46.6,6.2,61.2,18.5
+       
c14.5,12.3,21.8,29.8,21.8,52.3c0,17.2-4.1,31.7-12.2,43.3c-8.1,11.6-19.8,20-35,25l49.2,71.5h-27.3L3461.1,2202.7z
 M3491.3,2167.6
+       
c10.3-8.4,15.5-20.8,15.5-37c0-15.9-5.2-27.9-15.5-36c-10.3-8.1-25.1-12.2-44.3-12.2h-56v97.8h56
+       C3466.2,2180.2,3481,2176,3491.3,2167.6z"/>
+<path fill="#6D6E71" 
d="M3688.3,2082.4v69.2h106.2v23.2h-106.2v72.1h122.8v22.9h-146.9v-210.6h142.9v23.2H3688.3z"/>
+<path fill="#6D6E71" 
d="M4147,2082.4v74h98.4v23.2H4147v90.2h-24.1v-210.6h133.8v23.2H4147z"/>
+<path fill="#6D6E71" 
d="M4523.3,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6
+       
c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6
+       
c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14
+       C4488.1,2058.6,4506.5,2063.3,4523.3,2072.8z 
M4425.2,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7
+       
c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1
+       
c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30
+       
c-13-7.4-27.2-11.2-42.6-11.2C4452.6,2081.5,4438.3,2085.2,4425.2,2092.7z"/>
+<path fill="#6D6E71" 
d="M4854.7,2247.7c-15.7,15.5-37.3,23.3-64.8,23.3c-27.7,0-49.4-7.8-65.1-23.3c-15.7-15.5-23.6-37-23.6-64.6
+       
v-124h24.1v124c0,20.3,5.8,36.1,17.3,47.5c11.6,11.4,27.3,17.1,47.3,17.1c20.1,0,35.8-5.7,47.1-17c11.4-11.3,17-27.2,17-47.7v-124
+       h24.1v124C4878.2,2210.7,4870.4,2232.2,4854.7,2247.7z"/>
+<path fill="#6D6E71" 
d="M5169.5,2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3,169.3v-169.3h23.8v210.6H5169.5z"/>
+<path fill="#6D6E71" 
d="M5478.4,2073.1c16.4,9.3,29.4,21.9,38.9,37.9c9.6,16,14.3,33.9,14.3,53.5s-4.8,37.6-14.3,53.6
+       
c-9.5,16.1-22.6,28.7-39.3,37.9c-16.6,9.2-35.2,13.8-55.5,13.8h-84.3v-210.6h85.2C5443.7,2059.2,5462,2063.8,5478.4,2073.1z
+        
M5362.3,2246.9h61.4c15.5,0,29.6-3.5,42.3-10.6c12.7-7.1,22.8-16.9,30.2-29.5c7.4-12.5,11.1-26.5,11.1-42
+       
c0-15.5-3.8-29.4-11.3-41.9c-7.5-12.5-17.7-22.3-30.6-29.6c-12.8-7.2-27-10.9-42.6-10.9h-60.5V2246.9z"/>
+<path fill="#6D6E71" 
d="M5668.6,2216.6l-23.5,53.2h-25.6l94.4-210.6h25l94.1,210.6H5807l-23.5-53.2H5668.6z
 M5725.8,2086.6
+       l-46.9,106.8h94.4L5725.8,2086.6z"/>
+<path fill="#6D6E71" 
d="M5991,2082.4v187.4H5967v-187.4h-68.4v-23.2h161.4v23.2H5991z"/>
+<path fill="#6D6E71" d="M6175.9,2269.8v-210.6h24.1v210.6H6175.9z"/>
+<path fill="#6D6E71" 
d="M6493.7,2072.8c16.8,9.4,30.2,22.3,40,38.4c9.8,16.2,14.8,33.9,14.8,53.3c0,19.5-4.9,37.4-14.8,53.6
+       
c-9.8,16.3-23.2,29.1-40,38.6c-16.8,9.5-35.3,14.3-55.2,14.3c-20.3,0-38.8-4.7-55.7-14.3c-16.8-9.5-30.2-22.4-40-38.6
+       
c-9.8-16.3-14.8-34.1-14.8-53.6c0-19.5,4.9-37.3,14.8-53.5c9.8-16.2,23.2-29,40-38.3c16.8-9.4,35.4-14,55.7-14
+       C6458.5,2058.6,6476.9,2063.3,6493.7,2072.8z 
M6395.6,2092.7c-13.1,7.4-23.6,17.5-31.4,30.1c-7.8,12.6-11.8,26.5-11.8,41.7
+       
c0,15.3,3.9,29.3,11.8,42c7.8,12.7,18.3,22.8,31.4,30.2c13.1,7.4,27.4,11.1,42.9,11.1c15.5,0,29.7-3.7,42.7-11.1
+       
c13-7.4,23.3-17.4,31.1-30.2c7.7-12.7,11.6-26.7,11.6-42s-3.9-29.2-11.6-41.8c-7.7-12.6-18.1-22.6-31.1-30
+       c-13-7.4-27.2-11.2-42.6-11.2C6423,2081.5,6408.8,2085.2,6395.6,2092.7z"/>
+<path fill="#6D6E71" 
d="M6826.5,2269.8l-126.3-169.1v169.1h-24.1v-210.6h25l126.3,169.3v-169.3h23.8v210.6H6826.5z"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-4516.6152" 
y1="-2338.7222" x2="-4108.4111" y2="-1861.3982" 
gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+       <stop  offset="0" style="stop-color:#F69923"/>
+       <stop  offset="0.3123" style="stop-color:#F79A23"/>
+       <stop  offset="0.8383" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_1_)" 
d="M1230.1,13.7c-45.3,26.8-120.6,102.5-210.5,212.3l82.6,155.9c58-82.9,116.9-157.5,176.3-221.2
+       
c4.6-5.1,7-7.5,7-7.5c-2.3,2.5-4.6,5-7,7.5c-19.2,21.2-77.5,89.2-165.5,224.4c84.7-4.2,214.9-21.6,321.1-39.7
+       c31.6-177-31-258-31-258S1323.4-41.4,1230.1,13.7z"/>
+<path fill="none" 
d="M1090.2,903.1c0.6-0.1,1.2-0.2,1.8-0.3l-11.9,1.3c-0.7,0.3-1.4,0.7-2.1,1
+       C1082.1,904.4,1086.2,903.7,1090.2,903.1z"/>
+<path fill="none" 
d="M1005.9,1182.3c-6.7,1.5-13.7,2.7-20.7,3.7C992.3,1185,999.2,1183.8,1005.9,1182.3z"/>
+<path fill="none" 
d="M432.9,1808.8c0.9-2.3,1.8-4.7,2.6-7c18.2-48,36.2-94.7,54-140.1c20-51,39.8-100.4,59.3-148.3
+       
c20.6-50.4,40.9-99.2,60.9-146.3c21-49.4,41.7-97,62-142.8c16.5-37.3,32.8-73.4,48.9-108.3c5.4-11.7,10.7-23.2,16-34.6
+       
c10.5-22.7,21-44.8,31.3-66.5c9.5-20,19-39.6,28.3-58.8c3.1-6.4,6.2-12.8,9.3-19.1c0.5-1,1-2,1.5-3.1l-10.2,1.1l-8-15.9
+       
c-0.8,1.6-1.6,3.1-2.4,4.6c-14.5,28.8-28.9,57.9-43.1,87.2c-8.2,16.9-16.4,34-24.6,51c-22.6,47.4-44.8,95.2-66.6,143.3
+       
c-22.1,48.6-43.7,97.5-64.9,146.5c-20.8,48.1-41.3,96.2-61.2,144.2c-20,48-39.5,95.7-58.5,143.2c-19.9,49.5-39.2,98.7-58,147.2
+       
c-4.2,10.9-8.5,21.9-12.7,32.8c-15,39.2-29.7,77.8-44,116l12.7,25.1l11.4-1.2c0.4-1.1,0.8-2.3,1.3-3.4
+       C396.7,1905.4,414.9,1856.4,432.9,1808.8z"/>
+<path fill="none" 
d="M980,1186.8L980,1186.8c0.1,0,0.1,0,0.1-0.1C980.1,1186.8,980.1,1186.8,980,1186.8z"/>
+<path fill="#BE202E" 
d="M952.6,1323c-10.6,1.9-21.4,3.8-32.5,5.7c-0.1,0-0.1,0.1-0.2,0.1c5.6-0.8,11.2-1.7,16.6-2.6
+       C942,1325.2,947.3,1324.1,952.6,1323z"/>
+<path opacity="0.35" fill="#BE202E" 
d="M952.6,1323c-10.6,1.9-21.4,3.8-32.5,5.7c-0.1,0-0.1,0.1-0.2,0.1c5.6-0.8,11.2-1.7,16.6-2.6
+       C942,1325.2,947.3,1324.1,952.6,1323z"/>
+<path fill="#BE202E" 
d="M980.3,1186.7C980.2,1186.7,980.2,1186.7,980.3,1186.7c-0.1,0.1-0.2,0.1-0.2,0.1c1.8-0.2,3.5-0.5,5.2-0.8
+       
c7-1,13.9-2.2,20.7-3.7C997.5,1183.8,989,1185.2,980.3,1186.7L980.3,1186.7L980.3,1186.7z"/>
+<path opacity="0.35" fill="#BE202E" 
d="M980.3,1186.7C980.2,1186.7,980.2,1186.7,980.3,1186.7c-0.1,0.1-0.2,0.1-0.2,0.1
+       
c1.8-0.2,3.5-0.5,5.2-0.8c7-1,13.9-2.2,20.7-3.7C997.5,1183.8,989,1185.2,980.3,1186.7L980.3,1186.7L980.3,1186.7z"/>
+<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-7537.7339" 
y1="-2391.4075" x2="-4625.4141" y2="-2391.4075" 
gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+       <stop  offset="0.3233" style="stop-color:#9E2064"/>
+       <stop  offset="0.6302" style="stop-color:#C92037"/>
+       <stop  offset="0.7514" style="stop-color:#CD2335"/>
+       <stop  offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_2_)" 
d="M858.6,784.7c25.1-46.9,50.5-92.8,76.2-137.4c26.7-46.4,53.7-91.3,80.9-134.7
+       
c1.6-2.6,3.2-5.2,4.8-7.7c27-42.7,54.2-83.7,81.6-122.9L1019.5,226c-6.2,7.6-12.5,15.3-18.8,23.2c-23.8,29.7-48.6,61.6-73.9,95.5
+       
c-28.6,38.2-58,78.9-87.8,121.7c-27.6,39.5-55.5,80.9-83.5,123.7c-23.8,36.5-47.7,74-71.4,112.5c-0.9,1.4-1.8,2.9-2.6,4.3
+       l107.5,212.3C811.8,873.6,835.1,828.7,858.6,784.7z"/>
+<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-7186.1777" 
y1="-2099.3059" x2="-5450.7183" y2="-2099.3059" 
gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+       <stop  offset="0" style="stop-color:#282662"/>
+       <stop  offset="9.548390e-02" style="stop-color:#662E8D"/>
+       <stop  offset="0.7882" style="stop-color:#9F2064"/>
+       <stop  offset="0.9487" style="stop-color:#CD2032"/>
+</linearGradient>
+<path fill="url(#SVGID_3_)" 
d="M369,1981c-14.2,39.1-28.5,78.9-42.9,119.6c-0.2,0.6-0.4,1.2-0.6,1.8c-2,5.7-4.1,11.5-6.1,17.2
+       
c-9.7,27.4-18,52.1-37.3,108.2c31.7,14.5,57.1,52.5,81.1,95.6c-2.6-44.7-21-86.6-56.2-119.1c156.1,7,290.6-32.4,360.1-146.6
+       
c6.2-10.2,11.9-20.9,17-32.2c-31.6,40.1-70.8,57.1-144.5,53c-0.2,0.1-0.3,0.1-0.5,0.2c0.2-0.1,0.3-0.1,0.5-0.2
+       
c108.6-48.6,163.1-95.3,211.2-172.6c11.4-18.3,22.5-38.4,33.8-60.6c-94.9,97.5-205,125.3-320.9,104.2l-86.9,9.5
+       C374.4,1966.3,371.7,1973.6,369,1981z"/>
+<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-7374.1626" 
y1="-2418.5454" x2="-4461.8428" y2="-2418.5454" 
gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+       <stop  offset="0.3233" style="stop-color:#9E2064"/>
+       <stop  offset="0.6302" style="stop-color:#C92037"/>
+       <stop  offset="0.7514" style="stop-color:#CD2335"/>
+       <stop  offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_4_)" 
d="M409.6,1786.3c18.8-48.5,38.1-97.7,58-147.2c19-47.4,38.5-95.2,58.5-143.2
+       
c20-48,40.4-96.1,61.2-144.2c21.2-49,42.9-97.8,64.9-146.5c21.8-48.1,44-95.9,66.6-143.3c8.1-17.1,16.3-34.1,24.6-51
+       
c14.2-29.3,28.6-58.4,43.1-87.2c0.8-1.6,1.6-3.1,2.4-4.6L681.4,706.8c-1.8,2.9-3.5,5.8-5.3,8.6c-25.1,40.9-50,82.7-74.4,125.4
+       
c-24.7,43.1-49,87.1-72.7,131.7c-20,37.6-39.6,75.6-58.6,113.9c-3.8,7.8-7.6,15.5-11.3,23.2c-23.4,48.2-44.6,94.8-63.7,139.5
+       
c-21.7,50.7-40.7,99.2-57.5,145.1c-11,30.2-21,59.4-30.1,87.4c-7.5,24-14.7,47.9-21.5,71.8c-16,56.3-29.9,112.4-41.2,168.3
+       
L353,1935.1c14.3-38.1,28.9-76.8,44-116C401.1,1808.2,405.4,1797.3,409.6,1786.3z"/>
+<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-7161.7642" 
y1="-2379.1431" x2="-5631.2524" y2="-2379.1431" 
gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+       <stop  offset="0" style="stop-color:#282662"/>
+       <stop  offset="9.548390e-02" style="stop-color:#662E8D"/>
+       <stop  offset="0.7882" style="stop-color:#9F2064"/>
+       <stop  offset="0.9487" style="stop-color:#CD2032"/>
+</linearGradient>
+<path fill="url(#SVGID_5_)" 
d="M243.5,1729.4c-13.6,68.2-23.2,136.2-28,203.8c-0.2,2.4-0.4,4.7-0.5,7.1
+       
c-33.7-54-124-106.8-123.8-106.2c64.6,93.7,113.7,186.7,120.9,278c-34.6,7.1-82-3.2-136.8-23.3c57.1,52.5,100,67,116.7,70.9
+       
c-52.5,3.3-107.1,39.3-162.1,80.8c80.5-32.8,145.5-45.8,192.1-35.3C148.1,2414.2,74.1,2645,0,2890c22.7-6.7,36.2-21.9,43.9-42.6
+       
c13.2-44.4,100.8-335.6,238-718.2c3.9-10.9,7.8-21.8,11.8-32.9c1.1-3,2.2-6.1,3.3-9.2c14.5-40.1,29.5-81.1,45.1-122.9
+       
c3.5-9.5,7.1-19,10.7-28.6c0.1-0.2,0.1-0.4,0.2-0.6l-107.9-213.2C244.6,1724.4,244,1726.9,243.5,1729.4z"/>
+<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-7374.1626" 
y1="-2117.1309" x2="-4461.8428" y2="-2117.1309" 
gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+       <stop  offset="0.3233" style="stop-color:#9E2064"/>
+       <stop  offset="0.6302" style="stop-color:#C92037"/>
+       <stop  offset="0.7514" style="stop-color:#CD2335"/>
+       <stop  offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_6_)" 
d="M805.6,937c-3.1,6.3-6.2,12.7-9.3,19.1c-9.3,19.2-18.8,38.8-28.3,58.8
+       
c-10.3,21.7-20.7,43.9-31.3,66.5c-5.3,11.4-10.6,22.9-16,34.6c-16.1,35-32.4,71.1-48.9,108.3c-20.3,45.8-41,93.4-62,142.8
+       
c-20,47.1-40.3,95.9-60.9,146.3c-19.5,47.9-39.3,97.3-59.3,148.3c-17.8,45.4-35.9,92.1-54,140.1c-0.9,2.3-1.8,4.7-2.6,7
+       
c-18,47.6-36.2,96.6-54.6,146.8c-0.4,1.1-0.8,2.3-1.3,3.4l86.9-9.5c-1.7-0.3-3.5-0.5-5.2-0.9c103.9-13,242.1-90.6,331.4-186.5
+       
c41.1-44.2,78.5-96.3,113-157.3c25.7-45.4,49.8-95.8,72.8-151.5c20.1-48.7,39.4-101.4,58-158.6c-23.9,12.6-51.2,21.8-81.4,28.2
+       
c-5.3,1.1-10.7,2.2-16.1,3.1c-5.5,1-11,1.8-16.6,2.6l0,0l0,0c0.1,0,0.1-0.1,0.2-0.1c96.9-37.3,158-109.2,202.4-197.4
+       
c-25.5,17.4-66.9,40.1-116.6,51.1c-6.7,1.5-13.7,2.7-20.7,3.7c-1.7,0.3-3.5,0.6-5.2,0.8l0,0l0,0c0.1,0,0.1,0,0.1-0.1
+       
c0,0,0.1,0,0.1,0l0,0c33.6-14.1,62-29.8,86.6-48.4c5.3-4,10.4-8.1,15.3-12.3c7.5-6.5,14.7-13.3,21.5-20.5c4.4-4.6,8.6-9.3,12.7-14.2
+       
c9.6-11.5,18.7-23.9,27.1-37.3c2.6-4.1,5.1-8.3,7.6-12.6c3.2-6.2,6.3-12.3,9.3-18.3c13.5-27.2,24.4-51.5,33-72.8
+       
c4.3-10.6,8.1-20.5,11.3-29.7c1.3-3.7,2.5-7.2,3.7-10.6c3.4-10.2,6.2-19.3,8.4-27.3c3.3-12,5.3-21.5,6.4-28.4l0,0l0,0
+       
c-3.3,2.6-7.1,5.2-11.3,7.7c-29.3,17.5-79.5,33.4-119.9,40.8l79.8-8.8l-79.8,8.8c-0.6,0.1-1.2,0.2-1.8,0.3c-4,0.7-8.1,1.3-12.2,2
+       c0.7-0.3,1.4-0.7,2.1-1l-273,29.9C806.6,935,806.1,936,805.6,937z"/>
+<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-7554.8232" 
y1="-2132.0981" x2="-4642.5034" y2="-2132.0981" 
gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+       <stop  offset="0.3233" style="stop-color:#9E2064"/>
+       <stop  offset="0.6302" style="stop-color:#C92037"/>
+       <stop  offset="0.7514" style="stop-color:#CD2335"/>
+       <stop  offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_7_)" 
d="M1112.9,385.1c-24.3,37.3-50.8,79.6-79.4,127.5c-1.5,2.5-3,5.1-4.5,7.6
+       
c-24.6,41.5-50.8,87.1-78.3,137c-23.8,43.1-48.5,89.3-74.3,139c-22.4,43.3-45.6,89.2-69.4,137.8l273-29.9
+       
c79.5-36.6,115.1-69.7,149.6-117.6c9.2-13.2,18.4-27,27.5-41.3c28-43.8,55.6-92,80.1-139.9c23.7-46.3,44.7-92.2,60.7-133.5
+       
c10.2-26.3,18.4-50.8,24.1-72.3c5-19,8.9-36.9,11.9-54.1C1327.9,363.5,1197.6,380.9,1112.9,385.1z"/>
+<path fill="#BE202E" 
d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>
+<path opacity="0.35" fill="#BE202E" 
d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>
+<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-7374.1626" 
y1="-2027.484" x2="-4461.8433" y2="-2027.484" gradientTransform="matrix(0.4226 
-0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+       <stop  offset="0.3233" style="stop-color:#9E2064"/>
+       <stop  offset="0.6302" style="stop-color:#C92037"/>
+       <stop  offset="0.7514" style="stop-color:#CD2335"/>
+       <stop  offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_8_)" 
d="M936.5,1326.1c-5.5,1-11,1.8-16.6,2.6l0,0C925.5,1328,931,1327.1,936.5,1326.1z"/>
+<path fill="#BE202E" 
d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>
+<path opacity="0.35" fill="#BE202E" 
d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>
+<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="-7374.1626" 
y1="-2037.7417" x2="-4461.8433" y2="-2037.7417" 
gradientTransform="matrix(0.4226 -0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+       <stop  offset="0.3233" style="stop-color:#9E2064"/>
+       <stop  offset="0.6302" style="stop-color:#C92037"/>
+       <stop  offset="0.7514" style="stop-color:#CD2335"/>
+       <stop  offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_9_)" 
d="M980,1186.8c1.8-0.2,3.5-0.5,5.2-0.8C983.5,1186.3,981.8,1186.6,980,1186.8L980,1186.8z"/>
+<path fill="#BE202E" 
d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7L980.2,1186.7
+       C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>
+<path opacity="0.35" fill="#BE202E" 
d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7
+       L980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>
+<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="-5738.0635" 
y1="-2039.799" x2="-5094.3457" y2="-2039.799" gradientTransform="matrix(0.4226 
-0.9063 0.9063 0.4226 5117.8774 -2859.9343)">
+       <stop  offset="0.3233" style="stop-color:#9E2064"/>
+       <stop  offset="0.6302" style="stop-color:#C92037"/>
+       <stop  offset="0.7514" style="stop-color:#CD2335"/>
+       <stop  offset="1" style="stop-color:#E97826"/>
+</linearGradient>
+<path fill="url(#SVGID_10_)" 
d="M980.2,1186.7C980.2,1186.7,980.2,1186.7,980.2,1186.7L980.2,1186.7L980.2,1186.7L980.2,1186.7
+       C980.2,1186.7,980.2,1186.7,980.2,1186.7z"/>
+</svg>
diff --git a/static/img/featured-background.jpg 
b/static/img/featured-background.jpg
new file mode 100644
index 00000000..8efa5cad
Binary files /dev/null and b/static/img/featured-background.jpg differ
diff --git a/static/img/hugegraph-logo.svg b/static/img/hugegraph-logo.svg
new file mode 100644
index 00000000..a59ddad3
--- /dev/null
+++ b/static/img/hugegraph-logo.svg
@@ -0,0 +1 @@
+<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; viewBox="0 0 16 
16"><defs><style>.logo-cls-1{fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:0.5px;opacity:0.3;}.logo-cls-2{fill:#229efa;}.logo-cls-3{fill:#9948f7;}.logo-cls-4{fill:#33bc7a;}.logo-cls-5{fill:url(#未命名的渐变_3);}.logo-cls-6{fill:url(#未命名的渐变_13);}.logo-cls-7{fill:url(#未命名的渐变_11);}</style><linearGradient
 id="未命名的渐变_3" x1="6.16" y1="14.63" x2="6.16" y2="6.01" grad [...]
\ No newline at end of file

Reply via email to