Flinger
End-to-end encrypted file sharing with ephemeral links and no accounts.
Flinger is a hosted file sharing service where the server is structurally incapable of reading what you upload. Files are encrypted in the browser with AES-256-GCM before a single byte leaves the device. The decryption key lives only in the URL fragment – the # portion that browsers never include in HTTP requests – so neither the app server nor Cloudflare R2 can decrypt what’s stored.
The trust model goes a step further than most “encrypted sharing” tools. File names and MIME types are also encrypted client-side before upload. The server stores only ciphertext, file sizes (needed for limit enforcement), and a proof token derived via HMAC-SHA256 from the key – meaning you have to possess the share URL to even request the encrypted metadata. No accounts, no sign-up, no session tied to an identity.
Shares expire after up to 30 days and can be capped at a specific download count. Files are compressed client-side before encryption – Brotli via a lazily-loaded WASM worker, with a gzip fallback – and the compression method travels with the share metadata so the download side decompresses correctly. Multi-file shares bundle up to 20 files under one link.
The backend runs on dedicated Node infrastructure behind Docker, with MongoDB tracking shares and a fingerprint-based abuse layer (hashed IP + browser signals, no raw IPs stored) enforcing per-day upload limits and storage caps. Cleanup of expired shares is intentionally external – a cron job calls a protected HTTP endpoint so the app process never needs an internal scheduler.
Writeups
from this project