-
Active tab
-
-
{activeTabLabel}
-
{projects.length} projects
+
Documentation paths
+
+
{activeTabLabel}
+
+
{projects.length} projects
-
- {projects.map((project, index) => {
- const palette = getCategoryPalette(project.categoryId);
-
- return (
-
-
-
-
-
-
- Case.{String(index + 1).padStart(2, "0")}
-
- {project.categoryLabel}
-
-
-
-
- {project.name}
-
-
{project.description}
-
-
-
-
+
+ {projects.map((project, index) => (
+
+
+
+
+
+
+
{project.categoryLabel}
+
Case.{String(index + 1).padStart(2, "0")}
-
- );
- })}
+
+
+
+
+ {project.name}
+
+
{project.description}
+
+
+
+
+ ))}
);
}
-function getCategoryPalette(categoryId: string) {
- return {
- tabActive: categoryId === "all" ? "bg-[#0062FF]/12" : "bg-[#0062FF]/10",
- tabStripe: "bg-[#0062FF]",
- cardTop: "bg-[#0062FF]",
- cardAura: "bg-[#0062FF]/25",
- caseText: "text-[#0062FF]",
- };
-}
-
-function ActionButton({ href, label }: { href: string; label: string }) {
+function ActionButton({ href }: { href: string }) {
const isExternal = href.startsWith("http://") || href.startsWith("https://");
return (
@@ -225,12 +204,10 @@ function ActionButton({ href, label }: { href: string; label: string }) {
href={href}
target={isExternal ? "_blank" : undefined}
rel={isExternal ? "noreferrer noopener external" : undefined}
- className="inline-flex items-center border border-brand bg-brand px-3 py-2 text-[10px] font-semibold uppercase tracking-[0.14em] text-brand-foreground transition-colors hover:bg-brand/90"
+ className="motion-button group inline-flex h-10 items-center gap-2 border border-border bg-background px-3 text-[10px] font-semibold uppercase tracking-[0.14em] text-foreground hover:border-foreground hover:bg-foreground hover:text-background"
>
-
{label}
-
- ↗
-
+
Open docs
+
);
-}
\ No newline at end of file
+}
diff --git a/app/integration/page.tsx b/app/integration/page.tsx
index 4f5ac01..5f4dbdf 100644
--- a/app/integration/page.tsx
+++ b/app/integration/page.tsx
@@ -1,3 +1,4 @@
+import { BoxesIcon, DatabaseIcon, NetworkIcon } from "lucide-react";
import type { Metadata } from "next";
import { SITE_CONFIG } from "@/app.config";
@@ -37,6 +38,15 @@ export const metadata: Metadata = {
},
};
+const integrationSignals = [
+ { label: "Protocol", value: "S3 API" },
+ { label: "Categories", value: String(integrationCategories.length) },
+ {
+ label: "Guides",
+ value: String(integrationCategories.reduce((total, category) => total + category.projects.length, 0)),
+ },
+];
+
export default function IntegrationPage() {
const jsonLd = {
"@context": "https://schema.org",
@@ -58,49 +68,119 @@ export default function IntegrationPage() {
};
return (
-
+
-
-
-
-
+
+
+
+
+ Integration ecosystem
+
+
+ Connect RustFS to the tools you already run.
+
+
+ Build on one S3-compatible storage foundation across AI, DevOps, backup, security, analytics, and cloud-native infrastructure.
+
-
-
-
-
Integration cases
+
+ {integrationSignals.map((signal, index) => (
+ 0 ? "border-l border-border pl-4 sm:pl-6" : "pr-4 sm:pr-6"}`}
+ >
+
-
+ {signal.label}
+
+ - {signal.value}
+
+ ))}
+
-
- RustFS ecosystem integrations.
-
-
- Connect RustFS with DevOps pipelines, AI platforms, cloud-native systems, and analytics engines through
- standard S3-compatible workflows.
-
+
+
+
+
+ Ecosystem map
+ compatible
+
-
+
+
+ {["AI / ML", "DevOps", "Backup"].map((label) => (
+
+ {label}
+
+ ))}
+
-
- Trademark notice
-
- All third-party project names are referenced only to describe technical compatibility and integration scenarios.
- Third-party trademarks, names, and brands are the property of their respective owners. RustFS does not imply
- endorsement, partnership, or affiliation unless explicitly stated in separate written agreements.
-
-
- External documentation links may direct to third-party websites managed by their respective owners.
+
+
+
+ {["Security", "Big data", "Proxy"].map((label) => (
+
+ {label}
+
+ ))}
+
+
+
+
+ connect
+ store
+ scale
+
+
+
+
+
+
+
+
+
+
+
+ Integration directory
+
+
+
+ Find your integration path.
+
+
+ Browse implementation guides by workload. Each path opens the most relevant RustFS or upstream documentation.
+
+
+
+
+
+
+
Compatibility first
+
+ One S3-compatible layer for the infrastructure around your data.
+
+
+
+
Trademark notice
+
+ Third-party project names describe technical compatibility only. Their trademarks, names, brands, and external documentation remain the property and responsibility of their respective owners. No endorsement, partnership, or affiliation is implied unless separately stated in writing.
+
+
);
-}
\ No newline at end of file
+}