Secure P2P File Sharing with End-to-End Encryption
DropShare is a secure, private, and easy-to-use peer-to-peer file sharing application that works entirely in your browser. No servers, no sign-ups, just direct connections for fast and secure file transfers.
- Peer-to-Peer: Files are transferred directly between devices without going through a central server.
- End-to-End Encrypted: All files are encrypted using ECDH key exchange with HKDF key derivation and AES-GCM encryption via audited cryptographic libraries (
@noble/*). SeeSECURITY.mdfor details. - QR Code Connections: Generate QR codes for easy sharing or scan QR codes to connect to other devices.
- Cross-Platform: Works on any modern browser on any device (desktop, tablet, mobile).
- No Installation: Just open a web page and start sharing.
- Multiple File Support: Share multiple files at once with drag-and-drop support.
- Multiple Recipients: Share files with multiple people simultaneously.
- Connection Verification: Cryptographic challenge-response system ensures secure peer verification.
- Dark/Light Theme: Built-in theme toggle for comfortable use.
To run DropShare locally, follow these steps:
-
Clone the repository:
git clone https://github.com/daenax/dropshare.git cd dropshare -
Install dependencies: This project uses
bunas the package manager.bun install
-
Run the development server:
bun run dev
-
Open your browser and navigate to the local URL provided (usually
http://localhost:5173). To test P2P functionality:- On the first device, click "Start Sharing" to generate a QR code
- On the second device, click "Start Scanning" to scan the QR code and connect
- Alternatively, you can copy the connection URL and open it directly on the second device
-
For Sharing Files:
- Click "Start Sharing Files" on the landing page
- Drag and drop files or click to select files you want to share
- Show the generated QR code to others or share the connection URL
- Connected devices will appear in the "Connected Receivers" section
-
For Receiving Files:
- Click "Scan QR Code" on the landing page
- Point your camera at the sender's QR code
- Once connected, available files will appear in your list
- Click the download button on any file to save it to your device
- Framework: React 19 with Vite 7
- Language: TypeScript
- Package Manager: Bun
- P2P Communication: PeerJS (WebRTC)
- Cryptography: @noble/curves, @noble/ciphers, @noble/hashes
- UI: Tailwind CSS v4 with shadcn/ui components
- State Management: Zustand
- QR Codes:
react-qr-code(generation) andjsqr(scanning) - File Handling:
react-dropzone - Code Quality: Biome for linting and formatting
Security is a core feature of DropShare. All transfers are end-to-end encrypted and authenticated. For a detailed breakdown of the security model, algorithms, and cryptographic libraries used, please read the SECURITY.md file.
Contributions are welcome! Please feel free to open an issue or submit a pull request.
This project is licensed under the MIT License.