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

xingfudeshi pushed a commit to branch docusaurus
in repository https://gitbox.apache.org/repos/asf/incubator-seata-website.git


The following commit(s) were added to refs/heads/docusaurus by this push:
     new c4490a8b4e9 optimize: fix add ecosystem doc (#1044)
c4490a8b4e9 is described below

commit c4490a8b4e97068b8c1edf175b8e39302ebdb218
Author: jimin <[email protected]>
AuthorDate: Thu Dec 11 10:30:19 2025 +0800

    optimize: fix add ecosystem doc (#1044)
---
 sidebars.js                      | 32 +++++++++++++++++++++
 sidebarsUnversioned.js           | 25 ++++++++++++++++
 src/pages/home/feature/index.tsx | 61 ++++++++++++++++++++++++++++------------
 src/pages/home/top/index.tsx     | 24 ++++++++++++----
 src/pages/index.tsx              |  2 +-
 5 files changed, 119 insertions(+), 25 deletions(-)

diff --git a/sidebars.js b/sidebars.js
index 37b08a5f48e..2746bb28d3e 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -195,6 +195,38 @@ const sidebars = {
         'security/serialization',
       ],
     },
+    {
+      type: 'category',
+      label: 'Ecosystem & Repositories', // New section title
+      collapsible: false,
+      items: [
+        {
+          type: 'link',
+          label: 'Seata GoLang Repository',
+          href: 'https://github.com/apache/incubator-seata-go',
+        },
+        {
+          type: 'link',
+          label: 'Seata Samples (Java)',
+          href: 'https://github.com/apache/incubator-seata-samples',
+        },
+        {
+          type: 'link',
+          label: 'Seata GoLang Samples',
+          href: 'https://github.com/apache/incubator-seata-go-samples',
+        },
+        {
+          type: 'link',
+          label: 'Seata K8s (Kubernetes)',
+          href: 'https://github.com/apache/incubator-seata-k8s',
+        },
+        {
+          type: 'link',
+          label: 'Seata CLI (CTL)',
+          href: 'https://github.com/apache/incubator-seata-ctl',
+        },
+      ],
+    },
   ],
   developers: [
     {
diff --git a/sidebarsUnversioned.js b/sidebarsUnversioned.js
index da73481d7b5..1902f40b3e3 100644
--- a/sidebarsUnversioned.js
+++ b/sidebarsUnversioned.js
@@ -35,6 +35,31 @@ const sidebarsUnversioned = {
       items: ['release-history/seata-server'],
     },
   ],
+  ecosystem: [
+        {
+            type: 'category',
+            label: 'Ecosystem & Repositories',
+            collapsible: false,
+            items: [
+                {
+                    type: 'link',
+                    label: 'Seata GoLang Repository',
+                    href: 'https://github.com/apache/incubator-seata-go',
+                },
+                {
+                    type: 'link',
+                    label: 'Seata K8s (Kubernetes)',
+                    href: 'https://github.com/apache/incubator-seata-k8s',
+                },
+                {
+                    type: 'link',
+                    label: 'Seata Samples',
+                    href: 'https://github.com/apache/incubator-seata-samples',
+                },
+                // ... include all required links
+            ],
+        },
+    ],
 };
 
 module.exports = sidebarsUnversioned;
diff --git a/src/pages/home/feature/index.tsx b/src/pages/home/feature/index.tsx
index a0afd3559a1..7671f43dec4 100644
--- a/src/pages/home/feature/index.tsx
+++ b/src/pages/home/feature/index.tsx
@@ -56,10 +56,12 @@ const data = {
         id: 'homepage.featureListTitle3',
         message: 'TCC 模式',
       }),
-      content: translate({
-        id: 'homepage.featureListContent3',
-        message: '支持 TCC 模式并可与 AT 混用,灵活度更高',
-      }),
+      content: [
+        translate({
+          id: 'homepage.featureListContent3',
+          message: '支持 TCC 模式并可与 AT 混用,灵活度更高',
+        }),
+      ],
     },
     {
       icon: 'feature-4',
@@ -67,10 +69,12 @@ const data = {
         id: 'homepage.featureListTitle4',
         message: 'SAGA 模式',
       }),
-      content: translate({
-        id: 'homepage.featureListContent4',
-        message: '为长事务提供有效的解决方案,提供编排式和注解式(开发中)',
-      }),
+      content: [
+        translate({
+          id: 'homepage.featureListContent4',
+          message: '为长事务提供有效的解决方案,提供编排式和注解式(开发中)',
+        }),
+      ],
     },
     {
       icon: 'feature-5',
@@ -78,20 +82,37 @@ const data = {
         id: 'homepage.featureListTitle5',
         message: 'XA 模式',
       }),
-      content: translate({
-        id: 'homepage.featureListContent5',
-        message:
-          '支持已实现 XA 接口的数据库的 XA 模式,目前已支持MySQL、Oracle和MariaDB',
-      }),
+      content: [
+        translate({
+          id: 'homepage.featureListContent5',
+          message:
+            '支持已实现 XA 接口的数据库的 XA 模式,目前已支持MySQL、Oracle和MariaDB',
+        }),
+      ],
     },
     {
       icon: 'feature-6',
       title: translate({ id: 'homepage.featureListTitle6', message: '高可用' }),
-      content: translate({
-        id: 'homepage.featureListContent6',
-        message:
-          '支持存算分离的集群模式,计算节点可水平扩展,存储支持数据库和 Redis。Raft集群模式进入beta验证阶段',
+      content: [
+        translate({
+          id: 'homepage.featureListContent6',
+          message:
+            '支持存算分离的集群模式,计算节点可水平扩展,存储支持数据库和 Redis。Raft集群模式进入beta验证阶段',
+        }),
+      ],
+    },
+    {
+      icon: 'feature-7',
+      title: translate({
+        id: 'homepage.featureListTitle7',
+        message: 'GoLang Implementation & Ecosystem',
       }),
+      content: [
+        translate({
+          id: 'homepage.featureListContent7',
+          message: 'Seata has a native GoLang implementation for 
high-performance transactions. Discover the entire ecosystem, including the 
Seata-Go repository, Kubernetes support, and CLI tool.',
+        }),
+      ],
     },
   ],
   title: translate({ id: 'homepage.featureTitle', message: '特色功能' }),
@@ -119,7 +140,11 @@ const Item = (props) => {
       <Icon type={feature.icon} />
       <div>
         <h4>{feature.title}</h4>
-        <p>{feature.content}</p>
+        {Array.isArray(feature.content) ? (
+          feature.content.map((item, index) => <p key={index}>{item}</p>)
+        ) : (
+          <p>{feature.content}</p>
+        )}
       </div>
     </li>
   );
diff --git a/src/pages/home/top/index.tsx b/src/pages/home/top/index.tsx
index 5c614d8231a..b311e22d76c 100644
--- a/src/pages/home/top/index.tsx
+++ b/src/pages/home/top/index.tsx
@@ -54,23 +54,29 @@ const Top = () => {
   });
 
   React.useEffect(() => {
+    // Only run in browser, not during SSR
+    if (typeof window === 'undefined') {
+      return;
+    }
+    
     const controller = new AbortController();
     const signal = controller.signal;
     // set timeout
-    setTimeout(() => {
+    const timeoutId = setTimeout(() => {
       controller.abort();
     }, 5000);
 
-    fetch('//api.github.com/repos/apache/incubator-seata', { signal })
+    fetch('https://api.github.com/repos/apache/incubator-seata', { signal })
       .then((res) => res.json())
       .then((data) => {
         setRepo({
           starCount: `${data.stargazers_count}`,
           forkCount: `${data.forks_count}`,
         });
-      }).catch((err => {
+      }).catch((err) => {
         // do nothing
-      }));
+      });
+      
     
fetch('https://api.github.com/repos/apache/incubator-seata/releases/latest', { 
signal })
       .then((res) => res.json())
       .then((data) => {
@@ -79,9 +85,15 @@ const Top = () => {
           url: data.html_url,
           date: new Date(data.published_at).toLocaleDateString(),
         });
-      }).catch((err => {
+      }).catch((err) => {
         // do nothing
-      }));
+      });
+      
+    // Cleanup function
+    return () => {
+      clearTimeout(timeoutId);
+      controller.abort();
+    };
   }, []);
 
   return (
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index 76d5aca3121..6a977fb257a 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -26,7 +26,7 @@ import { Footer } from '../components';
 import './index.scss';
 import { translate } from '@docusaurus/Translate';
 
-export default function Home(): React.Element {
+export default function Home(): JSX.Element {
   const el = React.useRef<HTMLDivElement>(null);
 
   //   const setEleBg = (ele: HTMLDivElement, isTransparent: boolean) => {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to