Files
FireAdministration/package.json
T
Florian WildeandClaude Opus 5 f7ccd9a908 Phase 8: Lokale KI
Wiki mit semantischer Suche ueber pgvector, Diktat ueber faster-whisper,
Berichtsassistent und Belegerfassung — alles gegen selbst betriebene
Modelle. Dazu zwei Protokollansichten: was die Maschine getan hat und was
Menschen getan haben.

Nichts, was ein Modell erzeugt, gelangt ungeprueft in einen Nachweis. Jede
Ausgabe ist zuerst ein eigener Datensatz, gekennzeichnet, mit zwei gleich
grossen Knoepfen davor. Die Datenbank haelt gegen: Eingabe, Ausgabe und
Modell sind unveraenderlich, geloescht wird nicht, entschieden wird einmal.

Kein Rueckfall auf einen Anbieter: fehlen die Container, fehlt die Funktion.
Dafuer bleibt alles andere ohne Modell vollstaendig benutzbar — geprueft von
vierzehn E2E-Tests, die ohne laufendes Modell durchlaufen.

Postgres bringt jetzt PostGIS und pgvector mit (eigenes Image), Ollama und
faster-whisper stehen im Compose-Profil "ki".

73 neue Unit-Tests, 14 neue E2E-Tests, Version 0.9.0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-04 11:06:03 +02:00

112 lines
3.3 KiB
JSON

{
"name": "florian",
"version": "0.9.0",
"private": true,
"description": "FLORIAN — Feuerwehr-Verwaltungsplattform",
"engines": {
"node": ">=22"
},
"scripts": {
"dev": "next dev -p 3100",
"build": "next build",
"start": "next start -p 3100",
"worker": "tsx --conditions=react-server src/worker/index.ts",
"worker:dev": "tsx watch --conditions=react-server src/worker/index.ts",
"lint": "next lint",
"typecheck": "tsc --noEmit",
"test": "vitest run",
"test:watch": "vitest",
"test:e2e": "playwright test",
"db:generate": "prisma generate",
"db:migrate": "prisma migrate deploy",
"db:migrate:dev": "prisma migrate dev",
"db:push": "prisma db push",
"db:seed": "tsx prisma/seed.ts",
"db:studio": "prisma studio",
"screenshots": "tsx scripts/screenshots.ts",
"icons": "tsx scripts/icons.ts",
"vapid": "tsx scripts/vapid.ts"
},
"dependencies": {
"@prisma/client": "^6.16.2",
"@radix-ui/react-avatar": "^1.1.10",
"@radix-ui/react-checkbox": "^1.3.11",
"@radix-ui/react-dialog": "^1.1.23",
"@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-label": "^2.1.7",
"@radix-ui/react-popover": "^1.1.23",
"@radix-ui/react-select": "^2.3.7",
"@radix-ui/react-separator": "^1.1.7",
"@radix-ui/react-slot": "^1.2.3",
"@radix-ui/react-tabs": "^1.1.21",
"@radix-ui/react-tooltip": "^1.2.16",
"@tanstack/react-query": "^5.90.2",
"@tanstack/react-table": "^9.2.4",
"@trpc/client": "^11.6.0",
"@trpc/react-query": "^11.6.0",
"@trpc/server": "^11.6.0",
"@zxing/browser": "^0.2.1",
"@zxing/library": "^0.23.0",
"bcryptjs": "^3.0.2",
"bullmq": "^5.61.0",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"date-fns": "^4.1.0",
"date-fns-tz": "^3.2.0",
"dexie": "^4.4.5",
"exceljs": "^4.4.0",
"ioredis": "^5.8.1",
"lucide-react": "^0.544.0",
"maplibre-gl": "^6.7.0",
"minio": "^8.0.6",
"next": "^15.5.4",
"next-auth": "^5.0.0-beta.29",
"next-themes": "^0.4.6",
"nodemailer": "^8.0.11",
"papaparse": "^5.7.0",
"qrcode": "^1.5.4",
"react": "^19.1.1",
"react-dom": "^19.1.1",
"server-only": "^0.0.1",
"superjson": "^2.2.6",
"tailwind-merge": "^3.3.1",
"web-push": "^3.6.7",
"zod": "^3.25.76"
},
"devDependencies": {
"@playwright/test": "^1.55.1",
"@tailwindcss/postcss": "^4.1.13",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.0",
"@types/node": "^22.18.6",
"@types/nodemailer": "^8.0.1",
"@types/papaparse": "^5.5.2",
"@types/qrcode": "^1.5.6",
"@types/react": "^19.1.13",
"@types/react-dom": "^19.1.9",
"@types/web-push": "^3.6.4",
"@vitejs/plugin-react": "^5.0.3",
"dotenv": "^17.4.2",
"esbuild": "^0.25.10",
"eslint": "^9.36.0",
"eslint-config-next": "^15.5.4",
"fake-indexeddb": "^6.2.5",
"jsdom": "^27.0.0",
"prisma": "^6.16.2",
"tailwindcss": "^4.1.13",
"tsx": "^4.20.6",
"tw-animate-css": "^1.4.0",
"typescript": "^5.9.2",
"vite-tsconfig-paths": "^5.1.4",
"vitest": "^3.2.4"
},
"allowScripts": {
"prisma": true,
"@prisma/client": true,
"@prisma/engines": true,
"esbuild": true,
"unrs-resolver": true,
"msgpackr-extract": true
}
}