View on GitHub

bird-sender

Real-time file transfer across your local network. No internet, no clouds, no hassle. Try the live demo.

Features

🚀

Real-time Transfer

Transfer files instantly between devices on the same network with optimized binary protocol.

🔒

100% Local

Your files never leave your network. Complete privacy without external servers or cloud storage.

🔐

End-to-End Encryption

AES-GCM 256-bit encryption for password-protected transfers. Your data stays secure.

📦

Any File Type

Transfer files of any type and size. No restrictions, no compression, no quality loss.

🎯

Multiple Files

Send multiple files simultaneously with concurrent transfer support.

Optimized Protocol

Custom binary WebSocket protocol with server relay for maximum performance.

How It Works

1

Install & Start

Clone the repository, install dependencies, and start the server with a single command.

2

Open on Multiple Devices

Access the network URL from any device connected to the same WiFi or Ethernet network.

3

Drag & Drop Files

Drop files into the interface or click to select. Choose the target device from the list.

4

Accept & Download

The receiver gets a notification, accepts the transfer, and files download automatically.

# Clone the repository
git clone https://github.com/maldos23/bird-sender.git
cd bird-sender

# Install dependencies
npm install

# Start the server
npm run dev

# Output:
#   🐦 bird-sender
#
#   Local:   http://localhost:3000
#   Network: http://192.168.1.100:3000

Changelog

Every change, improvement, and bug fix documented.

v1.1.0 latest
  • Light/dark theme toggle with CSS tokens and localStorage
  • OKLCH palette with tinted neutrals, no pure #000 or #fff
  • Micro-interactions: hover lift, staggered entrance, progress shimmer
  • A11y: aria labels, focus trap with inert, Escape on modals
  • Flat design without borders or shadows
  • Password visibility toggle in modals
  • prefers-reduced-motion support
  • Vercel deployment and CHANGELOG.md
v1.0.0 2025-04-12
  • Real-time file transfer via WebSocket
  • Custom binary protocol (27-byte headers, 64 KB chunks)
  • AES-GCM 256-bit encryption with PBKDF2 derivation
  • Express + ws relay server without file storage
  • Jest + Cypress tests with GitHub Actions CI/CD
View full changelog