import { prisma } from "@/lib/prisma"; import { notFound } from "next/navigation"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import type { ScanResult } from "@/lib/types"; export async function generateMetadata({ params }: { params: Promise<{ domain: string }> }) { const { domain } = await params; return { title: domain }; } export default async function DomainDetailPage({ params, }: { params: Promise<{ domain: string }>; }) { const { domain: raw } = await params; const domain = decodeURIComponent(raw); const scan = await prisma.scan.findFirst({ where: { domain, status: "COMPLETED" }, orderBy: { createdAt: "desc" }, }); if (!scan?.result) { notFound(); } const result = scan.result as unknown as ScanResult; return (

{result.domain}

Full analysis report

WHOIS {Object.entries(result.whois).slice(0, 30).map(([k, v]) => (
{k}: {v}
))}
SSL certificate

Status:{" "} {result.ssl.valid ? "Valid" : "Invalid"}

{result.ssl.issuer &&

Issuer: {result.ssl.issuer}

} {result.ssl.validTo &&

Expires: {result.ssl.validTo}

} {result.ssl.daysRemaining !== undefined && (

Days remaining: {result.ssl.daysRemaining}

)}
HTTP headers {Object.entries(result.http.headers).map(([k, v]) => (
{k}: {v}
))}
); }