619951fa1ce795e82c4302bf19757cb0ee8eea5e
All checks were successful
Build MIPS Binary / build (push) Successful in 4m14s
VAPID keys must now be set via environment variables or .env file. This eliminates the security risk of having keys in source code.
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
41
Languages
Rust
65.5%
CSS
29.8%
HTML
1.9%
JavaScript
1.4%
Dockerfile
1.2%
Other
0.2%