CI / lint + typecheck + test + build (push) Canceled after 0s
- Auth: middleware.ts guards /protected via better-auth session cookie; protected page reads session server-side (auth.api.getSession) - Demo wiring (app/demo + components/demo): react-markdown + remark-gfm + shiki CodeBlock, RHF+zod form with react-query mutation + sonner toast, react-table items list (legacy API, table v9), /api/items GET+POST (zod v4 coercion, schema in lib/items.ts shared with unit tests) - Error UX: app/error.tsx (retry + digest), not-found.tsx (404), loading.tsx - Env: lib/env.ts zod-validated (no import-time throw), .env.example sync (NEXT_PUBLIC_BETTER_AUTH_URL), auth-client uses env - Tooling: @vitest/coverage-v8 (test:coverage works), tsconfig cleanup (drop .next/dev/dev/types artifact), README rewrite, demo e2e specs
77 lines
3.3 KiB
TypeScript
77 lines
3.3 KiB
TypeScript
import Image from "next/image";
|
|
import Link from "next/link";
|
|
|
|
export default function Home() {
|
|
return (
|
|
<div className="flex flex-1 flex-col items-center justify-center bg-zinc-50 font-sans dark:bg-black">
|
|
<main className="flex w-full max-w-3xl flex-1 flex-col items-center justify-between bg-white px-16 py-32 sm:items-start dark:bg-black">
|
|
<Image
|
|
className="h-5 w-[100px] dark:invert"
|
|
src="/next.svg"
|
|
alt="Next.js logo"
|
|
width={100}
|
|
height={20}
|
|
priority
|
|
/>
|
|
<div className="flex flex-col items-center gap-6 text-center sm:items-start sm:text-left">
|
|
<h1 className="max-w-xs text-3xl leading-10 font-semibold tracking-tight text-black dark:text-zinc-50">
|
|
To get started, edit the{" "}
|
|
<code className="rounded bg-black/[.06] px-1.5 py-0.5 font-mono text-[0.9em] dark:bg-white/[.08]">
|
|
page.tsx
|
|
</code>{" "}
|
|
file.
|
|
</h1>
|
|
<p className="max-w-md text-lg leading-8 text-zinc-600 dark:text-zinc-400">
|
|
Looking for a starting point or more instructions? Head over to{" "}
|
|
<a
|
|
href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
|
|
className="font-medium text-zinc-950 dark:text-zinc-50"
|
|
>
|
|
Templates
|
|
</a>{" "}
|
|
or the{" "}
|
|
<a
|
|
href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
|
|
className="font-medium text-zinc-950 dark:text-zinc-50"
|
|
>
|
|
Learning
|
|
</a>{" "}
|
|
center.
|
|
</p>
|
|
<Link
|
|
href="/demo"
|
|
className="rounded-full border border-black/[.08] bg-foreground px-5 py-2 text-sm font-medium text-background transition-colors hover:bg-[#383838] dark:border-white/[.145] dark:hover:bg-[#1a1a1a]"
|
|
>
|
|
View the demo wiring →
|
|
</Link>
|
|
</div>
|
|
<div className="flex flex-col gap-4 text-base font-medium sm:flex-row">
|
|
<a
|
|
className="flex h-12 w-full items-center justify-center gap-2 rounded-full bg-foreground px-5 text-background transition-colors hover:bg-[#383838] md:w-[158px] dark:hover:bg-[#ccc]"
|
|
href="https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
<Image
|
|
className="h-[14px] w-4 dark:invert"
|
|
src="/vercel.svg"
|
|
alt="Vercel logomark"
|
|
width={16}
|
|
height={14}
|
|
/>
|
|
Deploy Now
|
|
</a>
|
|
<a
|
|
className="flex h-12 w-full items-center justify-center rounded-full border border-solid border-black/[.08] px-5 transition-colors hover:border-transparent hover:bg-black/[.04] md:w-[158px] dark:border-white/[.145] dark:hover:bg-[#1a1a1a]"
|
|
href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
Documentation
|
|
</a>
|
|
</div>
|
|
</main>
|
|
</div>
|
|
);
|
|
}
|