P2P file sharing via WebRTC DataChannels. No cloud, no accounts.
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ Device A โ โ Device B โ
โ (Sender) โ โ (Receiver) โ
โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ
โ โ
โ 1. WS: session-create โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ 2. WS: session-join โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ 3. WS: SDP offer/answer โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ 4. WS: ICE candidates โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ 5. WebRTC P2P established โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโบโ
โ โ
โ 6. DataChannel: file chunks โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโบโ
โ (DTLS encrypted, SCTP) โ
โ โ
โโโโโโโโดโโโโโโโ โโโโโโโโดโโโโโโโ
โ Signaling โ โ Signaling โ
โ Server โ โ Server โ
โ (WebSocket)โ โ (WebSocket)โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ โ
โโโโโโโโโโโ SDP/ICE only โโโโโโโโโโโโ
(no file data, ephemeral sessions)
Flow:
- Sender creates session โ Signaling server generates session ID
- Receiver joins via session ID โ Signaling server links peers
- SDP offer/answer exchange โ WebRTC negotiation
- ICE candidates exchange โ NAT traversal
- P2P connection established โ Direct WebRTC DataChannel
- File chunks stream โ DTLS encrypted, ordered delivery
- React 19 + TypeScript + Vite
- Node.js + WebSocket (ws)
- WebRTC DataChannels
- Tailwind + shadcn/ui
- Chunk Size: 16-64 KB (adaptive)
- Session: 12-char URL-safe ID, 30min timeout
- Data Channel: Ordered, no retransmission
- STUN: Google's public servers
- Speed: ~50-100 MB/s (LAN, <10MB), ~20-60 MB/s (LAN, >100MB)
- Bundle: 826 KB (254 KB gzipped)
- Multi-Peer Support: Send files to multiple peers simultaneously in the same session
- Select multiple devices at once
- Parallel file transfers with individual progress tracking
- Aggregate transfer statistics
- See MULTI_PEER_PLAN.md for detailed architecture
- Multiple Data Channel Support: Use multiple data channels per peer for improved throughput and parallel transfers
- Resumable Transfers: Resume interrupted file transfers
- File Preview: Preview images, videos, and documents before downloading
- Folder Structure Preservation: Better folder transfer with nested directory support
- Transfer Speed Optimization: Adaptive chunk sizing based on network conditions
- Transfer Queue: Queue multiple file transfers
- Bandwidth Throttling: Control upload/download speed limits
MIT