Files
Wabenhain/package.json
T
Nick SzaunigandClaude Sonnet 5 8ddf781d9b
Docker Image bauen und veroeffentlichen / build-and-push (push) Successful in 4m35s
feat: Hero-Video beim Upload automatisch fuers Web komprimieren (ffmpeg)
Ein direkt von Kamera/Handy hochgeladenes Video (57 MB) lud spuerbar
langsam: keine Kompression, kein Ton entfernt, und ohne "faststart"
musste der Browser oft die gesamte Datei laden, bevor die Wiedergabe
ueberhaupt beginnen konnte.

Neues lib/video-transcode.ts (ffmpeg-static, per pnpm-workspace.yaml
allowBuilds freigegeben) enkodiert jedes hochgeladene Video jetzt zu
einem web-optimierten MP4 neu: Ton entfernt (Hero-Video ist ohnehin
stumm), auf max. 1920px Breite skaliert, CRF 26 mit Bitratendeckel,
"+faststart" fuer sofortigen Wiedergabestart. Nebeneffekt: ein
erfolgreicher Transcode validiert das Video jetzt genauso vollstaendig
wie reencodeImage() das bei Bildern schon tut (nicht mehr nur
Magic-Bytes). ffmpeg-static-Binary wird in der migrator-Docker-Stage
mitinstalliert (Next.js' Standalone-Tracing erkennt den Pfad hinter dem
pnpm-Store-Symlink nicht zuverlaessig), lokal per npm-Postinstall ohne
manuelle Einrichtung.

Getestet mit synthetischem Testvideo: Transcode laeuft durch, Ausgabe
enthaelt keine Audiospur mehr, ist als H.264/MP4 dekodierbar.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-12 00:30:42 +02:00

68 lines
2.1 KiB
JSON

{
"name": "wabenhain",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "node scripts/generate-prisma-clients.mjs && next dev",
"build": "node scripts/generate-prisma-clients.mjs && next build",
"start": "node scripts/generate-prisma-clients.mjs && next start",
"lint": "eslint",
"postinstall": "node scripts/generate-prisma-clients.mjs",
"db:push": "node scripts/prisma-provider.mjs && prisma db push",
"db:migrate": "node scripts/prisma-provider.mjs && prisma migrate dev",
"db:deploy": "node scripts/prisma-provider.mjs && prisma migrate deploy",
"db:seed": "prisma db seed",
"db:seed:demo": "tsx prisma/seed-demo.ts",
"db:studio": "node scripts/prisma-provider.mjs && prisma studio",
"test": "vitest run",
"test:watch": "vitest",
"test:e2e": "playwright test"
},
"dependencies": {
"@prisma/adapter-mariadb": "^7.9.1",
"@prisma/adapter-pg": "^7.9.1",
"@prisma/client": "^7.9.1",
"bcryptjs": "^3.0.3",
"ffmpeg-static": "^5.3.0",
"jose": "^6.2.8",
"mariadb": "^3.5.3",
"motion": "^13.0.0",
"next": "16.3.0",
"nodemailer": "^9.0.5",
"otpauth": "^9.5.1",
"pdfkit": "^0.19.1",
"prisma": "^7.9.1",
"qrcode": "^1.5.4",
"react": "19.2.8",
"react-dom": "19.2.8",
"sharp": "^0.35.3",
"stripe": "^22.4.0",
"zod": "^4.4.3",
"zustand": "^5.0.14"
},
"devDependencies": {
"@playwright/test": "^1.62.1",
"@tailwindcss/postcss": "^4",
"@testing-library/jest-dom": "^7.0.1",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.4",
"@types/bcryptjs": "^3.0.0",
"@types/node": "^20.19.43",
"@types/nodemailer": "^8.0.1",
"@types/pdfkit": "^0.17.6",
"@types/qrcode": "^1.5.6",
"@types/react": "^19",
"@types/react-dom": "^19",
"@vitejs/plugin-react": "^6.0.5",
"dotenv": "^17.4.2",
"eslint": "^9",
"eslint-config-next": "16.3.0",
"jsdom": "^30.0.1",
"tailwindcss": "^4",
"tsx": "^4",
"typescript": "^5",
"vitest": "^4.1.10"
},
"packageManager": "[email protected]"
}