docs: update README with comprehensive tech stack and features
This commit is contained in:
81
README.md
Normal file
81
README.md
Normal 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)
|
||||
Reference in New Issue
Block a user