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

moonming pushed a commit to branch feat/seo-homepage-rewrite
in repository https://gitbox.apache.org/repos/asf/apisix-website.git


The following commit(s) were added to refs/heads/feat/seo-homepage-rewrite by 
this push:
     new 1a7b1b4f14f feat(seo): add AI Gateway capability section to homepage
1a7b1b4f14f is described below

commit 1a7b1b4f14f06b1957e4f3abd870639ec54ccbbb
Author: Ming Wen <[email protected]>
AuthorDate: Mon Jun 22 17:16:38 2026 +0800

    feat(seo): add AI Gateway capability section to homepage
    
    Standalone section (after Pathways) showcasing APISIX as an AI gateway: a
    flow visual (apps -> APISIX -> 20+ LLM providers) and a 6-card capability
    grid (multi-LLM proxy, LLM load balancing, retry & fallback, token rate
    limiting, prompt security, MCP), linking to /ai-gateway/. APISIX has no UI 
to
    screenshot, so capabilities are shown via the flow + grid.
---
 .../src/components/sections/AIGatewaySection.tsx   | 116 ++++++++++++++++++
 .../src/css/landing-sections/ai-gateway-home.scss  | 135 +++++++++++++++++++++
 website/src/pages/index.tsx                        |   2 +
 3 files changed, 253 insertions(+)

diff --git a/website/src/components/sections/AIGatewaySection.tsx 
b/website/src/components/sections/AIGatewaySection.tsx
new file mode 100644
index 00000000000..541bd3a70c3
--- /dev/null
+++ b/website/src/components/sections/AIGatewaySection.tsx
@@ -0,0 +1,116 @@
+import type { FC } from 'react';
+import React from 'react';
+import Link from '@docusaurus/Link';
+import Translate from '@docusaurus/Translate';
+
+import '../../css/landing-sections/ai-gateway-home.scss';
+
+interface Capability {
+  title: JSX.Element;
+  desc: JSX.Element;
+}
+
+const CAPABILITIES: Capability[] = [
+  {
+    title: <Translate id="home.ai.cap.proxy.t">Multi-LLM proxy</Translate>,
+    desc: (
+      <Translate id="home.ai.cap.proxy.d">
+        Route to OpenAI, Anthropic, AWS Bedrock, DeepSeek, Ollama and 20+ 
providers through one endpoint.
+      </Translate>
+    ),
+  },
+  {
+    title: <Translate id="home.ai.cap.lb.t">LLM load balancing</Translate>,
+    desc: (
+      <Translate id="home.ai.cap.lb.d">
+        Distribute traffic across providers and models for throughput and 
resilience.
+      </Translate>
+    ),
+  },
+  {
+    title: <Translate id="home.ai.cap.fallback.t">Retry &amp; 
fallback</Translate>,
+    desc: (
+      <Translate id="home.ai.cap.fallback.d">
+        Fail over to a backup model or provider automatically when one is 
unavailable.
+      </Translate>
+    ),
+  },
+  {
+    title: <Translate id="home.ai.cap.token.t">Token rate limiting</Translate>,
+    desc: (
+      <Translate id="home.ai.cap.token.d">
+        Cap usage and cost with token-based rate limits per consumer.
+      </Translate>
+    ),
+  },
+  {
+    title: <Translate id="home.ai.cap.security.t">Prompt security</Translate>,
+    desc: (
+      <Translate id="home.ai.cap.security.d">
+        Guardrails, content moderation, and prompt decoration before requests 
reach the model.
+      </Translate>
+    ),
+  },
+  {
+    title: <Translate id="home.ai.cap.mcp.t">MCP support</Translate>,
+    desc: (
+      <Translate id="home.ai.cap.mcp.d">
+        Expose and govern Model Context Protocol tools through the gateway.
+      </Translate>
+    ),
+  },
+];
+
+const PROVIDERS = ['OpenAI', 'Anthropic', 'AWS Bedrock', 'DeepSeek', 'Ollama'];
+
+const AIGatewaySection: FC = () => (
+  <section className="ai-home">
+    <div className="ai-home__inner">
+      <span className="ai-home__eyebrow">
+        <Translate id="home.ai.eyebrow">AI Gateway</Translate>
+      </span>
+      <h2 className="ai-home__title">
+        <Translate id="home.ai.title">The same gateway, now for your LLM 
traffic</Translate>
+      </h2>
+      <p className="ai-home__subtitle">
+        <Translate id="home.ai.subtitle">
+          Proxy, secure, and govern traffic to 20+ LLM providers — with the 
performance, plugins,
+          and observability you already run for your APIs.
+        </Translate>
+      </p>
+
+      <div className="ai-home__flow">
+        <span className="ai-home__node">
+          <Translate id="home.ai.flow.apps">AI apps &amp; agents</Translate>
+        </span>
+        <span className="ai-home__arrow" aria-hidden="true">→</span>
+        <span className="ai-home__node ai-home__node--apisix">Apache 
APISIX</span>
+        <span className="ai-home__arrow" aria-hidden="true">→</span>
+        <span className="ai-home__providers">
+          {PROVIDERS.map((provider) => (
+            <span className="ai-home__provider" 
key={provider}>{provider}</span>
+          ))}
+          <span className="ai-home__provider ai-home__provider--more">
+            <Translate id="home.ai.flow.more">+ more</Translate>
+          </span>
+        </span>
+      </div>
+
+      <div className="ai-home__grid">
+        {CAPABILITIES.map((capability) => (
+          <div className="ai-home__card" key={capability.title.props.id}>
+            <h3 className="ai-home__card-title">{capability.title}</h3>
+            <p className="ai-home__card-desc">{capability.desc}</p>
+          </div>
+        ))}
+      </div>
+
+      <Link className="ai-home__cta" to="/ai-gateway/">
+        <Translate id="home.ai.cta">Explore the AI Gateway</Translate>
+        {' →'}
+      </Link>
+    </div>
+  </section>
+);
+
+export default AIGatewaySection;
diff --git a/website/src/css/landing-sections/ai-gateway-home.scss 
b/website/src/css/landing-sections/ai-gateway-home.scss
new file mode 100644
index 00000000000..de5a8d8b76f
--- /dev/null
+++ b/website/src/css/landing-sections/ai-gateway-home.scss
@@ -0,0 +1,135 @@
+.ai-home {
+  background: #faf7f7;
+  padding: 4rem var(--ifm-spacing-horizontal);
+}
+
+.ai-home__inner {
+  max-width: 1000px;
+  margin: 0 auto;
+  text-align: center;
+}
+
+.ai-home__eyebrow {
+  display: inline-block;
+  font-size: 0.82rem;
+  font-weight: 600;
+  letter-spacing: 0.05em;
+  text-transform: uppercase;
+  color: #a32d2d;
+  background: #fcebeb;
+  padding: 5px 14px;
+  border-radius: 20px;
+  margin-bottom: 1rem;
+}
+
+.ai-home__title {
+  font-size: clamp(1.6rem, 1rem + 2vw, 2.25rem);
+  font-weight: 700;
+  margin-bottom: 0.5rem;
+}
+
+.ai-home__subtitle {
+  color: #6b6b6b;
+  max-width: 680px;
+  margin: 0 auto 2.25rem;
+  font-size: 1rem;
+  line-height: 1.6;
+}
+
+.ai-home__flow {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  gap: 0.75rem;
+  flex-wrap: wrap;
+  margin-bottom: 2.5rem;
+}
+
+.ai-home__node {
+  background: #fff;
+  border: 1px solid #e6e6e6;
+  border-radius: 8px;
+  padding: 8px 14px;
+  font-size: 0.9rem;
+  font-weight: 500;
+  color: #2c2c2a;
+}
+
+.ai-home__node--apisix {
+  background: #e8433e;
+  border-color: #e8433e;
+  color: #fff;
+  font-weight: 700;
+}
+
+.ai-home__arrow {
+  color: #e8433e;
+  font-weight: 700;
+}
+
+.ai-home__providers {
+  display: flex;
+  gap: 6px;
+  flex-wrap: wrap;
+  justify-content: center;
+}
+
+.ai-home__provider {
+  background: #fff;
+  border: 1px solid #e6e6e6;
+  border-radius: 20px;
+  padding: 6px 12px;
+  font-size: 0.82rem;
+  color: #444;
+}
+
+.ai-home__provider--more {
+  color: #888;
+}
+
+.ai-home__grid {
+  display: grid;
+  grid-template-columns: repeat(3, 1fr);
+  gap: 1rem;
+  text-align: left;
+}
+
+@media (max-width: 820px) {
+  .ai-home__grid {
+    grid-template-columns: 1fr;
+  }
+}
+
+.ai-home__card {
+  background: #fff;
+  border: 1px solid #ececec;
+  border-radius: 12px;
+  padding: 1.25rem 1.3rem;
+}
+
+.ai-home__card-title {
+  font-size: 1.05rem;
+  font-weight: 700;
+  margin: 0 0 0.4rem;
+  color: #1c1c1c;
+}
+
+.ai-home__card-desc {
+  font-size: 0.9rem;
+  line-height: 1.55;
+  color: #6b6b6b;
+  margin: 0;
+}
+
+.ai-home__cta {
+  display: inline-block;
+  margin-top: 2rem;
+  font-size: 1rem;
+  font-weight: 600;
+  color: #e8433e;
+
+  &:hover {
+    color: #c7352f;
+    text-decoration: none;
+  }
+}
diff --git a/website/src/pages/index.tsx b/website/src/pages/index.tsx
index 192aef2c754..65a89d98656 100644
--- a/website/src/pages/index.tsx
+++ b/website/src/pages/index.tsx
@@ -15,6 +15,7 @@ import OpensourcePromo from 
'../components/sections/OpensourcePromo';
 import EndCTA from '../components/sections/Endcta';
 import Pathways from '../components/sections/Pathways';
 import Integrations from '../components/sections/Integrations';
+import AIGatewaySection from '../components/sections/AIGatewaySection';
 
 // Structured data for the homepage. Organization + WebSite are already 
injected
 // globally by config/schema-org.js; these add product-level 
(SoftwareApplication)
@@ -139,6 +140,7 @@ const Index: FC = () => (
     </Head>
     <HeroSection />
     <Pathways />
+    <AIGatewaySection />
     <Architecture />
     <Features />
     <Integrations />

Reply via email to