Skip to main content
←All work

WebAirDrop

Role
Full-Stack / WebRTC Project
Timeline
Personal Project
Status
Completed
Category
Full-Stack / WebRTC

A browser-based peer-to-peer file-sharing application that transfers files directly between devices through WebRTC without uploading file contents to a storage server.

WebAirDrop is a browser-native peer-to-peer file transfer tool. It works like AirDrop but across any device with a modern browser - Windows, macOS, Android, iOS. File contents travel directly from one browser to another over an RTCDataChannel; a Node.js/Socket.IO signaling server handles the initial WebRTC handshake but never receives the file data itself.

01

The problem

Most file-sharing tools either upload your files to a cloud server (introducing privacy risk and a size ceiling), require both devices to be on the same app ecosystem, or demand a client installation. WebAirDrop addresses this by using the WebRTC standard that is built into every modern browser, routing only the connection negotiation through a server while keeping file bytes peer-to-peer.

02

Approach

  1. Signaling

    When a sender and receiver connect, the Node.js server running Socket.IO exchanges WebRTC offers, answers, and ICE candidates between them. This negotiation establishes the peer connection. The signaling server does not receive, buffer, or store any file content.

  2. Peer-to-peer transfer

    Once the RTCPeerConnection is established, files are streamed through an RTCDataChannel directly between browsers. The application is designed without an application-level file-size restriction, though practical limits depend on the browser, network, and available memory.

  3. Queue and identity

    Multiple files can be queued and transferred in sequence. Each device is automatically assigned a unique generated name (for example, Cosmic Tiger or Neon Dragon) to make device identification human-readable without requiring a login.

  4. Interface

    The frontend is built with vanilla JavaScript and Vite with a dark glassmorphism UI. No framework dependency is needed. Styling uses CSS3 with modern design patterns.

03

Stack

Frontend

JavaScriptViteCSS3

Networking

WebRTCRTCPeerConnectionRTCDataChannel

Signaling

Node.jsSocket.IO
04

What it changes

  • Peer-to-peer file transfer - file bytes never touch the signaling server.
  • Cross-platform: works on any modern browser regardless of operating system.
  • Multiple-file queue with smooth sequential transfers.
  • Automatically generated device names for easy identification.
  • No login or account required.

WebAirDrop uses a Node.js/Socket.IO signaling server to coordinate WebRTC connections. The term 'serverless' does not apply - a signaling server is required for the initial handshake. File content is never routed through this server. Practical transfer size depends on browser and device capabilities.

05

About the author

I'm Aaqib Shaikh, a software engineer based in Karachi, Pakistan. I build full-stack web applications, AI systems, and machine-learning tools, from architecture to deployment, and studied Computer Science at Iqra University. The resume has the full background, more work is on the projects page, and the contact page is the way to reach me. Code lives on GitHub.