Bot & Automation
AI Creator Studio Telegram
/root/hermes-projects/AI Creator Studio Telegram
apps/admin-web/app/page.tsx
text
const metrics = [
{ label: "Available Credits", value: "1,250" },
{ label: "Available Tokens", value: "82,000" },
{ label: "Usage Today", value: "14 jobs" },
{ label: "Active Jobs", value: "0" },
{ label: "Queue Status", value: "Normal" },
{ label: "Storage Usage", value: "0.0 GB" },
];
const providerRows = [
{ name: "Mock Provider", status: "Healthy", quota: "Unlimited", rateLimit: "Local" },
{ name: "Runway", status: "Not configured", quota: "-", rateLimit: "-" },
{ name: "Kling", status: "Not configured", quota: "-", rateLimit: "-" },
{ name: "Pika", status: "Not configured", quota: "-", rateLimit: "-" },
];
export default function DashboardPage() {
return (
<main className="min-h-screen">
<section className="border-b border-stone-200 bg-white">
<div className="mx-auto flex max-w-7xl flex-col gap-3 px-6 py-6 md:flex-row md:items-end md:justify-between">
<div>
<p className="text-sm font-medium uppercase tracking-wide text-teal-700">Hermes Agent</p>
<h1 className="mt-2 text-3xl font-semibold tracking-normal text-zinc-950">
AI Creator Studio Telegram
</h1>
<p className="mt-2 max-w-2xl text-sm leading-6 text-zinc-600">
Internal operations dashboard for generation jobs, provider quota, credits, and project usage.
</p>
</div>
<div className="rounded-md border border-teal-200 bg-teal-50 px-4 py-3 text-sm text-teal-900">
Runtime: Docker Compose ready
</div>
</div>
</section>
<section className="mx-auto max-w-7xl px-6 py-8">
<div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
{metrics.map((metric) => (
<div key={metric.label} className="rounded-md border border-stone-200 bg-white p-5 shadow-sm">
<p className="text-sm text-zinc-500">{metric.label}</p>
<p className="mt-3 text-2xl font-semibold text-zinc-950">{metric.value}</p>
</div>
))}
</div>
</section>
<section className="mx-auto max-w-7xl px-6 pb-10">
<div className="overflow-hidden rounded-md border border-stone-200 bg-white shadow-sm">
<div className="border-b border-stone-200 px-5 py-4">
<h2 className="text-base font-semibold text-zinc-950">Provider Status</h2>
</div>
<div className="overflow-x-auto">
<table className="w-full border-collapse text-left text-sm">
<thead className="bg-stone-50 text-zinc-500">
<tr>
<th className="px-5 py-3 font-medium">Provider</th>
<th className="px-5 py-3 font-medium">Status</th>
<th className="px-5 py-3 font-medium">Quota</th>
<th className="px-5 py-3 font-medium">Rate Limit</th>
</tr>
</thead>
<tbody>
{providerRows.map((provider) => (
<tr key={provider.name} className="border-t border-stone-100">
<td className="px-5 py-4 font-medium text-zinc-900">{provider.name}</td>
<td className="px-5 py-4 text-zinc-600">{provider.status}</td>
<td className="px-5 py-4 text-zinc-600">{provider.quota}</td>
<td className="px-5 py-4 text-zinc-600">{provider.rateLimit}</td>
</tr>
))}
</tbody>
</table>
</div>
</div>
</section>
</main>
);
}