Scaffold Next.js MVP foundation with pnpm

This commit is contained in:
Matthias
2026-06-03 21:46:52 +02:00
parent 762571cb43
commit 20615e12a1
13 changed files with 8055 additions and 11741 deletions

View File

@@ -1,65 +1,81 @@
import Image from "next/image";
import Link from "next/link";
import { ArrowRight, FileText, LayoutDashboard, LockKeyhole } from "lucide-react";
import { Button } from "@/components/ui/button";
export default function Home() {
return (
<div className="flex flex-col flex-1 items-center justify-center bg-zinc-50 font-sans dark:bg-black">
<main className="flex flex-1 w-full max-w-3xl flex-col items-center justify-between py-32 px-16 bg-white dark:bg-black sm:items-start">
<Image
className="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 font-semibold leading-10 tracking-tight text-black dark:text-zinc-50">
To get started, edit the page.tsx file.
<main className="flex flex-1 bg-background">
<section className="mx-auto flex min-h-dvh w-full max-w-5xl flex-col justify-center gap-10 px-6 py-12">
<div className="max-w-3xl space-y-5">
<p className="text-sm font-medium text-muted-foreground">
WebDev Pipeline MVP
</p>
<h1 className="text-4xl font-semibold tracking-normal text-foreground sm:text-5xl">
Lokale Webdesign-Leads recherchieren, auditieren und respektvoll
kontaktieren.
</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 className="max-w-2xl text-base leading-7 text-muted-foreground sm:text-lg">
Diese Foundation setzt die ersten App-Routen fuer Dashboard,
Anmeldung und oeffentliche Audit-Seiten auf. Die Integrationen
folgen in den naechsten Backlog-Tasks.
</p>
</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] dark:hover:bg-[#ccc] md:w-[158px]"
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="dark:invert"
src="/vercel.svg"
alt="Vercel logomark"
width={16}
height={16}
/>
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] dark:border-white/[.145] dark:hover:bg-[#1a1a1a] md:w-[158px]"
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 className="grid gap-3 sm:grid-cols-3">
<Button asChild size="lg" className="justify-between">
<Link href="/dashboard">
<span className="inline-flex items-center gap-2">
<LayoutDashboard />
Dashboard
</span>
<ArrowRight />
</Link>
</Button>
<Button asChild size="lg" variant="outline" className="justify-between">
<Link href="/login">
<span className="inline-flex items-center gap-2">
<LockKeyhole />
Login
</span>
<ArrowRight />
</Link>
</Button>
<Button asChild size="lg" variant="outline" className="justify-between">
<Link href="/audit/example">
<span className="inline-flex items-center gap-2">
<FileText />
Audit
</span>
<ArrowRight />
</Link>
</Button>
</div>
</main>
</div>
<dl className="grid gap-4 border-t pt-8 sm:grid-cols-3">
<div>
<dt className="text-sm font-medium text-foreground">Recherche</dt>
<dd className="mt-2 text-sm leading-6 text-muted-foreground">
Kampagnen, Places-Quellen und Lead-Qualitaet werden spaeter im
Dashboard gebuendelt.
</dd>
</div>
<div>
<dt className="text-sm font-medium text-foreground">Audit</dt>
<dd className="mt-2 text-sm leading-6 text-muted-foreground">
Oeffentliche Audit-Seiten starten als sichere Platzhalter ohne
freigegebene Inhalte.
</dd>
</div>
<div>
<dt className="text-sm font-medium text-foreground">Outreach</dt>
<dd className="mt-2 text-sm leading-6 text-muted-foreground">
Versand bleibt im MVP an manuelle Pruefung und Freigabe
gekoppelt.
</dd>
</div>
</dl>
</section>
</main>
);
}