DOCS: https://mintlify.wiki/metesahankurt/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.
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.
- 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.
- 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.
- 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.
- 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.
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.
- 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
- Framework: React Native (via Expo 54)
- Routing: Expo Router
- Video/Audio:
@livekit/react-native - Camera / QR:
expo-camera - Storage: Async Storage
- Node.js 18+ and npm
- (Optional, for Mobile) Expo Go app on your phone, or iOS Simulator / Android Emulator.
- 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:3000
npm run dev
- 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 press
npm start
ifor iOS simulator /afor Android emulator).
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
- 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.
- 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.
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
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.
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