Drop is a modern, cross-platform file sharing solution that works seamlessly across any device with a web browser. Inspired by Apple's AirDrop, it eliminates the limitations of platform-specific file sharing by leveraging web technologies for universal compatibility.
- ๐ Universal Compatibility - Works on any device with a browser (Windows, macOS, Linux, iOS, Android)
- ๐ End-to-End Encrypted - Secure peer-to-peer file transfers
- ๐ No File Size Limits - Transfer files of any size
- ๐ฑ No App Installation Required - Pure web-based solution
- ๐ฏ Simple Share Codes - Easy 6-character codes for quick sharing
- โก Real-time Progress - Live transfer progress with visual feedback
- ๐ Direct P2P Transfer - Files transfer directly between devices
- ๐จ Beautiful Modern UI - Intuitive interface with smooth animations
- WebRTC Signaling Server - Facilitates peer-to-peer connections
- Session Management - Handles share codes and connection coordination
- CORS Support - Enables cross-origin requests from frontend
- High Performance - Rust-powered backend for reliability
- React-based UI - Modern, responsive interface
- WebRTC Client - Handles peer-to-peer file transfers
- Real-time Updates - Live connection status and transfer progress
- File Management - Drag & drop, file selection, and download handling
- Sender creates a session and gets a 6-character share code
- Receiver enters the code to join the session
- WebRTC Connection established through signaling server
- Direct P2P Transfer - Files transfer directly between devices
- Automatic Download - Received files are automatically downloadable
-
Clone the repository
git clone <your-repo-url> cd drop
-
Start the backend server
cargo run
Backend will start at
http://127.0.0.1:8080 -
Start the frontend (in a new terminal)
cd frontend npm install npm run devFrontend will start at
http://localhost:3000
- Open
http://localhost:3000in your browser - Drag & drop files or click "browse" to select files
- Click "Create Share Link" to generate a 6-character code
- Share the code with the recipient
- Open
http://localhost:3000in any browser - Enter the 6-character share code
- Click "Join" to connect
- Files will be received automatically and available for download
drop/
โโโ src/ # Rust backend
โ โโโ main.rs # Server entry point
โ โโโ lib.rs # Core library with API endpoints
โ โโโ webrtc.rs # WebRTC utilities
โ โโโ transfer.rs # File transfer logic
โ โโโ crypto.rs # Encryption utilities (future)
โ โโโ ble.rs # Bluetooth LE (future)
โ โโโ protocol.rs # Transfer protocol definitions
โโโ frontend/ # Next.js frontend
โ โโโ src/app/
โ โ โโโ page.tsx # Main UI component
โ โ โโโ hooks/
โ โ โโโ useWebRTC.ts # WebRTC React hook
โ โโโ package.json
โ โโโ tailwind.config.js
โโโ Cargo.toml # Rust dependencies
โโโ README.md
POST /api/session/create- Create new sharing sessionPOST /api/session/{id}/signal/send- Send WebRTC signaling messageGET /api/session/{id}/signal/receive- Receive WebRTC signaling messages
- useWebRTC Hook - Manages WebRTC connections and file transfers
- File Drop Zone - Handles file selection and drag & drop
- Transfer Progress - Real-time progress visualization
- Connection Status - Live connection state updates
- โ WebRTC-based file transfer
- โ Beautiful modern UI
- โ Cross-platform compatibility
- โ Real-time progress tracking
- ๐ QR Code sharing for mobile devices
- ๐ End-to-end encryption implementation
- ๐ Bluetooth LE discovery
- ๐ NFC tap-to-share
- ๐ File preview capabilities
- ๐ Mobile app companions
- ๐ Desktop native apps
- ๐ Cloud relay for NAT traversal
- ๐ Group file sharing
- ๐ File history and management
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Rust best practices for backend code
- Use TypeScript for all frontend code
- Maintain consistent code formatting
- Add tests for new features
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
Drop prioritizes security with:
- Peer-to-peer transfers - Files never pass through our servers
- WebRTC encryption - Built-in transport layer security
- Session-based sharing - Temporary, code-based access
- No data persistence - Sessions and codes are temporary
Unlike traditional file sharing solutions, Drop:
- Works everywhere - No platform restrictions
- Requires no installation - Pure web-based
- Direct transfers - No file size limits or cloud storage
- Privacy-focused - Files never leave your local network
- Modern UX - Beautiful, intuitive interface
- Open source - Transparent and community-driven
- Issues: Report bugs or request features via GitHub Issues
- Discussions: Join the conversation in GitHub Discussions
- Documentation: Check the Wiki for detailed guides
Built with โค๏ธ using Rust, Next.js, and WebRTC