4.0 KiB
PrivyDrop - A Privacy-Focused, WebRTC-Based File Sharing Tool
PrivyDrop(formerly SecureShare) is an open-source, peer-to-peer (P2P) file and text sharing tool built on WebRTC. It requires no server-side data relay; all data is transmitted directly between browsers, ensuring end-to-end encryption for maximum privacy and security.
We believe everyone should have control over their own data. PrivyDrop was created to fulfill this vision: a simple, fast, and private sharing solution.
Try it Live » | GitHub Repository »
✨ Key Features
- 🔒 End-to-End Encryption: Leverages P2P direct connections via WebRTC. All files and text are transferred directly between browsers without passing through any central server.
- 📂 File & Folder Transfer: Supports transferring multiple files and entire folders.
- ⚡ Real-time & Efficient: Displays real-time transfer progress and automatically calculates transfer speed.
- 📝 Rich Text Clipboard: Supports editing and sending formatted text, not just files.
- 🔗 Convenient Sharing: Easily share a room and establish a connection via a link or QR code.
- 📱 Multi-Device Support: Responsive design supports both desktop and mobile browsers.
- 🌐 Internationalization: Supports multiple languages, including English and Chinese.
🛠️ Tech Stack
- Frontend: Next.js 14, React 18, TypeScript, Tailwind CSS, shadcn/ui
- Backend: Node.js, Express.js, TypeScript
- Real-time Communication: WebRTC, Socket.IO
- Data Storage: Redis
- Deployment: PM2, Nginx, Docker [WIP]
🚀 Quick Start (Full-Stack Local Development)
Before you begin, ensure your development environment has Node.js (v18+), npm, and a running Redis instance installed.
-
Clone the Project
git clone https://github.com/david-bai00/PrivyDrop.git cd PrivyDrop -
Configure and Start the Backend Service
cd backend npm install # Create and configure .env.development.local according to the instructions in backend/README.md npm run dev # Starts by default at http://localhost:3001 -
Configure and Start the Frontend App (in a new terminal window)
cd frontend pnpm install # Create and configure .env.development.local according to the instructions in frontend/README.md pnpm dev # Starts by default at http://localhost:3000 -
Start Sharing Open
http://localhost:3000in your browser to access the application.
📚 Documentation
We provide detailed documentation to help you dive deeper into the project's design and deployment details:
- Overall Project Architecture: Understand how all components of the PrivyDrop system work together.
- Frontend Architecture Deep Dive: Explore the frontend's code structure, state management, and core logic.
- Backend Architecture Deep Dive: Dive into the backend's code structure, signaling flow, and Redis design.
- Deployment Guide: Learn how to deploy the complete PrivyDrop application in a production environment.
🤝 Contributing
We warmly welcome contributions of all forms! Whether it's reporting a bug, suggesting a feature, submitting code or adding a star, your help is invaluable to PrivyDrop's growth. Please read our Contribution Guidelines to start your journey.
We have a Code of Conduct that all contributors are expected to follow. Please be sure to review it before participating.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
