A high-performance BitTorrent client built with Tauri 2 + Rust + React
Click the badge above or the link to go to the Releases page, then download the
.exesetup file.
- Full BitTorrent engine (librqbit) — DHT, PEX, UPnP, magnet links, .torrent files
- Adaptive HTTP streaming preview of downloading video files (port 54321)
- TMDB integration — auto-fetches poster, rating, year for movies/shows
- RSS feed manager with auto-download filters
- Remote control WebSocket API (port 54322)
- Privacy mode: proxy support, IP blocklists
- Glassmorphic dark theme — black/grey with vivid blue accents
- Tray icon, per-torrent speed graphs, label system
| Tool | Version | Notes |
|---|---|---|
| Node.js | 20 LTS+ | Includes npm |
| Rust | stable (1.77+) | Install via rustup |
| Visual Studio 2022 | 17.x | Workload: Desktop development with C++ |
| Windows SDK | 10.0.26100+ | Installed automatically with VS |
| WebView2 Runtime | any | Pre-installed on Windows 11 / Edge |
Visual Studio 2026 users: See Custom MSVC Config below.
# 1. Clone the repository
git clone https://github.com/sayantanmandal1/bitdown.git
cd bitdown
# 2. Install Node dependencies
npm install
# 3. Copy .env.example → .env and add your TMDB API key
# (free at https://www.themoviedb.org/settings/api)
Copy-Item .env.example .env
notepad .env
# 4. Run the dev server (first run compiles Rust — takes ~3 min)
npx tauri devnpx tauri build
# Output: src-tauri\target\release\bundle\nsis\BitDown_*_x64-setup.exeIf you have Visual Studio 2026 or a conflicting rustc on PATH (e.g. from Chocolatey):
Copy-Item src-tauri\.cargo\config.toml.example src-tauri\.cargo\config.toml
notepad src-tauri\.cargo\config.tomlEdit the paths to match your VS installation. On VS 2022 with a clean rustup install this file is not needed.
Pushing a version tag triggers the workflow which compiles a full Windows installer and uploads it to GitHub Releases automatically.
git tag v1.0.1
git push --tagsThe workflow will:
- Set the version in
tauri.conf.jsonfrom the tag - Compile the full Rust + React app in release mode
- Create a GitHub Release with the NSIS
.exeinstaller attached
Go to Settings → Secrets and variables → Actions → New repository secret:
| Secret | Value |
|---|---|
TMDB_API_KEY |
Your TMDB API key from themoviedb.org |
bitdown/
├── src/ # React + TypeScript frontend
│ ├── components/ # UI components (Toolbar, Sidebar, TorrentList, …)
│ ├── stores/ # Zustand state (torrentStore, settingsStore)
│ ├── hooks/ # useTauriEvents, etc.
│ └── lib/ # tauri-commands.ts, types.ts
├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── engine/ # TorrentManager (librqbit wrapper)
│ │ ├── db/ # SQLite via sqlx
│ │ ├── streaming/ # HTTP byte-range server (port 54321)
│ │ ├── intelligence/ # TMDB metadata client
│ │ ├── rss/ # RSS feed manager
│ │ ├── sync/ # WebSocket remote control (port 54322)
│ │ └── commands/ # Tauri IPC commands
│ └── icons/ # App icons (PNG, ICO)
├── public/
│ └── bitdown.svg # Toolbar logo
├── .env.example # Environment variable template
└── .github/workflows/
└── release.yml # Auto-release on git tag push
| Layer | Technology |
|---|---|
| Desktop shell | Tauri 2.11 |
| Backend | Rust 1.77+ / librqbit 8.1.1 |
| Frontend | React 18 / TypeScript / Vite 6 |
| UI | shadcn/ui + Tailwind CSS v3 |
| State | Zustand 5 |
| Database | SQLite via sqlx 0.8 |
| Streaming | axum 0.7 HTTP server |
MIT