Skip to content

ZapDrop is a fast, secure, and peer-to-peer file sharing app that lets you send and receive files instantly without any middleman. With real-time transfers, encrypted connections, and a simple interface, ZapDrop makes sharing files effortless, reliable, and accessible to everyone.

License

Notifications You must be signed in to change notification settings

RajdeepKushwaha5/ZapDrop

Repository files navigation

ZapDrop - Free Peer-to-Peer File Transfer

Zap it. Drop it. Share it.

A modern, secure, and completely free peer-to-peer file sharing application built with Next.js and WebRTC. Share files directly between browsers with no servers involved - ensuring complete privacy and security.

ZapDrop Demo

✨ Features

  • πŸ”’ 100% Private & Secure - Files transfer directly between browsers, never touching our servers
  • ⚑ Lightning Fast - No upload delays, start sharing immediately with P2P connections
  • πŸ” Password Protection - Optional password security for sensitive files
  • πŸ“± Mobile Friendly - Works seamlessly on all devices including mobile browsers
  • 🎨 Modern UI - Beautiful interface with dark mode support
  • πŸ“¦ Multiple Files - Upload and share multiple files at once (auto-zipped for download)
  • πŸ“Š Real-time Progress - Monitor transfer progress for both uploaders and downloaders
  • ⏸️ Pause & Resume - Download interruptions can be resumed from where they left off
  • 🌐 Universal Access - Works in any modern browser without installations

πŸ†“ Completely Free Deployment

This application can be deployed and run completely free forever using these platforms:

Free Hosting Options:

  • Frontend: Vercel (unlimited deployments)
  • Alternative: Netlify (100GB bandwidth/month)
  • Alternative: GitHub Pages (static hosting)
  • STUN Servers: Google's free STUN servers (included)
  • Domain: Your custom domain or free subdomain

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • npm or yarn

Local Development

# Clone the repository
git clone https://github.com/RajdeepKushwaha5/ZapDrop.git
cd zapdrop-app

# Install dependencies
npm install

# Run development server
npm run dev

# Open http://localhost:3000 in your browser

Environment Variables

Create a .env.local file in the root directory (optional):

# Optional: Custom STUN/TURN servers
CUSTOM_STUN_SERVER=stun:your-stun-server.com:19302
TURN_SERVER_URL=turn:your-turn-server.com:3478
TURN_SERVER_USERNAME=your-username
TURN_SERVER_CREDENTIAL=your-password

# Optional: Analytics
NEXT_PUBLIC_GA_ID=your-google-analytics-id

πŸ“¦ Free Deployment Options

1. Vercel (Recommended - FREE Forever)

Deploy with Vercel

  1. Fork this repository
  2. Connect your GitHub account to Vercel
  3. Import the project
  4. Deploy (takes ~2 minutes)
  5. Get your free .vercel.app domain or add your custom domain

Cost: $0/month forever βœ…

2. Netlify (FREE Forever)

Deploy to Netlify

  1. Fork this repository
  2. Connect to Netlify
  3. Build settings: npm run build and out folder
  4. Deploy automatically

Cost: $0/month forever βœ…

3. GitHub Pages (Static Only)

# Build static version
npm run build
npm run export

# Deploy to GitHub Pages
# (Upload the 'out' folder content)

Cost: $0/month forever βœ…

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    WebRTC P2P     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Uploader      │◄─────────────────►│   Downloader    β”‚
β”‚   Browser       β”‚                   β”‚   Browser       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        β”‚                                       β”‚
        β”‚ HTTPS API (ICE servers only)          β”‚
        β–Ό                                       β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Next.js Server (FREE)                      β”‚
β”‚           - ICE server configuration                    β”‚
β”‚           - No file storage                            β”‚
β”‚           - No user data                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ”§ Technology Stack

  • Frontend: Next.js 15, React 19, TypeScript
  • Styling: Tailwind CSS
  • WebRTC: PeerJS (simplified WebRTC)
  • File Handling: Web APIs (File API, Blob, ArrayBuffer)
  • Streaming: Service Workers for download streaming
  • State: React hooks and context
  • Icons: Lucide React

πŸ›‘οΈ Security Features

  • End-to-End Encryption: All data encrypted via WebRTC/DTLS
  • No Server Storage: Files never touch our servers
  • Password Protection: Optional AES-256 password protection
  • No Tracking: No user data collected or stored
  • Content Security Policy: XSS protection
  • HTTPS Only: Secure connections required

πŸ“± Browser Support

Browser Support Features
Chrome 60+ βœ… Full All features
Firefox 55+ βœ… Full All features
Safari 12+ βœ… Full All features
Edge 79+ βœ… Full All features
Mobile Chrome βœ… Full All features
Mobile Safari βœ… Full All features

πŸ”§ Advanced Configuration

Custom STUN/TURN Servers

For better connectivity behind NATs, you can configure custom servers:

// src/hooks/usePeer.ts
const customIceServers = [
  { urls: 'stun:your-stun-server.com:19302' },
  {
    urls: 'turn:your-turn-server.com:3478',
    username: 'your-username',
    credential: 'your-password'
  }
];

Free TURN Server Options:

  1. Metered.ca - 50GB/month free
  2. Twilio - Free tier available
  3. Self-hosted COTURN - Free on your VPS

πŸ“Š Performance & Limits

Metric Limit Notes
File Size Browser memory Typically 1-4GB per file
Concurrent Downloads Unlimited P2P scales naturally
Transfer Speed Network limited Direct P2P connection
Storage Cost $0 No server storage
Bandwidth Cost $0 P2P transfer

🀝 Contributing

We welcome contributions! Here's how to help:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

Development Setup

# Install dependencies
npm install

# Run development server
npm run dev

# Run tests
npm run test

# Build for production
npm run build

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Inspired by FilePizza by Alex Kern & Neeraj Baid
  • Built with love for the open-source community
  • Uses free STUN servers provided by Google and others

πŸ†˜ Support & FAQ

Common Issues

Q: Files not transferring? A: Check if both users have the tab open and active. WebRTC requires active connections.

Q: Connection failed behind corporate firewall? A: Use TURN servers for better NAT traversal.

Q: Large files failing? A: Browser memory limits apply. Try smaller files or enable streaming downloads.

Q: Mobile not working? A: Ensure HTTPS is enabled. WebRTC requires secure contexts.

Need Help?


Made with ❀️ for a free and open internet

Deploy your own instance today and enjoy unlimited, private file sharing forever - completely free!

About

ZapDrop is a fast, secure, and peer-to-peer file sharing app that lets you send and receive files instantly without any middleman. With real-time transfers, encrypted connections, and a simple interface, ZapDrop makes sharing files effortless, reliable, and accessible to everyone.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published