docs: update README with comprehensive tech stack and features

This commit is contained in:
spinline
2026-02-05 00:41:41 +03:00
parent 209b7ec2c3
commit 4c728ad066

81
README.md Normal file
View File

@@ -0,0 +1,81 @@
# 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](https://www.rust-lang.org/) (Edition 2021)
* **Architecture:** Monorepo / Workspace
### 🖥️ Frontend (WebAssembly)
* **Framework:** [Leptos](https://leptos.dev/) (v0.6) - A reactive web framework for building performant web apps.
* **Rendering:** Client-Side Rendering (CSR) via WASM.
* **Styling:**
* [Tailwind CSS](https://tailwindcss.com/) (v4) - Utility-first CSS framework.
* [DaisyUI](https://daisyui.com/) (v5) - Component library for Tailwind CSS.
* **Themes:** Supports multiple themes (Light, Dark, Dim, Nord, Cupcake, Dracula, Abyss, etc.).
* **Build Tool:** [Trunk](https://trunkrs.dev/) - WASM web application bundler for Rust.
* **Networking:** `gloo-net` for HTTP requests and Server-Sent Events (SSE).
* **PWA:** Progressive Web App support with Manifest and Service Workers.
### ⚙️ Backend (API)
* **Framework:** [Axum](https://github.com/tokio-rs/axum) (v0.8) - Ergonomic and modular web framework.
* **Runtime:** [Tokio](https://tokio.rs/) - Asynchronous runtime for Rust.
* **Protocols:**
* **SCGI:** Custom asynchronous SCGI implementation for communicating with rTorrent.
* **XML-RPC:** `quick-xml` based parsing/serialization for rTorrent commands.
* **Real-time:** Server-Sent Events (SSE) for live torrent updates.
* **Documentation:** [Utoipa](https://github.com/juhaku/utoipa) (Swagger UI) for API documentation.
* **Middleware:** `tower-http` for CORS, Compression, and Static File Serving.
* **Logging:** `tracing` for 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.
```bash
cd backend
cargo run
```
The backend server will start (default: `http://localhost:3000`).
### 2. Frontend
Open a new terminal for the frontend.
```bash
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
[ISC](LICENSE)