🛠️Tools & CLIYear: 2025–26Active development

Transfer

Fast local-network file transfer between phones, laptops and desktops — with a Windows installer and a CLI companion.

Python 3.10+aiohttpWebSocketPWAPyInstallerInno SetupSQLite

What it is

Transfer is a fast local-network (LAN) file transfer server. You run it once on a computer and then any phone, laptop or desktop on the same Wi-Fi can open the printed address in a browser and upload/download files — no cables, no cloud, no accounts.

The project is bilingual (English/Farsi), ships as a ready Windows installer (NeganTransfer_Setup.exe built with PyInstaller + Inno Setup) and includes a companion CLI (transfer-cli.py) for scripted transfers.

Feature highlights

  • Upload/download files and whole folders, drag & drop, multi-file ZIP download
  • Real-time updates over WebSocket; automatic device discovery on the LAN
  • QR code for instant pairing from a phone
  • HTTPS with auto-generated self-signed certificates (or mkcert for trusted ones)
  • File management: delete, rename, create folders; expiring share links; search/sort/filter; duplicate detection
  • 5 themes + auto system theme + custom background; bilingual EN/FA interface
  • Hardware info display; keyboard shortcuts; per-session speed limits
  • PWA support — installable as an app on the phone
  • Extras: folder-sync mode (experimental), chat between devices, network speed test, remote camera/screen viewing (HTTPS required), document preview (PDF, text, code)

Security model

  • Path-traversal protection, XSS escaping of all user content, CSRF protection on state-changing endpoints, per-IP rate limiting, session-based auth, HTTPS. The README is explicit: designed for LAN use only — do not expose to the public internet.

Architecture (from the source)

server/
├── main.py        # entry point; port checks, graceful shutdown
├── handler.py     # HTTP handlers
├── websocket.py   # real-time updates
├── auth.py        # session-based authentication
├── security.py    # CSRF, rate limiting, sanitization
├── network.py     # LAN address detection
├── qr.py          # QR generation
├── hardware.py    # hardware info
├── config.py      # settings & port
└── services/      # extra services
web/
├── index.html / app.js / style.css / manifest.json / translations.js

Plus: transfer-cli.py (send/get/list/status), run.spec + setup.iss (PyInstaller/Inno packaging), generate_ssl.py, install.sh/start.sh for Linux and tests/.

Dependencies (requirements.txt)

  • aiohttp — async HTTP server
  • bcrypt — password hashing
  • qrcode — QR generation
  • psutil — hardware info
  • platformdirs — cross-platform config paths

Getting started

# Linux
./install.sh && ./start.sh      # or: python run.py

# Windows (from source)
python -m venv .venv && .venv\Scripts\activate
pip install -r requirements.txt
python run.py                   # opens http://<lan-ip>:8000
# ...or just run the prebuilt NeganTransfer_Setup.exe

# CLI
./transfer-cli.py connect http://192.168.1.5:8000
./transfer-cli.py send photo.jpg
./transfer-cli.py list && ./transfer-cli.py get photo.jpg

Why it stands out

Transfer feels like a shipped product, not a script: real-time sync over WebSocket, QR pairing, HTTPS setup for phones, PWA installability, themes, a bilingual UI, a CLI, a Windows installer with firewall rules — and a serious security layer (CSRF, rate limits, path traversal). It demonstrates full product engineering in Python: from protocol design to packaging and distribution.

More projects