Skip to content

mishka/SwiftShare

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SwiftShare

A fast, wireless way to share files between your phone and computer, with live progress updates.

✨ Features

  • πŸ“± 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

πŸš€ Quick Start

  1. Clone the repository:

    git clone https://github.com/mishka/SwiftShare.git
    cd SwiftShare
  2. Install dependencies:

    npm install
  3. Start the server:

    npm start
  4. Open your mobile browser and navigate to the displayed IP address

πŸ“– Usage

Basic Usage

  1. Start SwiftShare: Run npm start
  2. Connect Devices: Ensure your mobile device and computer are on the same WiFi network
  3. Access Interface: Open your mobile browser and go to the displayed IP address
  4. Select Files: Choose files to upload using the file picker
  5. Upload: Click "Upload Files" and monitor real-time progress

Command Line Options

# 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

File Management

  • 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+)

πŸ› οΈ Development

Project Structure

swiftshare/
β”œβ”€β”€ server.js              # Main server application
β”œβ”€β”€ public/
β”‚   └── index.html         # Frontend interface
β”œβ”€β”€ package.json           # Dependencies and scripts
└── README.md             # This file

πŸ”§ Configuration

Configuration Options

  • Port: Use --port argument (default: 3000)
  • Upload Directory: Use --save-path argument (default: Desktop/SwiftShare)

Network Requirements

  • Both devices must be on the same WiFi network
  • No internet connection required
  • Firewall may need to allow the port (default: 3000)

πŸ“Š Features in Detail

Real-Time Progress Tracking

  • 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

Smart File Management

  • 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

User Interface

  • 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

πŸ› Troubleshooting

Common Issues

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

Server Logs

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

πŸ“„ License

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

πŸ™ Acknowledgments

πŸ“ž Support

If you encounter any issues or have questions:

  1. Check the Troubleshooting section
  2. Search existing Issues
  3. Create a new issue with detailed information

About

A fast, wireless way to share files between your phone and computer, with live progress updates.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors