Some checks are pending
Build MIPS Binary / build (push) Waiting to run
VibeTorrent
VibeTorrent is a modern, responsive, and high-performance web interface for rTorrent, built entirely with Rust. It leverages the power of WebAssembly (WASM) for the frontend and a robust asynchronous backend to provide a seamless torrent management experience.
🚀 Tech Stack
This project is built as a Rust workspace containing a backend API, a WASM frontend, and a shared library.
🦀 Core
- Language: Rust (Edition 2021)
- Architecture: Monorepo / Workspace
🖥️ Frontend (WebAssembly)
- Framework: Leptos (v0.6) - A reactive web framework for building performant web apps.
- Rendering: Client-Side Rendering (CSR) via WASM.
- Styling:
- Tailwind CSS (v4) - Utility-first CSS framework.
- DaisyUI (v5) - Component library for Tailwind CSS.
- Themes: Supports multiple themes (Light, Dark, Dim, Nord, Cupcake, Dracula, Abyss, etc.).
- Build Tool: Trunk - WASM web application bundler for Rust.
- Networking:
gloo-netfor HTTP requests and Server-Sent Events (SSE). - PWA: Progressive Web App support with Manifest and Service Workers.
⚙️ Backend (API)
- Framework: Axum (v0.8) - Ergonomic and modular web framework.
- Runtime: Tokio - Asynchronous runtime for Rust.
- Protocols:
- SCGI: Custom asynchronous SCGI implementation for communicating with rTorrent.
- XML-RPC:
quick-xmlbased parsing/serialization for rTorrent commands.
- Real-time: Server-Sent Events (SSE) for live torrent updates.
- Documentation: Utoipa (Swagger UI) for API documentation.
- Middleware:
tower-httpfor CORS, Compression, and Static File Serving. - Logging:
tracingfor structured logging.
📦 Shared
- Common Crate: A shared Rust library containing data models (
Torrent,GlobalStats) and event types used by both backend and frontend to ensure type safety across the entire stack.
🛠️ Prerequisites
- Rust: Latest stable version (
rustup update) - WebAssembly Target:
rustup target add wasm32-unknown-unknown - Trunk:
cargo install trunk - Node.js & NPM: (Required for Tailwind CSS CLI)
🏃♂️ Getting Started
1. Backend
Create a .env file in the backend directory (see .env.example) and configure your rTorrent SCGI socket path.
cd backend
cargo run
The backend server will start (default: http://localhost:3000).
2. Frontend
Open a new terminal for the frontend.
cd frontend
npm install # Install Tailwind dependencies
trunk serve
The application will be available at http://localhost:8080.
🎨 Features
- Real-time Updates: Live torrent progress, speeds, and status via SSE.
- Responsive Design: Fully mobile-friendly UI with bottom navigation and touch gestures.
- Theme Support: Multiple built-in themes with automatic/manual switching.
- Management: Add, pause, resume, delete torrents.
- Filtering & Sorting: Advanced filtering (All, Downloading, Paused, etc.) and sorting options.
- Speed Limits: Global upload/download speed limit controls.
📄 License
Description
Releases
4
Languages
Rust
60.7%
CSS
34.3%
HTML
2.1%
JavaScript
1.5%
Dockerfile
1.1%
Other
0.3%