You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by ju...@apache.org on 2021/11/14 14:06:30 UTC

[apisix-website] 01/02: chore: adjust docusaurus.config.js

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

juzhiyuan pushed a commit to branch docs-navbar
in repository https://gitbox.apache.org/repos/asf/apisix-website.git

commit 0b43856a6f2c0b0b4627dd6380de274b309d86d4
Author: juzhiyuan <ju...@apache.org>
AuthorDate: Sun Nov 14 21:58:08 2021 +0800

    chore: adjust docusaurus.config.js
---
 website/config/docs.js                            |  91 +++++++
 website/config/downloads.js                       |  81 ++++++
 website/{static/data/team.json => config/team.js} |   2 +-
 website/docusaurus.config.js                      | 291 +---------------------
 website/static/data/events.json                   |  18 +-
 website/static/data/navbar.js                     | 113 +++++++++
 website/static/data/plugin.json                   | 199 ---------------
 website/static/data/plugins.json                  | 199 +++++++++++++++
 8 files changed, 503 insertions(+), 491 deletions(-)

diff --git a/website/config/docs.js b/website/config/docs.js
new file mode 100644
index 0000000..28b2db4
--- /dev/null
+++ b/website/config/docs.js
@@ -0,0 +1,91 @@
+module.exports = [
+  {
+    name: "APISIX®",
+    nameInParamCase: "apisix",
+    description: "A dynamic, real-time, high-performance API gateway.",
+    shape: "triangle",
+    color: "#e8433e",
+    githubRepo: "apache/apisix",
+    version: "2.10.1",
+    releaseDate: "2021-10-28",
+    firstDocPath: "/getting-started",
+  },
+  {
+    name: "APISIX® Dashboard",
+    nameInParamCase: "dashboard",
+    description:
+      "Designed to make it as easy as possible for users to operate Apache APISIX through a frontend interface.",
+    shape: "square",
+    color: "#10B981",
+    githubRepo: "apache/apisix-dashboard",
+    version: "2.9.0",
+    releaseDate: "2021-10-08",
+    firstDocPath: "/USER_GUIDE",
+  },
+  {
+    name: "APISIX® Ingress Controller",
+    nameInParamCase: "ingress-controller",
+    description: "An Apache APISIX control plane component.",
+    shape: "hexagon",
+    color: "#2563EB",
+    githubRepo: "apache/apisix-ingress-controller",
+    version: "1.3.0",
+    releaseDate: "2021-10-17",
+    firstDocPath: "/getting-started",
+  },
+  {
+    name: "APISIX® Helm Charts",
+    nameInParamCase: "helm-chart",
+    description: "An Apache APISIX Helm Charts provide the installation of Apache APISIX components for kubernetes.",
+    shape: "pentagon",
+    color: "#C71585",
+    githubRepo: "apache/apisix-helm-chart",
+    version: "0.4.0",
+    releaseDate: "2021-03-12",
+    firstDocPath: "/apisix",
+  },
+  {
+    name: "APISIX® Docker",
+    nameInParamCase: "docker",
+    description: "Docker tooling for Apache APISIX.",
+    shape: "diamond",
+    color: "#FFD700",
+    githubRepo: "apache/apisix-docker",
+    version: "1.0.0",
+    releaseDate: "2020-12-1",
+    firstDocPath: "/build",
+  },
+  {
+    name: "APISIX® Java Plugin Runner",
+    nameInParamCase: "java-plugin-runner",
+    description: "Runs Apache APISIX plugins written in Java. Implemented as a sidecar that accompanies Apache APISIX.",
+    shape: "star",
+    color: "#FB9300",
+    githubRepo: "apache/apisix-java-plugin-runner",
+    version: "0.1.0",
+    releaseDate: "2021-07-09",
+    firstDocPath: "/development",
+  },
+  {
+    name: "APISIX® Go Plugin Runner",
+    nameInParamCase: "go-plugin-runner",
+    description: "Runs Apache APISIX plugins written in Go. Implemented as a sidecar that accompanies Apache APISIX.",
+    shape: "octagon",
+    color: "#3B14A7",
+    githubRepo: "apache/apisix-go-plugin-runner",
+    version: "0.2.0",
+    releaseDate: "2021-09-03",
+    firstDocPath: "/getting-started",
+  },
+  {
+    name: "APISIX® Python Plugin Runner",
+    nameInParamCase: "python-plugin-runner",
+    description: "Runs Apache APISIX plugins written in Python. Implemented as a sidecar that accompanies Apache APISIX.",
+    shape: "shield",
+    color: "#1296DB",
+    githubRepo: "apache/apisix-python-plugin-runner",
+    version: "0.1.0",
+    releaseDate: "2021-09-03",
+    firstDocPath: "/getting-started",
+  }
+]
diff --git a/website/config/downloads.js b/website/config/downloads.js
new file mode 100644
index 0000000..66909a8
--- /dev/null
+++ b/website/config/downloads.js
@@ -0,0 +1,81 @@
+module.exports = [
+  {
+    name: "APISIX®",
+    nameInParamCase: "apisix",
+    description: "A dynamic, real-time, high-performance API gateway.",
+    shape: "triangle",
+    color: "#e8433e",
+    githubRepo: "apache/apisix",
+    githubBranch: "master",
+    downloadPath: "apisix/2.10.1/apache-apisix-2.10.1-src",
+    version: "2.10.1",
+    releaseDate: "2021-10-28",
+    firstDocPath: "/getting-started",
+  },
+  {
+    name: "APISIX® Dashboard",
+    nameInParamCase: "dashboard",
+    description:
+      "Designed to make it as easy as possible for users to operate Apache APISIX through a frontend interface.",
+    shape: "square",
+    color: "#10B981",
+    githubRepo: "apache/apisix-dashboard",
+    githubBranch: "master",
+    downloadPath: "apisix/dashboard/2.9.0/apache-apisix-dashboard-2.9.0-src",
+    version: "2.9.0",
+    releaseDate: "2021-10-08",
+    firstDocPath: "/USER_GUIDE",
+  },
+  {
+    name: "APISIX® Ingress Controller",
+    nameInParamCase: "ingress-controller",
+    description: "An Apache APISIX control plane component.",
+    shape: "hexagon",
+    color: "#2563EB",
+    githubRepo: "apache/apisix-ingress-controller",
+    githubBranch: "master",
+    downloadPath: "apisix/ingress-controller/1.2.0/apache-apisix-ingress-controller-1.2.0-src",
+    version: "1.3.0",
+    releaseDate: "2021-10-17",
+    firstDocPath: "/getting-started",
+  },
+  {
+    name: "APISIX® Java Plugin Runner",
+    nameInParamCase: "java-plugin-runner",
+    description: "Runs Apache APISIX plugins written in Java. Implemented as a sidecar that accompanies Apache APISIX.",
+    shape: "star",
+    color: "#FB9300",
+    githubRepo: "apache/apisix-java-plugin-runner",
+    githubBranch: "main",
+    downloadPath: "apisix/java-plugin-runner/0.1/apisix-java-plugin-runner-0.1.0-src",
+    version: "0.1.0",
+    releaseDate: "2021-07-09",
+    firstDocPath: "/development",
+  },
+  {
+    name: "APISIX® Go Plugin Runner",
+    nameInParamCase: "go-plugin-runner",
+    description: "Runs Apache APISIX plugins written in Go. Implemented as a sidecar that accompanies Apache APISIX.",
+    shape: "octagon",
+    color: "#3B14A7",
+    githubRepo: "apache/apisix-go-plugin-runner",
+    githubBranch: "master",
+    downloadPath: "apisix/go-plugin-runner/0.2.0/apisix-go-plugin-runner-0.2.0-src",
+    version: "0.2.0",
+    releaseDate: "2021-09-03",
+    firstDocPath: "/getting-started",
+  },
+  {
+    name: "APISIX® Python Plugin Runner",
+    nameInParamCase: "python-plugin-runner",
+    description: "Runs Apache APISIX plugins written in Python. Implemented as a sidecar that accompanies Apache APISIX.",
+    shape: "shield",
+    color: "#1296DB",
+    githubRepo: "apache/apisix-python-plugin-runner",
+    githubBranch: "master",
+    downloadPath: "apisix/python-plugin-runner/0.1.0/apisix-python-plugin-runner-0.1.0-src",
+    version: "0.1.0",
+    releaseDate: "2021-09-06",
+    firstDocPath: "/getting-started",
+  }
+]
diff --git a/website/static/data/team.json b/website/config/team.js
similarity index 99%
rename from website/static/data/team.json
rename to website/config/team.js
index 16f5c96..83ebdb7 100644
--- a/website/static/data/team.json
+++ b/website/config/team.js
@@ -1,4 +1,4 @@
-[
+module.exports = [
   {
     "groupName": "PMC",
     "members": [
diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js
index 4c967c0..d715721 100644
--- a/website/docusaurus.config.js
+++ b/website/docusaurus.config.js
@@ -12,7 +12,7 @@ const getEditUrl = ({
 }
 
 module.exports = {
-  title: "Apache APISIX® --  Cloud-Native API Gateway",
+  title: "Apache APISIX® -- Cloud-Native API Gateway",
   tagline:
     "Apache APISIX is a dynamic, real-time, high-performance Cloud-Native API gateway, based on the Nginx library and etcd.",
   url: "https://apisix.apache.org",
@@ -28,181 +28,10 @@ module.exports = {
     eventPosterCard: require("./static/data/event-poster-card.json"),
     repoUrl: "https://github.com/apache/apisix",
     docsUrl: "",
-    docs: [
-      {
-        name: "APISIX®",
-        nameInParamCase: "apisix",
-        description: "A dynamic, real-time, high-performance API gateway.",
-        shape: "triangle",
-        color: "#e8433e",
-        githubRepo: "apache/apisix",
-        version: "2.10.1",
-        releaseDate: "2021-10-28",
-        firstDocPath: "/getting-started",
-      },
-      {
-        name: "APISIX® Dashboard",
-        nameInParamCase: "dashboard",
-        description:
-          "Designed to make it as easy as possible for users to operate Apache APISIX through a frontend interface.",
-        shape: "square",
-        color: "#10B981",
-        githubRepo: "apache/apisix-dashboard",
-        version: "2.9.0",
-        releaseDate: "2021-10-08",
-        firstDocPath: "/USER_GUIDE",
-      },
-      {
-        name: "APISIX® Ingress Controller",
-        nameInParamCase: "ingress-controller",
-        description: "An Apache APISIX control plane component.",
-        shape: "hexagon",
-        color: "#2563EB",
-        githubRepo: "apache/apisix-ingress-controller",
-        version: "1.3.0",
-        releaseDate: "2021-10-17",
-        firstDocPath: "/getting-started",
-      },
-      {
-        name: "APISIX® Helm Charts",
-        nameInParamCase: "helm-chart",
-        description: "An Apache APISIX Helm Charts provide the installation of Apache APISIX components for kubernetes.",
-        shape: "pentagon",
-        color: "#C71585",
-        githubRepo: "apache/apisix-helm-chart",
-        version: "0.4.0",
-        releaseDate: "2021-03-12",
-        firstDocPath: "/apisix",
-      },
-      {
-        name: "APISIX® Docker",
-        nameInParamCase: "docker",
-        description: "Docker tooling for Apache APISIX.",
-        shape: "diamond",
-        color: "#FFD700",
-        githubRepo: "apache/apisix-docker",
-        version: "1.0.0",
-        releaseDate: "2020-12-1",
-        firstDocPath: "/build",
-      },
-      {
-        name: "APISIX® Java Plugin Runner",
-        nameInParamCase: "java-plugin-runner",
-        description: "Runs Apache APISIX plugins written in Java. Implemented as a sidecar that accompanies Apache APISIX.",
-        shape: "star",
-        color: "#FB9300",
-        githubRepo: "apache/apisix-java-plugin-runner",
-        version: "0.1.0",
-        releaseDate: "2021-07-09",
-        firstDocPath: "/development",
-      },
-      {
-        name: "APISIX® Go Plugin Runner",
-        nameInParamCase: "go-plugin-runner",
-        description: "Runs Apache APISIX plugins written in Go. Implemented as a sidecar that accompanies Apache APISIX.",
-        shape: "octagon",
-        color: "#3B14A7",
-        githubRepo: "apache/apisix-go-plugin-runner",
-        version: "0.2.0",
-        releaseDate: "2021-09-03",
-        firstDocPath: "/getting-started",
-      },
-      {
-        name: "APISIX® Python Plugin Runner",
-        nameInParamCase: "python-plugin-runner",
-        description: "Runs Apache APISIX plugins written in Python. Implemented as a sidecar that accompanies Apache APISIX.",
-        shape: "shield",
-        color: "#1296DB",
-        githubRepo: "apache/apisix-python-plugin-runner",
-        version: "0.1.0",
-        releaseDate: "2021-09-03",
-        firstDocPath: "/getting-started",
-      }
-    ],
-    downloads: [
-      {
-        name: "APISIX®",
-        nameInParamCase: "apisix",
-        description: "A dynamic, real-time, high-performance API gateway.",
-        shape: "triangle",
-        color: "#e8433e",
-        githubRepo: "apache/apisix",
-        githubBranch: "master",
-        downloadPath: "apisix/2.10.1/apache-apisix-2.10.1-src",
-        version: "2.10.1",
-        releaseDate: "2021-10-28",
-        firstDocPath: "/getting-started",
-      },
-      {
-        name: "APISIX® Dashboard",
-        nameInParamCase: "dashboard",
-        description:
-          "Designed to make it as easy as possible for users to operate Apache APISIX through a frontend interface.",
-        shape: "square",
-        color: "#10B981",
-        githubRepo: "apache/apisix-dashboard",
-        githubBranch: "master",
-        downloadPath: "apisix/dashboard/2.9.0/apache-apisix-dashboard-2.9.0-src",
-        version: "2.9.0",
-        releaseDate: "2021-10-08",
-        firstDocPath: "/USER_GUIDE",
-      },
-      {
-        name: "APISIX® Ingress Controller",
-        nameInParamCase: "ingress-controller",
-        description: "An Apache APISIX control plane component.",
-        shape: "hexagon",
-        color: "#2563EB",
-        githubRepo: "apache/apisix-ingress-controller",
-        githubBranch: "master",
-        downloadPath: "apisix/ingress-controller/1.2.0/apache-apisix-ingress-controller-1.2.0-src",
-        version: "1.3.0",
-        releaseDate: "2021-10-17",
-        firstDocPath: "/getting-started",
-      },
-      {
-        name: "APISIX® Java Plugin Runner",
-        nameInParamCase: "java-plugin-runner",
-        description: "Runs Apache APISIX plugins written in Java. Implemented as a sidecar that accompanies Apache APISIX.",
-        shape: "star",
-        color: "#FB9300",
-        githubRepo: "apache/apisix-java-plugin-runner",
-        githubBranch: "main",
-        downloadPath: "apisix/java-plugin-runner/0.1/apisix-java-plugin-runner-0.1.0-src",
-        version: "0.1.0",
-        releaseDate: "2021-07-09",
-        firstDocPath: "/development",
-      },
-      {
-        name: "APISIX® Go Plugin Runner",
-        nameInParamCase: "go-plugin-runner",
-        description: "Runs Apache APISIX plugins written in Go. Implemented as a sidecar that accompanies Apache APISIX.",
-        shape: "octagon",
-        color: "#3B14A7",
-        githubRepo: "apache/apisix-go-plugin-runner",
-        githubBranch: "master",
-        downloadPath: "apisix/go-plugin-runner/0.2.0/apisix-go-plugin-runner-0.2.0-src",
-        version: "0.2.0",
-        releaseDate: "2021-09-03",
-        firstDocPath: "/getting-started",
-      },
-      {
-        name: "APISIX® Python Plugin Runner",
-        nameInParamCase: "python-plugin-runner",
-        description: "Runs Apache APISIX plugins written in Python. Implemented as a sidecar that accompanies Apache APISIX.",
-        shape: "shield",
-        color: "#1296DB",
-        githubRepo: "apache/apisix-python-plugin-runner",
-        githubBranch: "master",
-        downloadPath: "apisix/python-plugin-runner/0.1.0/apisix-python-plugin-runner-0.1.0-src",
-        version: "0.1.0",
-        releaseDate: "2021-09-06",
-        firstDocPath: "/getting-started",
-      }
-    ],
-
-    team: require("./static/data/team.json"),
-    plugins: require("./static/data/plugin.json"),
+    docs: require("./config/docs.js"),
+    downloads: require("./config/downloads.js"),
+    team: require("./config/team.js"),
+    plugins: require("./static/data/plugins.json"),
 
     allRepos: [
       "apache/apisix",
@@ -490,115 +319,7 @@ module.exports = {
       logo: {
         src: "img/logo2.svg",
       },
-      items: [
-        {
-          label: "Docs",
-          position: "right",
-          to: "/docs",
-          items: [
-            {
-              label: "Apache APISIX®️",
-              to: "/docs/apisix/getting-started",
-            },
-            {
-              label: "Apache APISIX®️ Dashboard",
-              to: "/docs/dashboard/USER_GUIDE",
-            },
-            {
-              label: "Apache APISIX®️ Ingress Controller",
-              to: "/docs/ingress-controller/getting-started/",
-            },
-            {
-              label: "Apache APISIX®️ Helm Charts",
-              to: "/docs/helm-chart/apisix/",
-            },
-            {
-              label: "Apache APISIX®️ Docker",
-              to: "/docs/docker/build/",
-            },
-            {
-              label: "Apache APISIX®️ Java Plugin Runner",
-              to: "/docs/java-plugin-runner/development/"
-            },
-            {
-              label: "Apache APISIX®️ Go Plugin Runner",
-              to: "/docs/go-plugin-runner/getting-started/"
-            },
-            {
-              label: "Apache APISIX®️ Python Plugin Runner",
-              to: "/docs/python-plugin-runner/getting-started/"
-            },
-            {
-              label: "General",
-              to: "/docs/general/security",
-            },
-          ],
-        },
-        {
-          label: "FAQ",
-          position: "right",
-          items: [
-            {
-              label: "Apache APISIX®",
-              to: "/docs/apisix/FAQ/",
-            },
-            {
-              label: "Apache APISIX® Dashboard",
-              to: "/docs/dashboard/FAQ/",
-            },
-            {
-              label: "Apache APISIX® Ingress Controller",
-              to: "/docs/ingress-controller/FAQ/",
-            },
-            {
-              label: "Apache APISIX® Helm Chart",
-              to: "/docs/helm-chart/FAQ/",
-            },
-          ]
-        },
-        {
-          to: "/blog",
-          label: "Blog",
-          position: "right",
-        },
-        {
-          to: "/downloads",
-          label: "Downloads",
-          position: "right",
-        },
-        {
-          to: "/team",
-          label: "Team",
-          position: "right",
-        },
-        {
-          label: "Resources",
-          position: "right",
-          items: [
-            {
-              to: "/plugins",
-              label: "Plugin Hub",
-            },
-            {
-              to: "/releases",
-              label: "Releases",
-            },
-            {
-              to: "/help",
-              label: "Help",
-            },
-          ]
-        },
-        {
-          to: "/showcase",
-          label: "Showcase",
-          position: "right",
-        },
-        {
-          type: "localeDropdown",
-          position: "right",
-        },
-      ],
+      items: require("./config/navbar.js"),
     },
     hideableSidebar: true,
     footer: {
diff --git a/website/static/data/events.json b/website/static/data/events.json
index aacd13e..cce7b3d 100644
--- a/website/static/data/events.json
+++ b/website/static/data/events.json
@@ -1,20 +1,26 @@
 [
-  {"title": "Weekly Report|10.15-10.31 Feature Highlights Update in Progress",
+  {
+    "title": "Weekly Report|10.15-10.31 Feature Highlights Update in Progress",
     "fileName": "2021-11-02-weekly-report-1031"
   },
-  {"title": "Webinar | Apache APISIX × Apache SkyWalking Online Meetup",
+  {
+    "title": "Webinar | Apache APISIX × Apache SkyWalking Online Meetup",
     "fileName": "2021-10-18-meetup"
   },
-  {"title": "Community Weekly|10.1-10.14 Feature Highlight Updates in Progress",
+  {
+    "title": "Community Weekly|10.1-10.14 Feature Highlight Updates in Progress",
     "fileName": "2021-10-14-weekly-report-1014"
   },
-  {"title": "New milestone for the Apache APISIX community - over 300 contributors worldwide!",
+  {
+    "title": "New milestone for the Apache APISIX community - over 300 contributors worldwide!",
     "fileName": "2021-10-13-celebrating-300-contributors-of-apisix"
   },
-  {"title": "社区周报|新晋 committer 两位,功能亮点更新进行中",
+  {
+    "title": "社区周报|新晋 committer 两位,功能亮点更新进行中",
     "fileName": "2021-09-15-weekly-report"
   },
-  {"title": "Apache APISIX 2.9 Release",
+  {
+    "title": "Apache APISIX 2.9 Release",
     "fileName": "2021-08-27-release-apache-apisix-2.9"
   },
   {
diff --git a/website/static/data/navbar.js b/website/static/data/navbar.js
new file mode 100644
index 0000000..429c2aa
--- /dev/null
+++ b/website/static/data/navbar.js
@@ -0,0 +1,113 @@
+module.exports = [
+  {
+    label: "Docs",
+    position: "right",
+    to: "/docs",
+    items: [
+      {
+        label: "Apache APISIX®️",
+        to: "/docs/apisix/getting-started",
+      },
+      {
+        label: "Apache APISIX®️ Dashboard",
+        to: "/docs/dashboard/USER_GUIDE",
+      },
+      {
+        label: "Apache APISIX®️ Ingress Controller",
+        to: "/docs/ingress-controller/getting-started/",
+      },
+      {
+        label: "Apache APISIX®️ Helm Charts",
+        to: "/docs/helm-chart/apisix/",
+      },
+      {
+        label: "Apache APISIX®️ Docker",
+        to: "/docs/docker/build/",
+      },
+      {
+        label: "Apache APISIX®️ Java Plugin Runner",
+        to: "/docs/java-plugin-runner/development/"
+      },
+      {
+        label: "Apache APISIX®️ Go Plugin Runner",
+        to: "/docs/go-plugin-runner/getting-started/"
+      },
+      {
+        label: "Apache APISIX®️ Python Plugin Runner",
+        to: "/docs/python-plugin-runner/getting-started/"
+      },
+      {
+        label: "General",
+        to: "/docs/general/security",
+      },
+    ],
+  },
+  {
+    label: "FAQ",
+    position: "right",
+    items: [
+      {
+        label: "Apache APISIX®",
+        to: "/docs/apisix/FAQ/",
+      },
+      {
+        label: "Apache APISIX® Dashboard",
+        to: "/docs/dashboard/FAQ/",
+      },
+      {
+        label: "Apache APISIX® Ingress Controller",
+        to: "/docs/ingress-controller/FAQ/",
+      },
+      {
+        label: "Apache APISIX® Helm Chart",
+        to: "/docs/helm-chart/FAQ/",
+      },
+    ]
+  },
+  {
+    to: "/blog",
+    label: "Blog",
+    position: "right",
+  },
+  {
+    to: "/downloads",
+    label: "Downloads",
+    position: "right",
+  },
+  {
+    to: "/team",
+    label: "Team",
+    position: "right",
+  },
+  {
+    label: "Resources",
+    position: "right",
+    items: [
+      {
+        to: "/docs/general/community",
+        label: "Community"
+      },
+      {
+        to: "/plugins",
+        label: "Plugin Hub",
+      },
+      {
+        to: "/releases",
+        label: "Releases",
+      },
+      {
+        to: "/help",
+        label: "Help",
+      },
+    ]
+  },
+  {
+    to: "/showcase",
+    label: "Showcase",
+    position: "right",
+  },
+  {
+    type: "localeDropdown",
+    position: "right",
+  },
+]
diff --git a/website/static/data/plugin.json b/website/static/data/plugin.json
deleted file mode 100644
index db315dc..0000000
--- a/website/static/data/plugin.json
+++ /dev/null
@@ -1,199 +0,0 @@
-[
-    {
-        "groupName": "authentication",
-        "plugins": [
-            {
-                "name": "authz-keycloak",
-                "description": "An authorization plugin to be used with the Keycloak Identity Server"
-            },
-            {
-                "name": "basic-auth",
-                "description": "An authentication plugin that need to work with consumer to add Basic Authentication to a Service or a Route"
-            },
-            {
-                "name": "hmac-auth",
-                "description": "An authentication plugin that need to work with consumer to establish the integrity of incoming requests"
-            },
-            {
-                "name": "jwt-auth",
-                "description": "An authentication plugin that need to work with consumer to securely authenticate a valid user requesting access"
-            },
-            {
-                "name": "key-auth",
-                "description": "An authentication plugin that need to work with consumer to add key authentication to your Services"
-            },
-            {
-                "name": "openid-connect",
-                "description": "An authentication plugin that provides authentication and introspection capability to APISIX"
-            }
-        ]
-    },
-    {
-        "groupName": "security",
-        "plugins": [
-            {
-                "name": "api-breaker",
-                "description": "The plugin implements API fuse functionality to help us protect our upstream business services"
-            },
-            {
-                "name": "consumer-restriction",
-                "description": "The plugin makes corresponding access restrictions based on different objects selected"
-            },
-            {
-                "name": "cors",
-                "description": "The plugin can help you enable CORS easily"
-            },
-            {
-                "name": "fault-injection",
-                "description": "The plugin provides the ability to deliberately cause a service to fail, in order to test failure in a complex distributed solution"
-            },
-            {
-                "name": "ip-restriction",
-                "description": "The ip-restriction can restrict access to a Service or a Route by either whitelisting or blacklisting IP addresses"
-            },
-            {
-                "name": "referer-restriction",
-                "description": "The referer-restriction can restrict access to a Service or a Route by whitelisting request header Referrers"
-            },
-            {
-                "name": "request-validation",
-                "description": "The request-validation plugin validates the requests before forwarding to an upstream service"
-            },
-            {
-                "name": "uri-blocker",
-                "description": "The plugin helps to intercept user requests"
-            }
-        ]
-    },
-    {
-        "groupName": "Traffic Control",
-        "plugins": [
-            {
-                "name": "limit-conn",
-                "description": "The plugin  Limits request concurrency"
-            },
-            {
-                "name": "limit-count",
-                "description": "The plugin Limits request rate by a fixed number of requests in a given time window"
-            },
-            {
-                "name": "limit-req",
-                "description": "The plugin limits request rate using the eaky bucket method"
-            },
-            {
-                "name": "traffic-split",
-                "description": "The traffic split plugin allows users to incrementally direct percentages of traffic between various upstreams"
-            }
-        ]
-    },
-    {
-        "groupName": "Serverless",
-        "plugins": [
-            {
-                "name": "serverless-pre-function",
-                "description": "The serverless-pre-function runs at the beginning of the specified phase"
-            },
-            {
-                "name": "serverless-post-function",
-                "description": "The serverless-post-function runs at the end of the specified phase"
-            }
-        ]
-    },
-    {
-        "groupName": "Observability",
-        "plugins": [
-            {
-                "name": "error-log-logger",
-                "description": "Error-log-logger is a plugin which pushes the log data of APISIX's error.log to TCP servers"
-            },
-            {
-                "name": "http-logger",
-                "description": "Http-logger is a plugin which push Log data requests to HTTP/HTTPS servers"
-            },
-            {
-                "name": "kafka-logger",
-                "description": "Kafka-logger is a plugin which works as a Kafka client driver for the ngx_lua nginx module"
-            },
-            {
-                "name": "prometheus",
-                "description": "The plugin exposes metrics in Prometheus Exposition format"
-            },
-            {
-                "name": "request-id",
-                "description": "The plugin adds a unique ID (UUID) to each request proxied through APISIX"
-            },
-            {
-                "name": "skywalking",
-                "description": "Skywalking uses its native Nginx LUA tracer to provide tracing, topology analysis, and metrics from service and URI perspective"
-            },
-            {
-                "name": "sls-logger",
-                "description": "Sls-logger pushes Log data requests to ali cloud Log Server with RF5424"
-            },
-            {
-                "name": "syslog",
-                "description": "Sys pushes Log data requests to Syslog"
-            },
-            {
-                "name": "tcp-logger",
-                "description": "Tcp-logger pushes Log data requests to TCP servers"
-            },
-            {
-                "name": "udp-logger",
-                "description": "Udp-logger pushes Log data requests to UDP servers"
-            },
-            {
-                "name": "zipkin",
-                "description": "Zipkin is a OpenTracing plugin"
-            }
-        ]
-    },
-    {
-        "groupName": "other",
-        "plugins": [
-            {
-                "name": "batch-requests",
-                "description": "Batch-requests accepts multiple request and send them from apisix via http pipeline"
-            },
-            {
-                "name": "grpc-transcode",
-                "description": "Grpc-transcoding involves mapping HTTP/JSON requests and their parameters to gRPC methods and their parameters and return types"
-            },
-            {
-                "name": "proxy-cache",
-                "description": "The proxy-cache plugin provides the ability to cache upstream response data and can be used with other plugins"
-            },
-            {
-                "name": "proxy-mirror",
-                "description": "The proxy-mirror plugin provides the ability to mirror client requests"
-            },
-            {
-                "name": "proxy-rewrite",
-                "description": "The proxy-rewrite is an upstream proxy information rewriting plugin"
-            },
-            {
-                "name": "response-rewrite",
-                "description": "Response-rewrite rewrites the content returned by the upstream as well as Apache APISIX itself"
-            },
-            {
-                "name": "wolf-rbac",
-                "description": "Wolf-rbac is an authentication and authorization (rbac) plugin where the rbac feature is provided by wolf"
-            },
-            {
-                "name": "client-control",
-                "description": "The client-control plugin dynamically controls the behavior of Nginx to handle the client request",
-                "useDefaultIcon": true
-            },
-            {
-                "name": "ext-plugin-pre-req",
-                "description": "The ext-plugin-pre-req runs specific external plugins in the plugin runner, before executing most of the builtin Lua plugins",
-                "useDefaultIcon": true
-            },
-            {
-                "name": "ext-plugin-post-req",
-                "description": "The ext-plugin-post-req runs after executing builtin Lua plugins and before proxying to the upstream",
-                "useDefaultIcon": true
-            }
-        ]
-    }
-]
diff --git a/website/static/data/plugins.json b/website/static/data/plugins.json
new file mode 100644
index 0000000..20bb700
--- /dev/null
+++ b/website/static/data/plugins.json
@@ -0,0 +1,199 @@
+[
+  {
+    "groupName": "authentication",
+    "plugins": [
+      {
+        "name": "authz-keycloak",
+        "description": "An authorization plugin to be used with the Keycloak Identity Server"
+      },
+      {
+        "name": "basic-auth",
+        "description": "An authentication plugin that need to work with consumer to add Basic Authentication to a Service or a Route"
+      },
+      {
+        "name": "hmac-auth",
+        "description": "An authentication plugin that need to work with consumer to establish the integrity of incoming requests"
+      },
+      {
+        "name": "jwt-auth",
+        "description": "An authentication plugin that need to work with consumer to securely authenticate a valid user requesting access"
+      },
+      {
+        "name": "key-auth",
+        "description": "An authentication plugin that need to work with consumer to add key authentication to your Services"
+      },
+      {
+        "name": "openid-connect",
+        "description": "An authentication plugin that provides authentication and introspection capability to APISIX"
+      }
+    ]
+  },
+  {
+    "groupName": "security",
+    "plugins": [
+      {
+        "name": "api-breaker",
+        "description": "The plugin implements API fuse functionality to help us protect our upstream business services"
+      },
+      {
+        "name": "consumer-restriction",
+        "description": "The plugin makes corresponding access restrictions based on different objects selected"
+      },
+      {
+        "name": "cors",
+        "description": "The plugin can help you enable CORS easily"
+      },
+      {
+        "name": "fault-injection",
+        "description": "The plugin provides the ability to deliberately cause a service to fail, in order to test failure in a complex distributed solution"
+      },
+      {
+        "name": "ip-restriction",
+        "description": "The ip-restriction can restrict access to a Service or a Route by either whitelisting or blacklisting IP addresses"
+      },
+      {
+        "name": "referer-restriction",
+        "description": "The referer-restriction can restrict access to a Service or a Route by whitelisting request header Referrers"
+      },
+      {
+        "name": "request-validation",
+        "description": "The request-validation plugin validates the requests before forwarding to an upstream service"
+      },
+      {
+        "name": "uri-blocker",
+        "description": "The plugin helps to intercept user requests"
+      }
+    ]
+  },
+  {
+    "groupName": "Traffic Control",
+    "plugins": [
+      {
+        "name": "limit-conn",
+        "description": "The plugin  Limits request concurrency"
+      },
+      {
+        "name": "limit-count",
+        "description": "The plugin Limits request rate by a fixed number of requests in a given time window"
+      },
+      {
+        "name": "limit-req",
+        "description": "The plugin limits request rate using the eaky bucket method"
+      },
+      {
+        "name": "traffic-split",
+        "description": "The traffic split plugin allows users to incrementally direct percentages of traffic between various upstreams"
+      }
+    ]
+  },
+  {
+    "groupName": "Serverless",
+    "plugins": [
+      {
+        "name": "serverless-pre-function",
+        "description": "The serverless-pre-function runs at the beginning of the specified phase"
+      },
+      {
+        "name": "serverless-post-function",
+        "description": "The serverless-post-function runs at the end of the specified phase"
+      }
+    ]
+  },
+  {
+    "groupName": "Observability",
+    "plugins": [
+      {
+        "name": "error-log-logger",
+        "description": "Error-log-logger is a plugin which pushes the log data of APISIX's error.log to TCP servers"
+      },
+      {
+        "name": "http-logger",
+        "description": "Http-logger is a plugin which push Log data requests to HTTP/HTTPS servers"
+      },
+      {
+        "name": "kafka-logger",
+        "description": "Kafka-logger is a plugin which works as a Kafka client driver for the ngx_lua nginx module"
+      },
+      {
+        "name": "prometheus",
+        "description": "The plugin exposes metrics in Prometheus Exposition format"
+      },
+      {
+        "name": "request-id",
+        "description": "The plugin adds a unique ID (UUID) to each request proxied through APISIX"
+      },
+      {
+        "name": "skywalking",
+        "description": "Skywalking uses its native Nginx LUA tracer to provide tracing, topology analysis, and metrics from service and URI perspective"
+      },
+      {
+        "name": "sls-logger",
+        "description": "Sls-logger pushes Log data requests to ali cloud Log Server with RF5424"
+      },
+      {
+        "name": "syslog",
+        "description": "Sys pushes Log data requests to Syslog"
+      },
+      {
+        "name": "tcp-logger",
+        "description": "Tcp-logger pushes Log data requests to TCP servers"
+      },
+      {
+        "name": "udp-logger",
+        "description": "Udp-logger pushes Log data requests to UDP servers"
+      },
+      {
+        "name": "zipkin",
+        "description": "Zipkin is a OpenTracing plugin"
+      }
+    ]
+  },
+  {
+    "groupName": "other",
+    "plugins": [
+      {
+        "name": "batch-requests",
+        "description": "Batch-requests accepts multiple request and send them from apisix via http pipeline"
+      },
+      {
+        "name": "grpc-transcode",
+        "description": "Grpc-transcoding involves mapping HTTP/JSON requests and their parameters to gRPC methods and their parameters and return types"
+      },
+      {
+        "name": "proxy-cache",
+        "description": "The proxy-cache plugin provides the ability to cache upstream response data and can be used with other plugins"
+      },
+      {
+        "name": "proxy-mirror",
+        "description": "The proxy-mirror plugin provides the ability to mirror client requests"
+      },
+      {
+        "name": "proxy-rewrite",
+        "description": "The proxy-rewrite is an upstream proxy information rewriting plugin"
+      },
+      {
+        "name": "response-rewrite",
+        "description": "Response-rewrite rewrites the content returned by the upstream as well as Apache APISIX itself"
+      },
+      {
+        "name": "wolf-rbac",
+        "description": "Wolf-rbac is an authentication and authorization (rbac) plugin where the rbac feature is provided by wolf"
+      },
+      {
+        "name": "client-control",
+        "description": "The client-control plugin dynamically controls the behavior of Nginx to handle the client request",
+        "useDefaultIcon": true
+      },
+      {
+        "name": "ext-plugin-pre-req",
+        "description": "The ext-plugin-pre-req runs specific external plugins in the plugin runner, before executing most of the builtin Lua plugins",
+        "useDefaultIcon": true
+      },
+      {
+        "name": "ext-plugin-post-req",
+        "description": "The ext-plugin-post-req runs after executing builtin Lua plugins and before proxying to the upstream",
+        "useDefaultIcon": true
+      }
+    ]
+  }
+]