A fast, wireless way to share files between your phone and computer, with live progress updates.
- π± Mobile-Friendly Interface: Optimized for iPhone and Android devices
- β‘ Real-Time Progress: Individual progress bars and upload speed tracking
- π Smart Retry: Automatic retry functionality for failed uploads
- π Batch Statistics: Comprehensive upload statistics and timing
- π― Duplicate Detection: Intelligent file deduplication and conflict resolution
- π Dark Mode: Automatic dark theme support
- π Secure: Local network only, no external dependencies
-
Clone the repository:
git clone https://github.com/mishka/SwiftShare.git cd SwiftShare -
Install dependencies:
npm install
-
Start the server:
npm start
-
Open your mobile browser and navigate to the displayed IP address
- Start SwiftShare: Run
npm start - Connect Devices: Ensure your mobile device and computer are on the same WiFi network
- Access Interface: Open your mobile browser and go to the displayed IP address
- Select Files: Choose files to upload using the file picker
- Upload: Click "Upload Files" and monitor real-time progress
# Default settings (Desktop/SwiftShare, port 3000)
node server.js
# Custom save location
node server.js --save-path /path/to/save/files
# Custom port
node server.js --port 8080
# Both custom save location and port
node server.js --save-path ~/Downloads/SwiftShare --port 8080
# Examples
node server.js --save-path ~/Downloads/SwiftShare
node server.js --port 8080
node server.js --save-path "C:\Users\Username\Documents\SwiftShare" --port 5000- Duplicate Detection: Files with the same name and size are automatically skipped
- Incomplete File Handling: 0KB files (cancelled uploads) are automatically replaced
- File Limits: Maximum 100 files per upload session
- File Size: No size limits (supports large video files up to 20GB+)
swiftshare/
βββ server.js # Main server application
βββ public/
β βββ index.html # Frontend interface
βββ package.json # Dependencies and scripts
βββ README.md # This file
- Port: Use
--portargument (default: 3000) - Upload Directory: Use
--save-pathargument (default: Desktop/SwiftShare)
- Both devices must be on the same WiFi network
- No internet connection required
- Firewall may need to allow the port (default: 3000)
- Individual Progress: Each file shows its own progress bar
- Upload Speed: Real-time MB/s calculation
- Elapsed Time: Smart time formatting (seconds, minutes, hours)
- Overall Progress: Batch progress tracking
- Duplicate Detection: Compares filename and file size
- Conflict Resolution: Handles incomplete uploads gracefully
- Batch Processing: Efficient handling of multiple files
- Error Recovery: Automatic retry with exponential backoff
- Responsive Design: Works on all screen sizes
- Dark Mode: Automatic theme detection
- Touch Optimized: Mobile-first design
- Real-Time Updates: Live progress and status updates
Can't access from mobile device:
- Ensure both devices are on the same WiFi network
- Check firewall settings
- Try using the computer's IP address directly
Upload fails:
- Check available disk space
- Ensure file permissions are correct
- Try reducing the number of files per batch
Slow uploads:
- Check WiFi signal strength
- Close other network-intensive applications
- Try uploading fewer files at once
FileSync provides detailed logging for troubleshooting:
17:54:12.10 | 192.168.0.20 | New File | IMG_6104.mov - Ready for upload (496.1 MB)
17:54:12.11 | 192.168.0.20 | Pre-check | New Files - 1 file(s) ready for upload
17:54:12.12 | 192.168.0.20 | Completed | IMG_6104.mov - Uploaded as IMG_6104_1760727514947.mov (496.1 MB)
17:54:12.13 | 192.168.0.20 | Completed | Batch Upload - 1 files | 496.1 MB | 2m 15s | 3.7 MB/s
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Express.js
- File uploads handled by Multer
- CORS support provided by cors
If you encounter any issues or have questions:
- Check the Troubleshooting section
- Search existing Issues
- Create a new issue with detailed information