← 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>
  );
}