← back to Govarbitrage
src/app/page.tsx
53 lines
import { getDashboardStats } from "@/lib/dashboard";
import { DashboardCards } from "@/components/dashboard-cards";
import { ListingsTable } from "@/components/listings-table";
import { LogoutButton } from "@/components/logout-button";
import { getCurrentUser } from "@/lib/current-user";
export const dynamic = "force-dynamic";
export default async function DashboardPage() {
const [stats, user] = await Promise.all([getDashboardStats(), getCurrentUser()]);
return (
<main className="mx-auto max-w-[1800px] space-y-5 p-5">
<header className="flex items-center justify-between">
<div>
<h1 className="text-xl font-semibold tracking-tight">
Gov<span className="text-primary">Arbitrage</span>
</h1>
<p className="text-sm text-muted-foreground">
Government-surplus auction arbitrage — research, valuation, scoring & drop-ship feasibility.
</p>
</div>
<nav className="flex items-center gap-4 text-sm">
<a href="/reports" className="text-primary underline-offset-4 hover:underline">
Reports →
</a>
<a href="/selling-avenues" className="text-primary underline-offset-4 hover:underline">
Selling avenues →
</a>
<a href="/agents" className="text-primary underline-offset-4 hover:underline">
Commercial agents →
</a>
<a href="/newsletter" className="text-primary underline-offset-4 hover:underline">
Newsletter →
</a>
<a href="/deals" className="text-primary underline-offset-4 hover:underline">
Deal archive →
</a>
{user && (
<span className="flex items-center gap-2 text-muted-foreground">
{user.email} · {user.role}
<LogoutButton />
</span>
)}
</nav>
</header>
<DashboardCards stats={stats} />
<ListingsTable />
</main>
);
}