Files
sshkeyvault/package.json
T
florian.wildeandClaude Opus 5.5 8f5b31c0cb feat(benachrichtigung): E-Mail und Webhook bei Drift und Ablauf (#028)
Drift, ablaufende und abgelaufene Schluessel, unerreichbare Hosts und
geaenderte Host-Keys sollen auffallen, ohne dass jemand taeglich in die
Oberflaeche schaut. Versand per SMTP (Microsoft 365, STARTTLS) und per
Webhook mit HMAC-Signatur, eingestellt unter /einstellungen.

Die Anlaesse liest der Worker aus der Datenbank, statt sie im Abgleich
auszuloesen: der Abgleich-Ablauf bleibt unberuehrt, und ein verpasster
Lauf holt sich der naechste. Ein Versandprotokoll (Zustellung) mit
Anlass-Fingerabdruck verhindert Doppelmeldungen und haelt Fehlschlaege
fuer begrenzte Wiederholungen fest. Taeglich eine Zusammenfassung,
geaenderte Host-Keys im Fuenf-Minuten-Takt sofort.

Versand und Testnachricht laufen im Worker, damit der Webprozess keinen
Weg zu Mailserver oder Webhook-Ziel braucht. Passwort und Geheimnis
liegen nur verschluesselt in der Datenbank; die Seite zeigt "gesetzt".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 16:54:43 +02:00

98 lines
3.1 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"name": "sshkv",
"version": "0.4.0",
"private": true,
"type": "module",
"description": "SSHKeyVault – zentrale Verwaltung von SSH-Schluesseln mit Weboberflaeche",
"packageManager": "pnpm@12.6.0",
"engines": {
"node": ">=24"
},
"scripts": {
"dev": "next dev -p 3400",
"build": "next build",
"build:worker": "esbuild src/worker/index.ts --bundle --platform=node --target=node24 --format=esm --outfile=dist/worker.mjs --banner:js=\"$(cat deploy/worker-banner.js)\" --external:@node-rs/argon2 --external:pg-native --external:cpu-features --external:*.node",
"start": "next start -p 3400",
"worker": "tsx src/worker/index.ts",
"lint": "eslint",
"typecheck": "tsc --noEmit",
"format": "prettier --write .",
"format:pruefen": "prettier --check .",
"test": "vitest run",
"test:watch": "vitest",
"test:integration": "vitest run --config vitest.integration.config.mts",
"test:ziele:up": "docker compose -f docker-compose.test.yml up -d --build --wait",
"test:ziele:down": "docker compose -f docker-compose.test.yml down",
"db:up": "docker compose -f docker-compose.dev.yml up -d --wait",
"db:down": "docker compose -f docker-compose.dev.yml down",
"db:migrate": "prisma migrate dev",
"db:seed": "prisma db seed",
"db:generate": "prisma generate",
"issues:sync": "tsx scripts/gitea-issues.ts",
"icons": "node scripts/icons.mjs",
"postinstall": "prisma generate",
"prepare": "husky",
"build:all": "pnpm build && pnpm build:worker",
"test:e2e": "playwright test"
},
"lint-staged": {
"*.{ts,tsx,mts,mjs}": [
"eslint --fix",
"prettier --write"
],
"*.{json,css,yml,yaml}": [
"prettier --write"
]
},
"dependencies": {
"@fontsource/ibm-plex-sans": "^5.3.0",
"@fontsource/jetbrains-mono": "^5.3.0",
"@fontsource/space-grotesk": "^5.3.0",
"@node-rs/argon2": "^2.2.2",
"@prisma/adapter-pg": "7.10.0",
"@prisma/client": "7.10.0",
"bcrypt-pbkdf": "^1.0.2",
"clsx": "^2.1.1",
"jose": "^6.2.12",
"lucide-react": "1.47.0",
"next": "16.3.6",
"nodemailer": "10.0.10",
"openid-client": "^6.8.8",
"pg": "^8.23.1",
"pg-boss": "^12.37.1",
"qrcode": "^1.5.4",
"react": "19.3.0",
"react-dom": "19.3.0",
"ssh2": "^1.17.0",
"zod": "^4.6.5"
},
"devDependencies": {
"@commitlint/cli": "^21.2.3",
"@commitlint/config-conventional": "^21.2.3",
"@playwright/test": "1.63.0",
"@tailwindcss/postcss": "^4.3.3",
"@types/node": "^24.19.2",
"@types/nodemailer": "8.0.2",
"@types/pg": "^8.23.1",
"@types/qrcode": "^1.5.6",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0",
"@types/ssh2": "^1.15.6",
"dotenv": "^18.0.7",
"esbuild": "^0.28.2",
"eslint": "^9.39.5",
"eslint-config-next": "16.3.6",
"eslint-config-prettier": "^10.1.8",
"husky": "^9.1.7",
"lint-staged": "^17.6.0",
"prettier": "^3.9.10",
"prisma": "7.10.0",
"sharp": "^0.35.5",
"tailwindcss": "^4.3.3",
"tsx": "^4.23.15",
"typescript": "~6.0.3",
"vite": "8.3.0",
"vitest": "5.0.1"
}
}