From 42499fb8d5fece65128466f2f94b41685526e741 Mon Sep 17 00:00:00 2001 From: BYND Date: Thu, 21 May 2026 18:30:56 +0300 Subject: [PATCH] Add toolkit leaderboard page --- src/app/(general)/toolkits/page.tsx | 162 ++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 src/app/(general)/toolkits/page.tsx diff --git a/src/app/(general)/toolkits/page.tsx b/src/app/(general)/toolkits/page.tsx new file mode 100644 index 00000000..a0e12026 --- /dev/null +++ b/src/app/(general)/toolkits/page.tsx @@ -0,0 +1,162 @@ +import { Activity, KeyRound, Trophy, Wrench } from "lucide-react"; + +import { Badge } from "@/components/ui/badge"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/components/ui/table"; +import { ToolkitIcon } from "@/components/toolkit/toolkit-icons"; +import { HStack, VStack } from "@/components/ui/stack"; + +import { api } from "@/trpc/server"; +import { clientToolkits } from "@/toolkits/toolkits/client"; + +import type { Toolkits } from "@/toolkits/toolkits/shared"; + +export const metadata = { + title: "Toolkit Leaderboard | Toolkit.dev", + description: "Most-used Toolkit.dev toolkits ranked by tool calls.", +}; + +const numberFormatter = new Intl.NumberFormat("en-US"); + +export default async function ToolkitLeaderboardPage() { + const topToolkits = await api.tools.getTopToolkits(); + const rows = topToolkits.flatMap((toolkit) => { + if (!toolkit.id || !(toolkit.id in clientToolkits)) { + return []; + } + + const id = toolkit.id as Toolkits; + const clientToolkit = clientToolkits[id]; + + return { + id, + name: clientToolkit.name, + description: clientToolkit.description, + group: clientToolkit.type, + toolCount: Object.keys(clientToolkit.tools).length, + envVarCount: getEnvVarCount(clientToolkit.envVars), + totalUsage: toolkit.totalUsage, + }; + }); + const maxUsage = Math.max(...rows.map((row) => row.totalUsage), 1); + + return ( +
+
+ + + + Rankings + +
+

+ Toolkit leaderboard +

+

+ The most-used toolkits across Toolkit.dev, ranked by successful + tool calls. +

+
+
+ +
+ + + + # + Toolkit + Group + Usage + Tools + Env + + + + {rows.length === 0 ? ( + + + No toolkit usage has been recorded yet. + + + ) : ( + rows.map((toolkit, index) => { + const width = `${(toolkit.totalUsage / maxUsage) * 100}%`; + + return ( + + + {index + 1} + + + +
+ +
+ + {toolkit.name} + + {toolkit.description} + + +
+
+ + + {toolkit.group.replaceAll("-", " ")} + + + + + + + + {numberFormatter.format(toolkit.totalUsage)} + + +
+
+
+ + + + + + {toolkit.toolCount} + + + + + + {toolkit.envVarCount} + + + + ); + }) + )} + +
+
+
+
+ ); +} + +function getEnvVarCount(envVars: (typeof clientToolkits)[Toolkits]["envVars"]) { + return envVars.reduce((count, group) => count + group.keys.length, 0); +}