hashdrop
HashDrop is a secure, peer-to-peer file transfer application built with Next.js and WebRTC, enabling direct, end-to-end encrypted file sharing between devices with no cloud storage, no tracking, and no data retention.
HashDrop π
A secure, unified ecosystem for peer-to-peer file sharing, video conferencing, and real-time chat built with Next.js, React Native (Expo), WebRTC, and LiveKit. Sharing data directly and securely between devices at lightning speeds. No cloud storage, zero data retention, and no tracking.
π The HashDrop Ecosystem
HashDrop goes beyond a single web app; it is a full cross-platform suite consisting of a powerful Web Application and a fully-featured Mobile App (iOS/Android), designed to break down the walls between your devices seamlessly.
Whether you are dropping a heavy 10GB video file to a colleague, jumping into a high-quality video conference, or sending a quick snippet of text, HashDrop provides a unified, frictionless experience.
β¨ Core Features
π 1. Secure Peer-to-Peer File Transfer
- Direct Device-to-Device Stream: Files are transferred directly between peers via WebRTC. Once sent, it's gone.
- Zero Cloud Storage: Files never touch our backend servers or any intermediary cloud.
- 10GB Maximum Capacity: Extremely high capacity with a chunk-based resumble transfer system.
- SHA-256 Verification: Cryptographic hashing ensures your file arrives exactly as it was sent without corruption.
- Duplicate Chunk Protection: Robust built-in DoS protection during the transfer execution.
πΉ 2. High-Capacity Video Conferencing
- Powered by LiveKit: Utilizing the robust LiveKit SDK for low-latency, scalable WebRTC room architecture.
- Multi-Participant Support: Scales effortlessly up to 50 active participants in a single conference.
- Cross-Platform Compatibility: Users can join the same room seamlessly from a web browser or from the native mobile app.
- Dynamic Layout Focus: Smooth horizontal picture-in-picture stream layout, with an interactive zoom view for screen shares or crucial details.
- Hardware Optimized: Fully optimized camera and microphone handling natively on iOS and Android.
π¬ 3. Real-Time Chat Rooms & Text Sharing
- Transient Chat Rooms: Create disposable, secure chat environments instantly.
- Universal Text Sharing: Send a quick URL, a paragraph of text, or code snippets instantly across devices.
π± 4. Native Mobile Application (iOS & Android)
- Built with Expo: 100% native feel utilizing the power of React Native.
- Integrated QR Code Scanner: Utilize your device's camera to join rooms, receive files, or connect instantly by scanning the Web client's QR display.
- Haptic Integrations: Sensorial feedback on successful file transfers or room joins.
π Security & Privacy (The "Zero Trust" Approach)
HashDrop is built with absolute privacy as its foundation.
β
End-to-End Encryption: WebRTC DTLS/SRTP encryption is standard (the same protocols used by Zoom and Google Meet).
β
No Account Required: Completely anonymous. No emails, no usernames, no tracking, no signups.
β
Human-Readable, Ephemeral Codes: Connections utilize secure adjective-noun codes (e.g., "Cosmic-Falcon"). These have 6,400 entropy combinations and expire automatically in 5 minutes.
β
Single Connection Constraint: Only the first peer who types the code connects. This entirely prevents multi-recipient eavesdropping attacks.
β
No Metadata Storage: Zero logs on the signaling server.
β
Opt-In Auto-Copy: Clipboard interactions are privacy-first and user-initiated.
π Technical Stack
Web Platform
- Framework: Next.js 16 (App Router, Turbopack)
- Language: TypeScript 5
- State Management: Zustand 5
- P2P Communication: PeerJS 1.5.4
- Video/Audio Streaming: LiveKit Client (React Components)
- Styling & Animation: Tailwind CSS v4, Framer Motion
- Testing: Jest 29, React Testing Library
Mobile Platform (iOS/Android)
- Framework: React Native (via Expo 54)
- Routing: Expo Router
- Video/Audio:
@livekit/react-native - Camera / QR:
expo-camera - Storage: Async Storage
π¦ Getting Started & Installation
Prerequisites
- Node.js 18+ and npm
- (Optional, for Mobile) Expo Go app on your phone, or iOS Simulator / Android Emulator.
Setting up the Core Web App
- Clone the repository:
git clone https://github.com/metesahankurt/hashdrop.git cd hashdrop - Install dependencies:
npm install - Run the Next.js development server:
Available at http://localhost:3000npm run dev
Setting up the Mobile App
- Navigate to the mobile workspace:
cd mobile - Install mobile dependencies:
npm install - Run the Expo development client:
(You can scan the QR code via Expo Go to run on a physical device, or pressnpm startifor iOS simulator /afor Android emulator).
π System Architecture
hashdrop/
βββ src/ # NEXT.JS WEB APP
β βββ app/ # App router, API endpoints, LiveKit Webhooks
β βββ components/ # Web UI (Transfer UI, Conference UI, Chat UI)
β βββ hooks/ # Custom React Hooks
β βββ lib/ # Cryptography, Hash Validation, P2P Logic, File Mgmt
β βββ store/ # Zustand Global States
β βββ types/ # Shared TypeScript interfaces
β
βββ mobile/ # EXPO NATIVE APP
β βββ app/ # React Native Navigation Routes
β βββ components/ # Mobile specific UI (QR Scanners, Camera Views)
β βββ constants/ # Theme, Layout configurations
β βββ hooks/ # Mobile specific hooks
β βββ ios/ & android/ # Pre-build native directories
β
βββ __tests__/ # Jest Test Suites
βββ public/ # Static Assets
π How It Works Under The Hood
The Peer-to-Peer Lifecycle:
- Initiation: Sender drops a file. HashDrop generates a cryptographically secure phrase (e.g., "Neon-Tiger") via the Web Crypto API.
- Signaling: The phrase is registered on the signaling server, awaiting a match.
- Discovery: Receiver inputs "Neon-Tiger" on their Web or Mobile client.
- Handshake: Both peers negotiate a WebRTC connection. A direct, encrypted data tunnel (DTLS/SRTP) locks them together.
- Drop: The signaling server steps away. The file is split into 16KB binary chunks, sequenced, and streamed directly across the internet to the receiver.
- Verification: The receiver reassembles the chunks, computes a final SHA-256 hash, and automatically downloads the verified file.
Video Conferencing Logic:
- Powered by a lightweight LiveKit server implementation (
livekit-server-sdkin Next.js APIs). - Users request a temporary token via API to join a dynamically created room context.
- WebRTC handles complex topological mesh networking internally, keeping bandwidth consumption globally low while supporting dozens of cameras simultaneously.
π€ Contributing
Contributions are more than welcome to make HashDrop the definitive open-source P2P utility. Feel free to open a PR!
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-expansion) - Commit your changes (
git commit -m 'Add amazing expansion') - Push to the branch (
git push origin feature/amazing-expansion) - Open a Pull Request
π License & Terms
This project is licensed under the MIT License - see the LICENSE file for details. Respect user privacy. Always check the Privacy Policy within the application layout.
π¨βπ» Author
Mete Εahan Kurt
- π Portfolio: metesahankurt.cloud
- πΌ LinkedIn: linkedin.com/in/mete-sahan-kurt
- π GitHub: github.com/metesahankurt
Made with β€οΈ by Mete Εahan Kurt
βοΈ Star this repo if you found it useful!
Live Demo β’ Report Bug