Skip to content

*quickdrop* is a Cross-platform file sharing app that works entirely offline with maximum speed and zero cloud dependency.

License

Notifications You must be signed in to change notification settings

Ashutosh3021/Quickdrop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“‘ MultiShare

Python Flask License Offline

A fast, secure, and easy way to transfer files between devices on the same local networkβ€”no internet connection or account required.

✨ Features

Feature Description
πŸ”Œ Local Network Only All transfers stay on your WiFiβ€”never touch the internet
🚫 No Accounts Start sharing instantlyβ€”no login, no registration
πŸ“± QR Code Sharing Scan to connect devices quickly
⚑ High-Speed Transfer Stream files at full LAN speed (50-200 MB/s)
πŸ“Š Live Progress Real-time transfer progress with speed display
βœ… Integrity Check SHA256 checksum verification
πŸ“² PWA Support Install as a native app on any device
πŸ”’ Privacy First Sessions expire after 1 hour, no logs retained

πŸ”„ How It Works

sequenceDiagram
    participant S as Sender
    participant R as Receiver
    participant B as Backend

    Note over S,R: Both devices on same WiFi

    S->>B: 1. Select files & create session
    B-->>S: Returns session_id & share URL

    S->>R: 2. Share URL/QR Code
    R->>B: 3. Open URL, join session
    B-->>R: Show receiver UI + QR for sender

    S->>B: 4. Scan receiver's QR
    B-->>B: 5. WebSocket pairing
    B-->>S: Receiver connected!
    B-->>R: Transfer starting!

    S->>R: 6. File stream (chunked)
    R->>B: 7. Progress updates
    B-->>S: Transfer complete
Loading

Transfer Flow

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   SENDER    │────►│   SERVER   │────►│  RECEIVER   β”‚
β”‚             β”‚     β”‚  (Flask +  β”‚     β”‚             β”‚
β”‚ 1. Pick     β”‚     β”‚  SocketIO) β”‚     β”‚ 3. Open URL β”‚
β”‚    files    β”‚     β”‚             β”‚     β”‚    & join   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚                   β”‚
                           β”‚ 4. Pair via      β”‚
                           β”‚    WebSocket     β”‚
                           β–Ό                   β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚ 5. Stream   │────►│ 6. Download β”‚
                    β”‚    files    β”‚     β”‚    files   β”‚
                    β”‚ (4MB chunks)β”‚     β”‚ + verify   β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ Quick Start

Prerequisites

  • Python 3.8+
  • A local network (WiFi)

Installation

# Clone or download the project
cd MultiShare/backend

# Create virtual environment (recommended)
python -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

Run the App

python app.py

Expected output:

πŸš€ MultiShare starting...
πŸ“± Open on sender:   http://192.168.1.5:5000
πŸ“₯ Receiver visits:  http://192.168.1.5:5000

Usage Guide

  1. Open in Browser β€” Visit http://<your-ip>:5000 on both devices
  2. Send Files β€” Click "Send Files", select files, share the link/QR
  3. Receive Files β€” Open the shared link or scan QR code
  4. Confirm Transfer β€” Review and confirm on the sender side
  5. Download β€” Files stream directly to receiver with progress

πŸ“Š Performance

Metric WiFi 5 WiFi 6
Transfer Speed 50-100 MB/s 100-200 MB/s
Connection Time < 2s < 2s
RAM Usage < 100 MB < 100 MB

πŸ› οΈ Tech Stack

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  Frontend                       β”‚
β”‚   HTML5  β€’  CSS3  β€’  JavaScript  β€’  Socket.IO  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
                         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Backend                       β”‚
β”‚   Flask  β€’  Flask-SocketIO  β€’  Python 3.8+     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
                         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Network Layer                      β”‚
β”‚   HTTP (transfers)  β€’  WebSocket (signaling)   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Dependencies

  • Flask β€” Web framework
  • Flask-SocketIO β€” Real-time communication
  • qrcode[pil] β€” QR code generation
  • Pillow β€” Image processing
  • eventlet β€” Async I/O

πŸ“ Project Structure

MultiShare/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ app.py              # Main Flask + SocketIO server
β”‚   β”œβ”€β”€ config.py           # Port, chunk size, session TTL
β”‚   β”œβ”€β”€ requirements.txt    # Python dependencies
β”‚   └── utils/
β”‚       β”œβ”€β”€ network.py      # Local IP detection
β”‚       β”œβ”€β”€ session.py      # In-memory session management
β”‚       └── file_handler.py # Chunked streaming + checksums
β”‚
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ templates/
β”‚   β”‚   β”œβ”€β”€ index.html      # Landing page
β”‚   β”‚   β”œβ”€β”€ send.html       # File sender UI
β”‚   β”‚   └── receive.html    # File receiver UI
β”‚   └── static/
β”‚       β”œβ”€β”€ css/style.css   # Responsive styles
β”‚       β”œβ”€β”€ js/main.js      # Client-side logic
β”‚       β”œβ”€β”€ sw.js           # Service worker (PWA)
β”‚       └── manifest.json   # PWA manifest
β”‚
β”œβ”€β”€ README.md
└── LICENSE

πŸ” Security

  • Local Network Only β€” All traffic stays within your LAN
  • Auto-Expiring Sessions β€” Sessions expire after 1 hour
  • Random Session IDs β€” Unguessable UUIDs prevent unauthorized access
  • Checksum Verification β€” SHA256 ensures file integrity
  • No Persistent Storage β€” No logs or files retained after transfer

🌍 Cross-Platform Support

Platform Method
Windows Native Python
macOS Built-in Python3
Linux System Python
Android Termux
iOS Pythonista / a-Shell

πŸ“ License

This project is licensed under the MIT License β€” see the LICENSE file for details.

🀝 Contributing

Contributions are welcome! Feel free to open issues or submit pull requests.

About

*quickdrop* is a Cross-platform file sharing app that works entirely offline with maximum speed and zero cloud dependency.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages