Job search tracker: CRUD, AI parse/tailor/cover via OmniRoute, legacy import
This commit is contained in:
26
src/app/resumes/page.tsx
Normal file
26
src/app/resumes/page.tsx
Normal file
@@ -0,0 +1,26 @@
|
||||
import { prisma } from "@/lib/db";
|
||||
import Link from "next/link";
|
||||
|
||||
export const dynamic = "force-dynamic";
|
||||
|
||||
export default async function ResumesPage() {
|
||||
const resumes = await prisma.resume.findMany({
|
||||
orderBy: { updatedAt: "desc" },
|
||||
include: { job: { select: { title: true, company: true } } },
|
||||
});
|
||||
return (
|
||||
<div className="space-y-4">
|
||||
<h1 className="text-2xl font-bold">Resumes ({resumes.length})</h1>
|
||||
<ul className="space-y-2">
|
||||
{resumes.map((r) => (
|
||||
<li key={r.id} className="rounded-lg border border-zinc-200 dark:border-zinc-800 bg-white dark:bg-zinc-900 p-4">
|
||||
<Link href={`/resumes/${r.id}`} className="font-medium hover:text-blue-600">{r.name}</Link>
|
||||
<div className="text-sm text-zinc-500">
|
||||
{r.kind}{r.job ? ` · for ${r.job.company} — ${r.job.title}` : ""} · updated {r.updatedAt.toISOString().slice(0, 10)}
|
||||
</div>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user