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

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


The following commit(s) were added to refs/heads/master by this push:
     new 5952a4e8026 feat(homepage): redraw the architecture diagram and keep 
its source (#2094)
5952a4e8026 is described below

commit 5952a4e8026150eb97a3fc527b47283d0752c13c
Author: Shreemaan Abhishek <[email protected]>
AuthorDate: Wed Aug 26 15:30:44 2026 +0800

    feat(homepage): redraw the architecture diagram and keep its source (#2094)
---
 next/README.md                                     |   1 +
 next/public/img/architecture.svg                   | 165 ++++++++++++++++++++-
 next/src/components/HomePage.astro                 |   2 +-
 next/src/styles/global.css                         |   7 +-
 website/i18n/zh/code.json                          |  12 --
 website/src/assets/images/PatternGrouped-min.svg   |   1 -
 .../assets/images/infographs/Architecture-min.svg  |   1 -
 7 files changed, 170 insertions(+), 19 deletions(-)

diff --git a/next/README.md b/next/README.md
index 5b25b40b8df..ffbfdd687ab 100644
--- a/next/README.md
+++ b/next/README.md
@@ -19,6 +19,7 @@ Prototype rebuild of 
[apisix.apache.org](https://apisix.apache.org) as a **fully
 - `src/pages/` — routes; `/zh/**` mirrors are thin wrappers passing 
`locale="zh"`.
 - `scripts/generate-sitemaps.mjs` — emits `sitemap.xml` + `zh/sitemap.xml` 
post-build.
 - `scripts/check-parity.mjs` — asserts every URL in the live sitemaps exists 
in `dist/` (exact, case-sensitive string comparison).
+- `public/img/architecture.svg` — the homepage architecture diagram, 
hand-authored on a 1200x738 grid. Edit the file directly; boxes and the wires 
landing on them share one coordinate space.
 
 ## Build
 
diff --git a/next/public/img/architecture.svg b/next/public/img/architecture.svg
index 169949b76a6..63d01788a86 100644
--- a/next/public/img/architecture.svg
+++ b/next/public/img/architecture.svg
@@ -1 +1,164 @@
-<svg fill="none" xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 1713 996"><g 
class="architecture"><path fill="#E2ECFF" stroke="#343A40" d="M732 
137h993v866H732zm-719 0h700v866H13z"/><path d="m157 464 471-1v324l-469-1" 
fill="#FD7E14"/><path d="M159 463c163 2 328 2 467-1l-467 1zm0 
0h468-468zm469-1c2 80 1 160-3 323l3-323zm-2 1c3 80 2 160 0 322V463zm1 323c-112 
0-223 1-468-1l468 1zm0-1H159h468zm-468 0c-1-73-3-142-2-321l2 321zm0 0-1-322z" 
fill="#FD7E14"/><path d="M628 463v-1 1zm0 324v1h1v-1h- [...]
\ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 1200 738" width="1200" 
height="738" fill="none" role="img">
+  <title>Apache APISIX architecture</title>
+  <!--
+    Homepage architecture diagram. Hand-authored: edit this file directly.
+
+    Geometry is absolute, so a box and the wire landing on it share one
+    coordinate space; move a box and you must move its wire. Text is live
+    <text> in the system sans stack, so labels take the viewer's font
+    metrics. Keep boxes wider than their labels need.
+  -->
+  <style>
+    text { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", 
Helvetica, Arial, sans-serif; }
+    .caption { font-size: 15px; font-weight: 700; letter-spacing: 1.8px; }
+    .node-label { font-size: 20px; fill: #1c1e21; }
+    .card-title { font-size: 26px; font-weight: 700; }
+    .card-sub { font-size: 15px; }
+    .chip-label { font-size: 18px; fill: #1c1e21; }
+    .panel { fill: #f7f8fa; stroke: #ebeef2; }
+    .node { fill: #fff; stroke: #e3e7ec; filter: url(#node-shadow); }
+    .card-bg { fill: #fff; }
+    .red-band { fill: #fceded; }
+    .red-line { stroke: #f3c9c7; }
+    .blue-band { fill: #e8f0fb; }
+    .blue-line { stroke: #cfe0f5; }
+    .chip { fill: #fff; }
+  </style>
+
+  <defs>
+    <filter id="node-shadow" x="-20%" y="-40%" width="140%" height="200%">
+      <feDropShadow dx="0" dy="4" stdDeviation="5" flood-color="#101827" 
flood-opacity=".07" />
+    </filter>
+    <!-- userSpaceOnUse keeps the head a fixed size regardless of stroke-width;
+         refX at the tip puts the point exactly on the path's last vertex -->
+    <marker id="head-gray" markerUnits="userSpaceOnUse" markerWidth="11" 
markerHeight="11" refX="11" refY="5.5" orient="auto">
+      <path d="M0 0 L11 5.5 L0 11 z" fill="#8a939e" />
+    </marker>
+    <marker id="head-blue" markerUnits="userSpaceOnUse" markerWidth="11" 
markerHeight="11" refX="11" refY="5.5" orient="auto">
+      <path d="M0 0 L11 5.5 L0 11 z" fill="#1a5da8" />
+    </marker>
+    <marker id="head-red" markerUnits="userSpaceOnUse" markerWidth="11" 
markerHeight="11" refX="11" refY="5.5" orient="auto">
+      <path d="M0 0 L11 5.5 L0 11 z" fill="#d63b36" />
+    </marker>
+  </defs>
+
+  <rect width="1200" height="738" fill="#fff" />
+
+  <rect class="panel" x="24.5" y="24.5" width="559" height="689" rx="24" />
+  <rect class="panel" x="616.5" y="24.5" width="559" height="689" rx="24" />
+
+  <circle cx="57.5" cy="53" r="5.5" fill="#d63b36" />
+  <text class="caption" x="75" y="58.4" fill="#a32d2d">DATA PLANE</text>
+  <circle cx="649.5" cy="53" r="5.5" fill="#1a5da8" />
+  <text class="caption" x="667" y="58.4" fill="#175ba1">CONTROL PLANE</text>
+
+  <!-- data plane -->
+  <rect class="node" x="164.5" y="92.5" width="279" height="53" rx="12" />
+  <text class="node-label" x="304" y="126.1" text-anchor="middle">Client / 
service</text>
+
+  <g>
+    <rect class="card-bg" x="52" y="190" width="504" height="276" rx="16" />
+    <path class="red-band" d="M52 206a16 16 0 0 1 16-16h472a16 16 0 0 1 16 
16v64H52z" />
+    <text class="card-title" x="304" y="228.2" text-anchor="middle" 
fill="#b8342f">Apache APISIX</text>
+    <text class="card-sub" x="304" y="252.9" text-anchor="middle" 
fill="#a3564f">Hot-reloadable plugin pipeline</text>
+
+    <g class="chip red-line">
+      <rect x="66.5" y="284.5" width="149.67" height="47" rx="10" />
+      <rect x="229.17" y="284.5" width="149.67" height="47" rx="10" />
+      <rect x="391.83" y="284.5" width="149.67" height="47" rx="10" />
+      <rect x="66.5" y="344.5" width="149.67" height="47" rx="10" />
+      <rect x="229.17" y="344.5" width="149.67" height="47" rx="10" />
+      <rect x="391.83" y="344.5" width="149.67" height="47" rx="10" />
+      <rect x="66.5" y="404.5" width="149.67" height="47" rx="10" />
+      <rect x="229.17" y="404.5" width="149.67" height="47" rx="10" />
+      <rect x="391.83" y="404.5" width="149.67" height="47" rx="10" />
+    </g>
+    <g class="chip-label" text-anchor="middle">
+      <text x="141.33" y="314.4">Rate limit</text>
+      <text x="304" y="314.4">Auth</text>
+      <text x="466.67" y="314.4">Security</text>
+      <text x="141.33" y="374.4">Logging</text>
+      <text x="304" y="374.4">Tracing</text>
+      <text x="466.67" y="374.4">Traffic split</text>
+      <text x="141.33" y="434.4">Transformation</text>
+      <text x="304" y="434.4">Custom plugin</text>
+      <text x="466.67" y="434.4">100+ more</text>
+    </g>
+    <rect class="red-line" x="52.5" y="190.5" width="503" height="275" rx="16" 
/>
+  </g>
+
+  <g class="node-label" text-anchor="middle">
+    <rect class="node" x="52.5" y="544.5" width="159" height="59" rx="12" />
+    <rect class="node" x="224.5" y="544.5" width="159" height="59" rx="12" />
+    <rect class="node" x="396.5" y="544.5" width="159" height="59" rx="12" />
+    <text x="132" y="581.1">Partner APIs</text>
+    <text x="304" y="581.1">Private APIs</text>
+    <text x="476" y="581.1">Public APIs</text>
+  </g>
+
+  <!-- control plane -->
+  <rect class="node" x="756.5" y="92.5" width="279" height="53" rx="12" />
+  <text class="node-label" x="896" y="126.1" text-anchor="middle">Admin</text>
+
+  <g>
+    <rect class="card-bg" x="644" y="178" width="504" height="154" rx="16" />
+    <path class="blue-band" d="M644 194a16 16 0 0 1 16-16h472a16 16 0 0 1 16 
16v64H644z" />
+    <text class="card-title" x="896" y="216.2" text-anchor="middle" 
fill="#175ba1">Dashboard</text>
+    <text class="card-sub" x="896" y="240.9" text-anchor="middle" 
fill="#3d6c9e">Configure routes and plugins</text>
+    <rect class="chip blue-line" x="796.5" y="272.5" width="199" height="45" 
rx="10" />
+    <text class="chip-label" x="896" y="301.4" text-anchor="middle">Manager 
API</text>
+    <rect class="blue-line" x="644.5" y="178.5" width="503" height="153" 
rx="16" />
+  </g>
+
+  <g>
+    <rect class="card-bg" x="644" y="358" width="504" height="158" rx="16" />
+    <path class="blue-band" d="M644 374a16 16 0 0 1 16-16h472a16 16 0 0 1 16 
16v64H644z" />
+    <text class="card-title" x="896" y="396.2" text-anchor="middle" 
fill="#175ba1">etcd cluster</text>
+    <text class="card-sub" x="896" y="420.9" text-anchor="middle" 
fill="#3d6c9e">Configuration store</text>
+    <g class="chip blue-line">
+      <rect x="658.5" y="452.5" width="149.67" height="49" rx="10" />
+      <rect x="821.17" y="452.5" width="149.67" height="49" rx="10" />
+      <rect x="983.83" y="452.5" width="149.67" height="49" rx="10" />
+    </g>
+    <g class="chip-label" text-anchor="middle">
+      <text x="733.33" y="483.4">etcd</text>
+      <text x="896" y="483.4">etcd</text>
+      <text x="1058.67" y="483.4">etcd</text>
+    </g>
+    <rect class="blue-line" x="644.5" y="358.5" width="503" height="157" 
rx="16" />
+  </g>
+
+  <g>
+    <rect class="card-bg" x="644" y="530" width="504" height="158" rx="16" />
+    <path class="blue-band" d="M644 546a16 16 0 0 1 16-16h472a16 16 0 0 1 16 
16v64H644z" />
+    <text class="card-title" x="896" y="568.2" text-anchor="middle" 
fill="#175ba1">Observability</text>
+    <text class="card-sub" x="896" y="592.9" text-anchor="middle" 
fill="#3d6c9e">Metrics, traces, and logs</text>
+    <g class="chip blue-line">
+      <rect x="658.5" y="624.5" width="199" height="49" rx="10" />
+      <rect x="870.5" y="624.5" width="139" height="49" rx="10" />
+      <rect x="1022.5" y="624.5" width="111" height="49" rx="10" />
+    </g>
+    <g class="chip-label" text-anchor="middle">
+      <text x="758" y="655.4">Apache SkyWalking</text>
+      <text x="940" y="655.4">Prometheus</text>
+      <text x="1078" y="655.4">Grafana</text>
+    </g>
+    <rect class="blue-line" x="644.5" y="530.5" width="503" height="157" 
rx="16" />
+  </g>
+
+  <g stroke="#8a939e" stroke-width="2.5" stroke-linecap="round" 
stroke-linejoin="round">
+    <path d="M304 146 V190" marker-end="url(#head-gray)" />
+    <path d="M896 146 V178" marker-end="url(#head-gray)" />
+    <path d="M896 332 V358" marker-end="url(#head-gray)" />
+    <!-- fan-out bus under APISIX: trunk + rail carry no head, the drops do -->
+    <path d="M304 470 V500 M132 500 H476" />
+    <path d="M132 500 V544" marker-end="url(#head-gray)" />
+    <path d="M304 500 V544" marker-end="url(#head-gray)" />
+    <path d="M476 500 V544" marker-end="url(#head-gray)" />
+  </g>
+
+  <!-- etcd pushes config into the gateway -->
+  <path d="M644 398 H556" stroke="#1a5da8" stroke-width="2.5" 
stroke-linecap="round" marker-end="url(#head-blue)" />
+  <!-- the gateway emits telemetry -->
+  <path d="M556 452 H600 V572 H644" stroke="#d63b36" stroke-width="2.5" 
stroke-linecap="round" stroke-linejoin="round" marker-end="url(#head-red)" />
+</svg>
diff --git a/next/src/components/HomePage.astro 
b/next/src/components/HomePage.astro
index af32921b4e8..fb7be926089 100644
--- a/next/src/components/HomePage.astro
+++ b/next/src/components/HomePage.astro
@@ -196,7 +196,7 @@ const SOFTWARE_APPLICATION_SCHEMA = {
         'Requests flow through a hot-reloadable plugin pipeline; etcd 
distributes configuration across the cluster in real time, with no restarts.',
         '请求流经可热加载的插件流水线;etcd 将配置实时分发到整个集群,无需重启。')}</p>
       <figure class="arch-visual reveal">
-        <img src="/img/architecture.svg" alt={t(locale, 'Apache APISIX 
architecture diagram', 'Apache APISIX 架构图')} loading="lazy" width="1713" 
height="996" />
+        <img src="/img/architecture.svg" alt={t(locale, 'Apache APISIX 
architecture diagram', 'Apache APISIX 架构图')} loading="lazy" width="1200" 
height="738" />
         <figcaption>{t(locale,
           'Apache APISIX is based on NGINX and etcd. Compared with traditional 
API Gateways, APISIX has features like dynamic routing and hot-loading plugins, 
etc.',
           'Apache APISIX 基于 NGINX 与 etcd,相较于传统的 API 
网关,它提供了动态路由、插件热加载等诸多能力。')}</figcaption>
diff --git a/next/src/styles/global.css b/next/src/styles/global.css
index 1346c96a0c8..2850048bb6f 100644
--- a/next/src/styles/global.css
+++ b/next/src/styles/global.css
@@ -402,11 +402,12 @@ section.endcta.alt { background: transparent; padding: 
4rem 1rem 0; }
 .arch-visual { max-width: 980px; margin: 2rem auto 0; background: #fff; 
border: 1px solid rgba(16,24,39,.06); border-radius: 16px; padding: 
clamp(1.25rem, 3vw, 2.5rem); box-shadow: 0 1px 2px rgb(0 0 0 / 4%), 0 12px 32px 
rgb(0 0 0 / 10%); }
 .arch-visual img { width: 100%; max-width: 100%; height: auto; display: block; 
margin-inline: auto; }
 .arch-visual figcaption { max-width: 34rem; margin: 1rem auto 0; text-align: 
center; font-size: .95rem; color: var(--color-text-soft); }
-/* On phones the 1713px-wide diagram would shrink below legibility (~14%);
-   let it pan horizontally at >=37% scale instead. */
+/* The diagram is authored 1200 px wide. On phones let it pan horizontally
+   rather than shrink past the point where labels stop being readable;
+   720px is the narrowest that still holds the plugin grid legible. */
 @media (max-width: 700px) {
   .arch-visual { overflow-x: auto; -webkit-overflow-scrolling: touch; }
-  .arch-visual img { min-width: 640px; }
+  .arch-visual img { min-width: 720px; }
 }
 .pillar-section { background: #fff8f6; }
 .pillar-section + .pillar-section { border-top: 1px solid #f2e8e4; }
diff --git a/website/i18n/zh/code.json b/website/i18n/zh/code.json
index cb0c70542bc..8bd000d1184 100644
--- a/website/i18n/zh/code.json
+++ b/website/i18n/zh/code.json
@@ -107,18 +107,6 @@
     "message": "阅读博客",
     "description": "Read Blog"
   },
-  "architecture.component.title.name": {
-    "message": "适用于超大规模、复杂的业务系统",
-    "description": "Building for large-scale, high value systems"
-  },
-  "architecture.component.title.subtitle": {
-    "message": "Apache APISIX 作为云原生架构的开源 API 网关,可以为海量 API 
和微服务提供安全可靠的动态、高性能、可扩展的管理平台。",
-    "description": "Apache APISIX lets you build Cloud-Native Microservices 
API gateways, delivering the ultimate performance, security, open source and 
scalable platform for all your APIs and microservices."
-  },
-  "architecture.component.card.caption": {
-    "message": "Apache APISIX 基于 NGINX 与 etcd,相较于传统的 API 
网关,它提供了动态路由、插件热加载等诸多能力。",
-    "description": "Apache APISIX is based on NGINX and etcd. Compared with 
traditional API gateways, APISIX has dynamic routing and hot-loading plugins"
-  },
   "features.component.why.title": {
     "message": "为什么选择 APISIX API 网关?"
   },
diff --git a/website/src/assets/images/PatternGrouped-min.svg 
b/website/src/assets/images/PatternGrouped-min.svg
deleted file mode 100644
index 567e4f74b29..00000000000
--- a/website/src/assets/images/PatternGrouped-min.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg preserveAspectRatio="xMidYMid meet" viewBox="0 0 1680 361" fill="none" 
xmlns="http://www.w3.org/2000/svg";><g class="PatternGrouped"><g 
class="Paths"><path class="p27" d="M-60 360c476.78 0 384.27-115.24 
899.5-115.24M1739 1.25c-492.79 0-378.93 156.23-899.5 156.23" 
stroke="#00EFC6"/><path class="p26" d="M-60 347.51c477.34 0 384.09-105.81 
899.5-105.81M1739 16.39c-492.12 0-379.16 144.78-899.5 144.78" 
stroke="#0DE2CA"/><path class="p25" d="M-60 335.06c477.89 0 383.9-96.38 
899.5-96.38M1739 [...]
\ No newline at end of file
diff --git a/website/src/assets/images/infographs/Architecture-min.svg 
b/website/src/assets/images/infographs/Architecture-min.svg
deleted file mode 100644
index 169949b76a6..00000000000
--- a/website/src/assets/images/infographs/Architecture-min.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg fill="none" xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 1713 996"><g 
class="architecture"><path fill="#E2ECFF" stroke="#343A40" d="M732 
137h993v866H732zm-719 0h700v866H13z"/><path d="m157 464 471-1v324l-469-1" 
fill="#FD7E14"/><path d="M159 463c163 2 328 2 467-1l-467 1zm0 
0h468-468zm469-1c2 80 1 160-3 323l3-323zm-2 1c3 80 2 160 0 322V463zm1 323c-112 
0-223 1-468-1l468 1zm0-1H159h468zm-468 0c-1-73-3-142-2-321l2 321zm0 0-1-322z" 
fill="#FD7E14"/><path d="M628 463v-1 1zm0 324v1h1v-1h- [...]
\ No newline at end of file

Reply via email to