Privacy-first peer-to-peer file transfer using WebRTC
- 🔒 Privacy-First: Files never touch the server, direct peer-to-peer transfer
- ⚡ Fast: Achieves 80%+ of available bandwidth between peers
- 🌍 Cross-Platform: Works on any device with a modern browser
- 🎯 Simple: No sign-up, no installation, just share a room code
- 🔐 Secure: WebRTC encryption (DTLS) enabled by default
- 📱 Responsive: Optimized for mobile, tablet, and desktop
- Node.js 18+
- pnpm 8+
# Install dependencies
pnpm install
# Start development servers (frontend + signaling server)
pnpm dev
# Build for production
pnpm build# Run all tests
pnpm test
# Type checking
pnpm typecheck
# Linting
pnpm lint2-peerdrop/
├── packages/
│ ├── frontend/ # React SPA (Vite)
│ └── signaling-server/ # Node.js WebSocket server
├── package.json # Monorepo root
└── pnpm-workspace.yaml # Workspace configuration
- Sender creates a room and receives a unique 6-character code
- Receiver joins using the room code
- WebRTC connection established via signaling server
- Files transferred directly between browsers (P2P)
- No data stored on server
- Frontend: React 18, TypeScript, Vite, Tailwind CSS, Zustand
- Signaling: Node.js, Express, Socket.IO
- P2P Transfer: WebRTC (RTCDataChannel)
- Deployment: Vercel (frontend) + Railway (signaling server)
- ✅ No server-side file storage (ephemeral processing only)
- ✅ WCAG 2.2 AA accessibility compliant
- ✅ GDPR principles (data minimization, zero PII)
- ✅ WebRTC encryption (DTLS) by default
- ✅ 24-hour room expiration