diff --git a/client/pages/docs/DocsExamples.tsx b/client/pages/docs/DocsExamples.tsx new file mode 100644 index 00000000..f086dc7c --- /dev/null +++ b/client/pages/docs/DocsExamples.tsx @@ -0,0 +1,257 @@ +import { Link } from "react-router-dom"; +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { + Blocks, + Flame, + Share2, + Radar, + ArrowRight, + Github, + Code2, + Globe, +} from "lucide-react"; + +const exampleSnippets = [ + { + title: "Server-side matchmaking", + description: + "Quickly assemble a matchmaking service that uses AeThex queues, weighting rules, and player telemetry streams.", + language: "TypeScript", + href: "https://github.com/aethex/examples/tree/main/matchmaking-service", + code: `import { createQueue, matchPlayers } from "@aethex/matchmaking"; + +const queue = await createQueue({ + region: "us-central", + size: 4, + constraints: [ + { field: "skillRating", tolerance: 120 }, + { field: "latency", max: 90 }, + ], +}); + +export async function enqueuePlayer(player) { + await queue.enqueue(player.id, { + skillRating: player.mmr, + latency: player.ping, + }); + + const match = await matchPlayers(queue); + if (match) { + await queue.lock(match.id); + return match; + } + + return null; +}`, + }, + { + title: "Realtime activity overlays", + description: + "Broadcast live deployment and incident updates to your in-game HUD or operations dashboard using AeThex events.", + language: "React", + href: "https://github.com/aethex/examples/tree/main/realtime-overlay", + code: `import { useEffect, useState } from "react"; +import { subscribe } from "@aethex/events"; + +export function ActivityOverlay() { + const [events, setEvents] = useState([]); + + useEffect(() => { + const unsubscribe = subscribe("deployment.*", (event) => { + setEvents((current) => [event, ...current].slice(0, 5)); + }); + + return () => unsubscribe(); + }, []); + + return ( + + ); +}`, + }, + { + title: "Workshop automation", + description: + "Automate the packaging and publishing of custom workshop content across AeThex environments using the CLI.", + language: "Shell", + href: "https://github.com/aethex/examples/tree/main/workshop-automation", + code: `#!/usr/bin/env bash +set -euo pipefail + +WORKSPACE=${1:-"mods"} + +npm install +aethex login --token "$AETHEX_TOKEN" + +aethex workshop package "$WORKSPACE" --out dist/ +aethex deploy --environment production --artifact dist/workshop.tgz + +echo "Workshop build published"`, + }, +]; + +const integrationIdeas = [ + { + title: "Commerce hooks", + description: + "Sync AeThex purchase events into your billing or CRM system using the webhook relay template.", + link: "/docs/api", + }, + { + title: "Live operations dashboard", + description: + "Combine project metrics, incident response playbooks, and player sentiment into a single React dashboard.", + link: "/docs/tutorials", + }, + { + title: "Cross-platform presence", + description: + "Mirror AeThex voice and party status with your Discord or Slack community using the presence bridge sample.", + link: "/community", + }, + { + title: "Analytics pipeline", + description: + "Export gameplay events to your data warehouse with the managed streaming connectors.", + link: "/docs/getting-started", + }, +]; + +export default function DocsExamples() { + return ( +
+
+ + + Examples & Templates + +

Production-ready patterns you can copy

+

+ Explore curated examples covering backend services, realtime overlays, automation scripts, and workflow + integrations. Each project includes detailed READMEs, infrastructure diagrams, and deployment runbooks. +

+
+ +
+ {exampleSnippets.map((snippet) => ( + + +
+ {snippet.title} + {snippet.language} +
+ + {snippet.description} + +
+ +
+                {snippet.code}
+              
+ +
+
+ ))} +
+ +
+
+ +

Deploy faster with templates

+
+
+ {integrationIdeas.map((idea) => ( + + + {idea.title} + + + + {idea.description} + + + + + ))} +
+
+ +
+
+
+

Share what you build

+

+ Publish your own templates or improvements by opening a pull request to the public AeThex examples + repository. Every accepted contribution is highlighted in the monthly creator spotlight. +

+
+
+ + +
+
+
+ +
+
+
+

Need a custom integration?

+

+ Our professional services team partners with studios to build tailored pipelines, analytics dashboards, + and automation workflows on top of AeThex. +

+
+ +
+
+
+ ); +} \ No newline at end of file