A cross-platform, offline-first Progressive Web App for secure file sharing over local Wi-Fi without internet connection.
- 🔒 Secure P2P Transfer: Direct file transfer using WebRTC DataChannel
- 🌐 Offline-First: No internet required after installation
- 📱 Cross-Platform: Works on any device with a modern web browser
- 🚀 PWA: Installable as a native app experience
- 📲 QR Code Signaling: Easy connection setup via QR codes
- 📊 Progress Tracking: Real-time transfer progress and chunking
- 🎨 Mobile-Friendly: Responsive design with Tailwind CSS
- Choose Role: Select whether you want to send or receive a file
- Sender: Pick a file and generate a connection offer (QR code)
- Receiver: Scan the offer QR code and generate an answer
- Connect: Sender scans the answer QR code to establish connection
- Transfer: Files are sent directly over WebRTC DataChannel
- Complete: Download the received file
- Frontend: React 18, TypeScript, Vite
- WebRTC: simple-peer for P2P connections
- QR Codes: qrcode.react, react-qr-reader
- Styling: Tailwind CSS
- PWA: Vite PWA plugin with service worker
-
Install dependencies:
npm install
-
Start development server:
npm run dev
-
Build for production:
npm run build
-
Preview production build:
npm run preview
- Open the app and select "Sender"
- Choose the file you want to send
- Generate a connection offer QR code
- Share the QR code with the receiver
- Scan the receiver's answer QR code
- Wait for the transfer to complete
- Open the app and select "Receiver"
- Scan the sender's offer QR code
- Generate and share your answer QR code
- Wait for the file to be received
- Download the received file
The app can be installed as a PWA on:
- Android: Chrome will show "Add to Home Screen" prompt
- iOS: Safari → Share → Add to Home Screen
- Desktop: Chrome/Edge will show install prompt in address bar
- Both devices must be on the same local network (Wi-Fi)
- No internet connection required after initial installation
- Uses public STUN servers for NAT traversal when needed
- All data is transferred directly between devices
- No data passes through any servers (except STUN for NAT traversal)
- WebRTC provides built-in encryption
- Manual signaling ensures no automatic connections
- Chrome 88+
- Firefox 84+
- Safari 14+
- Edge 88+
The project uses:
- Vite for fast development and building
- TypeScript for type safety
- ESLint for code quality
- Tailwind CSS for styling
- React Context for state management
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details