You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2022/01/31 01:41:39 UTC

[skywalking-website] branch master updated: Refactor `Projects and Docs` page (#395)

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

wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking-website.git


The following commit(s) were added to refs/heads/master by this push:
     new a68c0a4  Refactor `Projects and Docs` page (#395)
a68c0a4 is described below

commit a68c0a41d5fc5b71c97c624c0c60f4f91e6f0f82
Author: Juntao Zhang <71...@qq.com>
AuthorDate: Mon Jan 31 09:41:34 2022 +0800

    Refactor `Projects and Docs` page (#395)
---
 content/images/project/banyan-db.png               | Bin 0 -> 6257 bytes
 .../images/project/data-collection-protocol.png    | Bin 0 -> 4728 bytes
 content/images/project/docker.png                  | Bin 0 -> 4025 bytes
 content/images/project/go-api.png                  | Bin 0 -> 4013 bytes
 content/images/project/heart.png                   | Bin 0 -> 309 bytes
 content/images/project/helm.png                    | Bin 0 -> 4810 bytes
 content/images/project/java-agent.png              | Bin 0 -> 4038 bytes
 content/images/project/js-agent.png                | Bin 0 -> 4025 bytes
 content/images/project/kong-agent.png              | Bin 0 -> 4059 bytes
 content/images/project/kubernetes.png              | Bin 0 -> 6069 bytes
 content/images/project/nginx-lua-agent.png         | Bin 0 -> 5205 bytes
 content/images/project/nodejs-agent.png            | Bin 0 -> 8280 bytes
 content/images/project/python-agent.png            | Bin 0 -> 4756 bytes
 content/images/project/rocketbot-ui.png            | Bin 0 -> 4333 bytes
 .../images/project/skywalking-agent-test-tool.png  | Bin 0 -> 4378 bytes
 content/images/project/skywalking-cli.png          | Bin 0 -> 3844 bytes
 content/images/project/skywalking-eyes.png         | Bin 0 -> 4453 bytes
 content/images/project/skywalking-query.png        | Bin 0 -> 4537 bytes
 content/images/project/skywalking-satellite.png    | Bin 0 -> 4528 bytes
 content/images/project/skywalking-website.png      | Bin 0 -> 5003 bytes
 content/images/project/skywalking.png              | Bin 0 -> 4839 bytes
 data/docs.yml                                      |  75 +++----
 themes/docsy/assets/js/active.js                   |  32 ++-
 themes/docsy/assets/scss/_custom_docs.scss         | 223 +++++++++++++++------
 themes/docsy/assets/scss/_custom_slider.scss       |   3 +-
 themes/docsy/assets/scss/_nav.scss                 |   1 -
 themes/docsy/layouts/docs/baseof.html              |  42 +++-
 themes/docsy/layouts/partials/navbar.html          |   2 +-
 themes/docsy/layouts/partials/scripts.html         |   2 -
 themes/docsy/static/js/iconfont.js                 |   1 +
 30 files changed, 247 insertions(+), 134 deletions(-)

diff --git a/content/images/project/banyan-db.png b/content/images/project/banyan-db.png
new file mode 100644
index 0000000..04e8aa0
Binary files /dev/null and b/content/images/project/banyan-db.png differ
diff --git a/content/images/project/data-collection-protocol.png b/content/images/project/data-collection-protocol.png
new file mode 100644
index 0000000..6356cc2
Binary files /dev/null and b/content/images/project/data-collection-protocol.png differ
diff --git a/content/images/project/docker.png b/content/images/project/docker.png
new file mode 100644
index 0000000..2dcac55
Binary files /dev/null and b/content/images/project/docker.png differ
diff --git a/content/images/project/go-api.png b/content/images/project/go-api.png
new file mode 100644
index 0000000..9d4fee7
Binary files /dev/null and b/content/images/project/go-api.png differ
diff --git a/content/images/project/heart.png b/content/images/project/heart.png
new file mode 100644
index 0000000..b6a050d
Binary files /dev/null and b/content/images/project/heart.png differ
diff --git a/content/images/project/helm.png b/content/images/project/helm.png
new file mode 100644
index 0000000..71bf646
Binary files /dev/null and b/content/images/project/helm.png differ
diff --git a/content/images/project/java-agent.png b/content/images/project/java-agent.png
new file mode 100644
index 0000000..a0f899d
Binary files /dev/null and b/content/images/project/java-agent.png differ
diff --git a/content/images/project/js-agent.png b/content/images/project/js-agent.png
new file mode 100644
index 0000000..9b6eb95
Binary files /dev/null and b/content/images/project/js-agent.png differ
diff --git a/content/images/project/kong-agent.png b/content/images/project/kong-agent.png
new file mode 100644
index 0000000..10e8b0f
Binary files /dev/null and b/content/images/project/kong-agent.png differ
diff --git a/content/images/project/kubernetes.png b/content/images/project/kubernetes.png
new file mode 100644
index 0000000..805e296
Binary files /dev/null and b/content/images/project/kubernetes.png differ
diff --git a/content/images/project/nginx-lua-agent.png b/content/images/project/nginx-lua-agent.png
new file mode 100644
index 0000000..0278f9d
Binary files /dev/null and b/content/images/project/nginx-lua-agent.png differ
diff --git a/content/images/project/nodejs-agent.png b/content/images/project/nodejs-agent.png
new file mode 100644
index 0000000..938fb72
Binary files /dev/null and b/content/images/project/nodejs-agent.png differ
diff --git a/content/images/project/python-agent.png b/content/images/project/python-agent.png
new file mode 100644
index 0000000..52a5a40
Binary files /dev/null and b/content/images/project/python-agent.png differ
diff --git a/content/images/project/rocketbot-ui.png b/content/images/project/rocketbot-ui.png
new file mode 100644
index 0000000..60862c5
Binary files /dev/null and b/content/images/project/rocketbot-ui.png differ
diff --git a/content/images/project/skywalking-agent-test-tool.png b/content/images/project/skywalking-agent-test-tool.png
new file mode 100644
index 0000000..a6a1208
Binary files /dev/null and b/content/images/project/skywalking-agent-test-tool.png differ
diff --git a/content/images/project/skywalking-cli.png b/content/images/project/skywalking-cli.png
new file mode 100644
index 0000000..bf3ad20
Binary files /dev/null and b/content/images/project/skywalking-cli.png differ
diff --git a/content/images/project/skywalking-eyes.png b/content/images/project/skywalking-eyes.png
new file mode 100644
index 0000000..ddd5fac
Binary files /dev/null and b/content/images/project/skywalking-eyes.png differ
diff --git a/content/images/project/skywalking-query.png b/content/images/project/skywalking-query.png
new file mode 100644
index 0000000..7cb8530
Binary files /dev/null and b/content/images/project/skywalking-query.png differ
diff --git a/content/images/project/skywalking-satellite.png b/content/images/project/skywalking-satellite.png
new file mode 100644
index 0000000..382914f
Binary files /dev/null and b/content/images/project/skywalking-satellite.png differ
diff --git a/content/images/project/skywalking-website.png b/content/images/project/skywalking-website.png
new file mode 100644
index 0000000..dbf8095
Binary files /dev/null and b/content/images/project/skywalking-website.png differ
diff --git a/content/images/project/skywalking.png b/content/images/project/skywalking.png
new file mode 100644
index 0000000..6aa2eca
Binary files /dev/null and b/content/images/project/skywalking.png differ
diff --git a/data/docs.yml b/data/docs.yml
index 84ed638..c83b363 100644
--- a/data/docs.yml
+++ b/data/docs.yml
@@ -1,8 +1,9 @@
 - type: Quick Start
+  buttonText: showcase
   description:
   list:
     - name: SkyWalking Showcase
-      icon: S
+      icon: skywalking
       description: A demo music application to showcase features of Apache SkyWalking in action.
       user: apache
       repo: skywalking-showcase
@@ -11,11 +12,11 @@
         - version: latest
           link: /docs/skywalking-showcase/latest/readme/
 
-- type: General
+- type: Foundations
   description:
   list:
     - name: SkyWalking
-      icon: S
+      icon: skywalking
       description: The documentation including core concepts, protocols, OAP backend, and UI. Include doc of Java agent(<= 8.7.0).
       user: apache
       repo: skywalking
@@ -43,13 +44,13 @@
           commitId: 0bdb38615c099d05ae397b5143473a31c8ceab3f
 
     - name: Rocketbot UI
-      icon: R
+      icon: rocketbot-ui
       description: Apache SkyWalking UI.
       user: apache
       repo: skywalking-rocketbot-ui
 
     - name: SkyWalking Website
-      icon: W
+      icon: skywalking-website
       description: This is the repository including all source codes of http://skywalking.apache.org
       user: apache
       repo: skywalking-website
@@ -58,7 +59,7 @@
   description:
   list:
     - name: Java Agent
-      icon: J
+      icon: java-agent
       description: The Java Agent for Apache SkyWalking, which provides the native tracing/metrics/logging/event abilities for Java projects.
       user: apache
       repo: skywalking-java
@@ -74,7 +75,7 @@
           commitId: 3bc0d47ff579616c593af562ef245dc1675521e0
 
     - name: Python Agent
-      icon: P
+      icon: python-agent
       description: The Python Agent for Apache SkyWalking, which provides the native tracing/logging abilities for Python projects.
       user: apache
       repo: skywalking-python
@@ -87,7 +88,7 @@
           commitId: 652d7bda5185ea3b4ecd590a80526f4808319bcf
 
     - name: NodeJS Agent
-      icon: J
+      icon: nodejs-agent
       description: The NodeJS Agent for Apache SkyWalking, which provides the native tracing abilities for NodeJS project.
       user: apache
       repo: skywalking-nodejs
@@ -96,7 +97,7 @@
           link: https://github.com/apache/skywalking-nodejs/tree/v0.3.0
 
     - name: Nginx LUA Agent
-      icon: L
+      icon: nginx-lua-agent
       description: SkyWalking Nginx Agent provides the native tracing capability for Nginx powered by Nginx LUA module.
       user: apache
       repo: skywalking-nginx-lua
@@ -105,7 +106,7 @@
           link: https://github.com/apache/skywalking-nginx-lua/tree/v0.6.0
 
     - name: Kong Agent
-      icon: K
+      icon: kong-agent
       description: SkyWalking Kong Agent provides the native tracing capability.
       user: apache
       repo: skywalking-kong
@@ -114,7 +115,7 @@
           link: https://github.com/apache/skywalking-kong/tree/v0.2.0
 
     - name: Client JavaScript
-      icon: C
+      icon: js-agent
       description: Apache SkyWalking Client-side JavaScript exception and tracing library.
       user: apache
       repo: skywalking-client-js
@@ -123,7 +124,7 @@
           link: https://github.com/apache/skywalking-client-js/tree/v0.7.0
 
     - name: Rust Agent
-      icon: R
+      icon: skywalking
       description: The Rust Agent for Apache SkyWalking, which provides the native tracing abilities for Rust project.
       user: apache
       repo: skywalking-rust
@@ -132,7 +133,7 @@
           link: https://github.com/apache/skywalking-rust
 
     - name: SkyWalking Satellite
-      icon: S
+      icon: skywalking-satellite
       description: A lightweight collector/sidecar could be deployed closing to the target monitored system, to collect metrics, traces, and logs.
       user: apache
       repo: skywalking-satellite
@@ -145,21 +146,17 @@
           commitId: ae8d035ddf398801b1567ffa6853bce5045af35b
 
     - name: Kubernetes Event Exporter
-      icon: C
+      icon: kubernetes
       description: Watch, filter, and send Kubernetes events into Apache SkyWalking
       user: apache
       repo: skywalking-kubernetes-event-exporter
 
-    - name:
-      description: More language agents maintained by our community
-      descriptionLink: '#SkyAPM-dotnet'
-
 
 - type: Operation
   description:
   list:
     - name: SkyWalking CLI
-      icon: C
+      icon: skywalking-cli
       description: SkyWalking CLI is a command interaction tool for the SkyWalking user or OPS team.
       user: apache
       repo: skywalking-cli
@@ -168,7 +165,7 @@
           link: https://github.com/apache/skywalking-cli/tree/0.9.0
 
     - name: Kubernetes Helm
-      icon: H
+      icon: helm
       description: SkyWalking Kubernetes repository provides ways to install and configure SkyWalking in a Kubernetes cluster. The scripts are written in Helm 3.
       user: apache
       repo: skywalking-kubernetes
@@ -177,7 +174,7 @@
           link: https://github.com/apache/skywalking-kubernetes/tree/v4.2.0
 
     - name: SkyWalking Cloud on Kubernetes
-      icon: K
+      icon: kubernetes
       description: A bridge project between Apache SkyWalking and Kubernetes.
       user: apache
       repo: skywalking-swck
@@ -194,19 +191,19 @@
   description:
   list:
     - name: Data Collect Protocol
-      icon: C
+      icon: data-collection-protocol
       description: Apache SkyWalking data collect protocol.
       user: apache
       repo: skywalking-data-collect-protocol
 
     - name: Query Protocol
-      icon: Q
+      icon: skywalking-query
       description: Query Protocol defines the communication protocol in query stage. SkyWalking native UI and CLI use this protocol to fetch data from the backend consistently.
       user: apache
       repo: skywalking-query-protocol
 
     - name: Go API
-      icon: G
+      icon: go-api
       description: Apache SkyWalking APIs in Golang
       user: apache
       repo: skywalking-goapi
@@ -215,27 +212,28 @@
   description: An observability database aims to ingest, analyze and store Metrics, Tracing and Logging data.
   list:
     - name: BanyanDB
-      icon: D
+      icon: banyan-db
       description: Database server.
       user: apache
       repo: skywalking-banyandb
     - name: BanyanDB Java Client
-      icon: C
+      icon: banyan-db
       description: The client implement for SkyWalking BanyanDB in Java
       user: apache
       repo: skywalking-banyandb-java-client
 
-- type: Tools
+- type: Support tools for development and testing
+  buttonText: tools
   description: SkyWalking native tools to support development and testing.
   list:
     - name: Agent Test Tool
-      icon: T
+      icon: skywalking-agent-test-tool
       description: SkyWalking Agent Test Tool is a tremendously useful test tools suite in a wide variety of languages of Agent. Includes mock collector and validator.
       user: apache
       repo: skywalking-agent-test-tool
 
     - name: SkyWalking Eyes
-      icon: I
+      icon: skywalking-eyes
       description: A full-featured license tool to check and fix license headers and resolve dependencies' licenses.
       user: apache
       repo: skywalking-eyes
@@ -244,7 +242,7 @@
           link: https://github.com/apache/skywalking-eyes/tree/v0.2.0
 
     - name: SkyWalking Infra E2E
-      icon: E
+      icon: skywalking
       description: An End-to-End Testing framework that aims to help developers to set up, debug, and verify E2E tests with ease.
       user: apache
       repo: skywalking-infra-e2e
@@ -257,87 +255,76 @@
           commitId: 996ed8902e941e2883fcf0ac5b3090364942d205
 
 - type: Archived Repositories
+  buttonText: Archived
   description: All following repositories are archived, which means there is no further activities happening there.
   list:
 
     - name: (Archived) Docker Files
-      icon: D
       description: Docker files for Apache SkyWalking(version <= 8.7.0) javaagent, OAP, and UI.
       user: apache
       repo: skywalking-docker
 
     - name: (Archived) Legacy UI
-      icon: UI
       description: The web UI for skywalking APM
       user: apache
       repo: skywalking-ui
 
     - name: (Archived) OAL Generator
-      icon: UI
       description: Observability Analysis Language(OAL) Tool is a code generation tool for SkyWalking. From Nov. 6th 2018, merged into main codebase.
       user: apache
       repo: skywalking-oal-tool
 
 - type: Ecosystem
-  description: All following repositories are a part of SkyWalking ecosystem, as agent implementations, extensions, or tools. All the source codes and their distributions are not belonging to the Apache Software Foundation.
   list:
+    - name:
+      descriptionItem: All following repositories are a part of SkyWalking ecosystem, as agent implementations, extensions, or tools. All the source codes and their distributions are not belonging to the Apache Software Foundation.
 
     - name: SkyAPM-dotnet
-      icon: D
       description: SkyAPM-dotnet provides the native support agent in C# and .NETStandard platform, with the helps from Apache SkyWalking committer team.
       user: SkyAPM
       repo: SkyAPM-dotnet
 
     - name: Go2Sky
-      icon: G
       description: Go2Sky is an instrument SDK library, written in Go, by following Apache SkyWalking tracing and metrics formats.
       user: SkyAPM
       repo: go2sky
 
     - name: Go2Sky Plugins
-      icon: G
       description: The plugins of Go2Sky.
       user: SkyAPM
       repo: go2sky-plugins
 
     - name: SkyAPM PHP Agent
-      icon: P
       description: SkyAPM PHP is the PHP instrumentation agent, which is compatible with Apache SkyWalking backend and others compatible agents/SDKs.
       user: SkyAPM
       repo: SkyAPM-php-sdk
 
     - name: cpp2sky
-      icon: C
       description: Distributed tracing and monitor SDK in CPP for Apache SkyWalking APM
       user: SkyAPM
       repo: cpp2sky
 
     - name: SourceMarker
-      icon: S
       description: JetBrains-powered plugin. Continuous Feedback for Developers / Feedback-Driven Development Tool.
       user: sourceplusplus
       repo: SourceMarker
 
     - name: Java Plugin Extensions
-      icon: J
       description: Java agent plugin extensions for Apache SkyWalking.
       user: SkyAPM
       repo: java-plugin-extensions
 
     - name: Transporter Plugins
-      icon: T
       description: 3rd-party transporter implementation of Apache SkyWalking.
       user: SkyAPM
       repo: transporter-plugin-for-skywalking
 
     - name: uranus
-      icon: U
       description: A tool helps on locating witness class for Apache SkyWalking plugin.
       user: SkyAPM
       repo: uranus
 
     - name: (Retired) SkyAPM Node.js
-      icon: O
       description: SkyAPM Node.js is the Node.js instrumentation agent, this project wouldn't have any update, it has been retired and archived.
       user: SkyAPM
       repo: SkyAPM-nodejs
diff --git a/themes/docsy/assets/js/active.js b/themes/docsy/assets/js/active.js
index 408b6eb..4c822a4 100644
--- a/themes/docsy/assets/js/active.js
+++ b/themes/docsy/assets/js/active.js
@@ -1,31 +1,41 @@
-$(function (){
+$(function () {
   init();
-  function init(){
+
+  function init() {
     bindClick();
     setActive();
   }
-  function bindClick(){
-    $('.title-box a').on('click', function (){
+
+  function bindClick() {
+    $('.title-box a').on('click', function () {
       var hash = $(this).attr('href')
       scrollTop(hash);
-    })
-    $('.more-btn').on('click', function (){
+      $('.card-wrapper .card').removeClass('active');
+      $(hash).parents('.card').addClass('active');
+    });
+    $('.more-btn').on('click', function () {
       var hash = $(this).data('link')
       scrollTop(hash, 270);
+    });
+    $('.link-type').on('click', function () {
+      var hash = $(this).attr('href')
+      scrollTop(hash, 120);
     })
   }
-  function scrollTop(hash, offset){
-    if(!$(hash).length){
+
+  function scrollTop(hash, offset) {
+    if (!$(hash).length) {
       return;
     }
-    $('html,body').animate({scrollTop: $(hash).offset().top - (offset || 100)})
+    $('html,body').animate({scrollTop: $(hash).offset().top - (offset || 160)})
   }
+
   function setActive() {
     var hash = location.hash;
-    if(!location.hash || !$(hash).length){
+    if (!location.hash || !$(hash).length) {
       return;
     }
     $(hash).parents('.card').addClass('active');
     scrollTop(hash)
   }
-})
\ No newline at end of file
+})
diff --git a/themes/docsy/assets/scss/_custom_docs.scss b/themes/docsy/assets/scss/_custom_docs.scss
index cea5ba0..073b179 100644
--- a/themes/docsy/assets/scss/_custom_docs.scss
+++ b/themes/docsy/assets/scss/_custom_docs.scss
@@ -1,45 +1,84 @@
 .td-docs {
-  .card-wrapper {
+  #Ecosystem {
+    padding-bottom: 0.4rem;
+  }
+
+  .sky-btn {
+    font-size: 14px;
+    padding: 5px 13px;
+    height: 30px;
+    line-height: 1;
+  }
+
+  .link-type {
+    display: inline-block;
+    margin-top: 10px;
+  }
+
+  .article-description {
+    max-width: 1000px;
+    margin: 0 auto;
+    text-align: center;
+  }
 
-    padding-bottom: 1em;
+  .card-wrapper {
+    padding-bottom: 0;
     padding-top: 1em;
-    &:nth-of-type(1){
+
+    img:hover {
+      cursor: default;
+    }
+
+    &:nth-of-type(1) {
       padding-top: 1.5em;
     }
-    .item-wrapper{
+
+    .item-wrapper {
       display: flex;
       flex-wrap: wrap;
       justify-content: flex-start;
     }
+
+    .card {
+      border: none;
+      border-right: 1px solid #DADDE0;
+      border-radius: 0;
+    }
+
     .item {
-      width: 31.33%;
-      margin: 0 1% 24px;
+      width: 33.33%;
+      margin: 0 0 24px;
+
       &:hover {
-        box-shadow: 0 0 8px #cccccc5e;
+        box-shadow: none;
       }
-      &.description-link{
-        border-style: dashed;
-        border-width: 2px;
-        .card-body{
+
+      &.description-item {
+        box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.3);
+        border-radius: 6px;
+        color: #fff;
+        background-color: #3987CD;
+        background-image: url("/images/project/heart.png");
+        background-repeat: no-repeat;
+        background-size: 24px 24px;
+        background-position: bottom 24px right 24px;
+        border: 0 !important;
+
+        .card-body {
           display: flex;
-          justify-content: center;
           align-items: center;
-          text-align: center;
-          >div{
-            max-width: 244px;
-            line-height: 1.8;
-            .fa{
-              opacity: 0.7;
-              position: relative;
-              top: 2px;
-            }
-          }
         }
+
       }
     }
-    .item.active{
-      box-shadow: 0 0 4px #add5f3;
-      border-color: #85beec;
+
+    .item.active {
+      position: relative;
+      box-shadow: 0 0 8px #add5f3;
+      border: 1px solid #85beec !important;
+      border-radius: 5px;
+      left: -3px;
+      z-index: 1;
     }
 
     .btn {
@@ -79,20 +118,35 @@
       box-shadow: none;
     }
 
-    .card-body{
-        padding-bottom: 50px;
-        position: relative;
+    .card-body {
+      padding-top: 0.6rem;
+      padding-bottom: 50px;
+      position: relative;
+
+      > img {
+        margin-left: -3px;
+      }
+
+      .svg-icon {
+        width: 44px;
+        height: 44px;
+      }
     }
+
     .doc-box {
       padding: 0 1.25rem;
       display: flex;
-      justify-content: space-between;
-      width:100%;
+      width: 100%;
       position: absolute;
       bottom: 20px;
       left: 0;
+
+      .gh-text {
+        font-size: 12px;
+      }
     }
-    .dropdown-menu{
+
+    .dropdown-menu {
       min-width: 6rem;
       width: 100%;
       max-height: 208px;
@@ -102,65 +156,108 @@
 
   .title-box {
     display: flex;
-    padding-bottom: 10px;
+    padding-bottom: 4px;
+    align-items: center;
+
     &:hover a {
-      visibility: initial!important;
+      visibility: initial !important;
     }
 
     .card-title {
       margin: 0;
-      font-size: 22px;
+      font-size: 18px;
+      font-weight: 600;
       color: #000;
-      padding: 0 0 0 14px;
-      flex: 1;
+      padding-top: 0;
       line-height: 40px;
     }
-
-    .icon {
-      width: 40px;
-      height: 40px;
-      line-height: 40px;
-      text-align: center;
-      background-color: #eff0f3;
-      color: #0091ff;
-      border-radius: 50%;
-      font-weight: 600;
-      font-size: 26px;
-    }
   }
 
   .deco-title {
-    width: 100%;
     border-bottom: none;
-    padding:0 1%;
-    &:before{
-      content: "";
-      display: block;
-      width: 50px;
-      height: 3px;
-      background-color: #0091ff;
-      margin-bottom: 8px;
-    }
+    padding: 0.8rem 1.25rem 0;
+    margin-bottom: 0;
+  }
+
+  .desc-text {
+    padding: 0.8rem 1.25rem;
+    margin-bottom: 0.3rem;
   }
-  .desc-text{
-    padding:0 1%;
+}
+
+@media (min-width: 1440px) {
+  .td-docs {
+    .card-wrapper {
+      .item {
+        width: 25%;
+        margin-left: 0;
+        margin-right: 0;
+
+        &:nth-of-type(4n) {
+          border-right: 0;
+        }
+      }
+
+      &:last-child {
+        .item {
+          border-right: 1px solid #DADDE0;
+
+          &:nth-of-type(4n-1) {
+            border-right: 0;
+          }
+        }
+
+        .description-item {
+          width: 49%;
+          margin-right: 1%;
+        }
+      }
+    }
   }
 }
 
+@media (min-width: 997px) and (max-width: 1439px) {
+  .td-docs {
+    .card-wrapper {
+      .item {
+        &:nth-of-type(3n) {
+          border-right: 0;
+        }
+      }
+    }
+  }
+}
 
-@media (max-width: 996px) {
+@media (min-width: 769px) and (max-width: 996px) {
   .td-docs {
     .card-wrapper {
       .item {
         width: 48%;
+
+        &:nth-of-type(2n) {
+          border-right: 0;
+        }
       }
     }
   }
-}@media (max-width: 768px) {
+}
+
+@media (min-width: 769px) {
+  .td-docs {
+    .btn-wrapper {
+      position: sticky;
+      top: 54px;
+      z-index: 9;
+    }
+  }
+}
+
+@media (max-width: 768px) {
   .td-docs {
     .card-wrapper {
       .item {
-        width: 98%;
+        width: 100%;
+        border-left: 1px solid #DADDE0;
       }
     }
   }
diff --git a/themes/docsy/assets/scss/_custom_slider.scss b/themes/docsy/assets/scss/_custom_slider.scss
index b133cc2..12fc356 100644
--- a/themes/docsy/assets/scss/_custom_slider.scss
+++ b/themes/docsy/assets/scss/_custom_slider.scss
@@ -62,7 +62,7 @@
     }
 
 }
-@media (min-width: 768px) {
+@media (min-width: 769px) {
     .sidebar {
         display: none!important;
 
@@ -169,7 +169,6 @@ a.sidebar-link.active {
 
 
 .sidebar .nav-links {
-    //border-bottom: 1px solid #eaecef;
     padding: .5rem 0 .75rem 0;
 
     .dropdown-item.active, .dropdown-item:active {
diff --git a/themes/docsy/assets/scss/_nav.scss b/themes/docsy/assets/scss/_nav.scss
index fe2b4e7..2a20785 100644
--- a/themes/docsy/assets/scss/_nav.scss
+++ b/themes/docsy/assets/scss/_nav.scss
@@ -125,7 +125,6 @@ $primary: #fff;
         .td-navbar-nav-scroll {
             max-width: 100%;
             height: 2.5rem;
-            line-height: 2.5rem;
             font-size: .875rem;
             .nav-link {
                 padding-right: .25rem;
diff --git a/themes/docsy/layouts/docs/baseof.html b/themes/docsy/layouts/docs/baseof.html
index 2a01a56..206cfe0 100644
--- a/themes/docsy/layouts/docs/baseof.html
+++ b/themes/docsy/layouts/docs/baseof.html
@@ -13,10 +13,31 @@
         <div class="container">
           <main role="main">
             <h1 class="text-center">Projects and Documentation</h1>
+            <p class="article-description mt-4">
+              This directory includes the official SkyWalking repositories and some ecosystem projects developed by community. Looking for downloadable releases? You can find them in
+              <a href="/downloads">Downloads</a> page.
+            </p>
+            <div class="text-center btn-wrapper mb-4">
+              {{range .Site.Data.docs}}
+              {{if .buttonText}}
+              <a href="#{{.buttonText}}" class="link-type">
+                <button class="sky-btn">{{.buttonText}}</button>
+              </a>
+              {{else}}
+              <a href="#{{.type}}" class="link-type">
+                <button class="sky-btn">{{.type}}</button>
+              </a>
+              {{end}}
+              {{end}}
+            </div>
 
-            {{ range .Site.Data.docs }}
+            {{range .Site.Data.docs}}
             <div class="card-wrapper">
-              <h2 class="deco-title">{{.type}}</h2>
+              {{if .buttonText}}
+              <h2 class="deco-title" id="{{.buttonText}}">{{.type}}</h2>
+              {{else}}
+              <h2 class="deco-title" id="{{.type}}">{{.type}}</h2>
+              {{end}}
               {{if .description}}
               <p class="desc-text">{{.description}}</p>
               {{end}}
@@ -24,22 +45,23 @@
               <div class="item-wrapper">
               {{range .list}}
                 {{$id := replace .name " " "" }}
+                {{$id := replace $id ")" "" }}
+                {{$id := replace $id "(" "" }}
 
-                {{if .descriptionLink}}
-                <div class="card item description-link">
+                {{if .descriptionItem}}
+                <div class="card item description-item">
                   <div class="card-body">
-                    <div>
-                      <a href="javascript:;"
-                         data-link="{{.descriptionLink}}"
-                         class="more-btn card-text">{{.description}} <span class="fa fa-angle-double-right"></span></a>
-                    </div>
+                    {{.descriptionItem}}
                   </div>
                 </div>
                 {{else}}
                 <div class="card item">
                   <div class="card-body">
+                    {{if .icon}}
+                    <img width="44" src="/images/project/{{.icon}}.png" alt="{{.icon}}">
+                    {{end}}
+
                     <div class="title-box">
-                      <span class="icon">{{.icon}}</span>
                       <h5 class="card-title">{{.name}}</h5>
                       <a aria-hidden="true" href="#{{$id}}" id="{{$id}}" style="visibility: hidden;">
                         <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"></path></svg>
diff --git a/themes/docsy/layouts/partials/navbar.html b/themes/docsy/layouts/partials/navbar.html
index 0c04074..78eca83 100644
--- a/themes/docsy/layouts/partials/navbar.html
+++ b/themes/docsy/layouts/partials/navbar.html
@@ -15,7 +15,7 @@
                 <a class="nav-link" href="{{ .URL | relLangURL }}">{{ .Name }}</a>
             </li>
             -->
-            <li class="nav-item mr-3 mb-2 mb-lg-0">
+            <li class="nav-item mr-3 mb-lg-0">
 				{{ $active := or ($p.IsMenuCurrent "main" .) ($p.HasMenuCurrent "main" .) }}
 				{{ with .Page }}
 				{{ $active = or $active ( $.IsDescendant .)  }}
diff --git a/themes/docsy/layouts/partials/scripts.html b/themes/docsy/layouts/partials/scripts.html
index b6dacdc..7564f9e 100644
--- a/themes/docsy/layouts/partials/scripts.html
+++ b/themes/docsy/layouts/partials/scripts.html
@@ -1,5 +1,3 @@
-
-<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
 <script src="/js/bootstrap.bundle.min.js"></script>
 {{ if .Site.Params.algolia_docsearch }}
 <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
diff --git a/themes/docsy/static/js/iconfont.js b/themes/docsy/static/js/iconfont.js
new file mode 100644
index 0000000..bacbe96
--- /dev/null
+++ b/themes/docsy/static/js/iconfont.js
@@ -0,0 +1 @@
+!function(a){var l,t,c,i,h,o='<svg><symbol id="icon-a-kongagent" viewBox="0 0 1024 1024"><path d="M93.090909 93.090909a93.090909 93.090909 0 0 1 93.090909-93.090909h651.636364a93.090909 93.090909 0 0 1 93.090909 93.090909v651.636364a93.090909 93.090909 0 0 1-93.090909 93.090909H186.181818a93.090909 93.090909 0 0 1-93.090909-93.090909V93.090909z" fill="#0B2B40" ></path><path d="M447.860364 202.263273a178.036364 178.036364 0 0 1 29.556363-4.049455c100.026182-5.352727 185.437091 72.773818 1 [...]
\ No newline at end of file