all work
shipped[2024]12

AirPass

P2P file transfer over WebRTC. No server storage, no size limit.

Problem

File transfer services store your files on third-party servers. True P2P means the file never touches a server.

Built

WebRTC-based P2P file transfer, using Django Channels for signaling and WebRTC data channels for direct peer transfer. No file stored on any server. Room codes for easy sharing.

peer-to-peer

no server storage

multiple

file types

room-based

sharing

The build

[Idea]

AirPass came from a privacy frustration. Every 'send a file' tool on the web uploads your file to someone else's server. The file sits there, decrypted, until they decide to delete it. True peer-to-peer means the file never touches a server. The relay only exchanges the connection metadata (SDP offers, SDP answers, ICE candidates), then the two browsers stream the bytes directly.

[Framing]

That's what AirPass is. The signaling layer is FastAPI, kept simple, just enough to coordinate the handshake. The actual transfer is a WebRTC data channel. Rooms are 6-digit codes plus a QR variant for mobile entry. They auto-expire after 30 minutes or on disconnect, and the room is in-memory only, with zero persistence.

[Build]

The chunking was the tricky engineering piece. 64KB slices with reliable, ordered delivery handle multi-gigabyte transfers without crashing the browser. Backpressure is throttled so neither side OOMs. Optional AES-256-GCM end-to-end encryption is available, and the key never leaves the two peers. Optional bcrypt password protection on rooms for the paranoid case. The frontend is intentionally vanilla JS, not a framework. That's a transparency call, not a stylistic one. You can read every line that touches your file. The signaling server has zero knowledge of file contents. It sees only metadata (room id, peer count, transfer progress).

[Deploy]

Deployment was tested with coturn for TURN server fallback (NAT traversal), nginx and docker, and a couple of deploy scripts. AirPass is dormant now, but the pattern is one I'd reach for again, for any case where 'upload to a third party' is the wrong default.

[What's next]

What's next, if I revive it. A mobile wrapper. A richer signaling protocol for multi-peer fan-out (think: send to 5 friends in one go).

Stack

4 techs · grouped by layer

Backend

  • Django
  • DRF
  • WebSocket
  • WebRTC

Also used

Django ChannelsJavaScript

Links

Related stack

techs used in AirPass