Initial implementation: self-hosted yt-dlp PWA

SvelteKit 5 + adapter-node PWA with:
- JWT auth (HS256, OIDC-ready interface) with auto-seeded admin
- Web Share Target (POST /share) for fire-and-forget URL sharing
- yt-dlp queue with p-limit concurrency (MAX_CONCURRENT=2)
- SSE progress streaming from yt-dlp --newline output
- Web Push notifications (VAPID) on complete/fail
- Per-extractor cookies store (AES-256-GCM encrypted at rest)
- 14-day retention cleanup with orphan sweep
- Local Playwright cookie generator script (scripts/generate-cookies.ts)
- Docker single-container (Alpine + ffmpeg + yt-dlp via pip)
- NPM proxy-network deployment (npm_network external)
- Drizzle ORM + better-sqlite3 (WAL mode)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-14 01:58:51 +02:00
co-authored by Claude Sonnet 4.6
commit c78f63d43a
67 changed files with 10653 additions and 0 deletions
+7344
View File
File diff suppressed because it is too large Load Diff