feat: Grundgerüst mit Anmeldung, Layout und Design-Tokens

Next.js 16, Prisma 7, Tailwind 4 und Vitest/Playwright, Konfiguration aus
Laufzettel übernommen, weil dort derselbe Stack erprobt ist.

Die Farben der Branding-Vorgabe stehen als Tokens in globals.css, das
helle Theme setzt dieselben Namen neu. Amber und Rot sind dort
abgedunkelt, sonst reicht der Kontrast nicht – ein Test prüft beide
Themes gegen 4,5:1.

Anmeldung mit lokalem Benutzer, Rolle je Anfrage aus der Datenbank,
Audit-Log per Trigger nur anhängbar. Geprüft im gebauten Stand auf
1440 px und 390 px.

Closes #001

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-12 09:23:41 +02:00
co-authored by Claude Opus 5.5
parent c3211d0fe2
commit 871bb3a77c
75 changed files with 10155 additions and 15 deletions
+47
View File
@@ -0,0 +1,47 @@
import { defineConfig, globalIgnores } from "eslint/config";
import nextVitals from "eslint-config-next/core-web-vitals";
import nextTs from "eslint-config-next/typescript";
import prettier from "eslint-config-prettier/flat";
export default defineConfig([
...nextVitals,
...nextTs,
prettier,
{
rules: {
// Zod wird in src/lib/validierung.ts auf deutsche Meldungen eingestellt.
// Ein direkter Import aus "zod" umginge das, und die englischen
// Standardsaetze landeten in der Oberflaeche.
"no-restricted-imports": [
"error",
{
paths: [
{
name: "zod",
message:
'Bitte `import { z } from "@/lib/validierung"` benutzen – dort sind die deutschen Meldungen eingestellt.',
},
],
},
],
},
},
{
// Die Datei, die Zod einstellt, muss es selbst importieren duerfen.
files: ["src/lib/validierung.ts"],
rules: { "no-restricted-imports": "off" },
},
globalIgnores([
".next/**",
"out/**",
"build/**",
"coverage/**",
"next-env.d.ts",
// Erzeugter Prisma-Client.
"src/generated/**",
"test-results/**",
"playwright-report/**",
"dist/**",
"cli/**",
]),
]);