fixing small things
Some checks failed
Build and Deploy (internal) / Build Transmission Manager Image (push) Failing after 8s
Build and Deploy (internal) / Deploy Transmission Manager (internal) (push) Has been skipped

This commit is contained in:
2026-07-08 20:14:17 -03:00
parent 052885b05e
commit ef88687acc
5 changed files with 115 additions and 38 deletions

103
README.md Normal file
View File

@@ -0,0 +1,103 @@
# Transmission Manager
A lightweight, modern, single-binary web application for viewing and managing torrents from a [Transmission](https://transmissionbt.com/) RPC daemon.
Transmission Manager serves a fast, clean, dark-mode Single Page Application (SPA) and proxies Transmission RPC calls through a minimal Go backend—all contained within a single executable.
---
## Features
- **Single Static Binary**: All frontend assets (`index.html`, `app.js`, `styles.css`) are embedded directly into the Go binary using `embed`. Zero runtime asset dependencies.
- **Modern Dark-Mode UI**: Built with vanilla HTML5, CSS3 (using CSS variables), and JavaScript. Responsive, compact layout designed for both desktop and mobile screens.
- **Live Polling & In-Place Updates**: Keyed DOM reconciliation updates existing torrent cards in place without screen flickering or scroll jumping. Selectable refresh interval (1s, 3s, 5s, 10s).
- **Rich Sorting & Filtering**:
- Filter torrents instantly by name.
- Sort by **Status**, **Name**, **Progress**, **Ratio**, **Size**, **Speed**, or **Availability**.
- **Interactive Controls**: Pause or resume individual torrents directly from the web interface.
- **Robust Transmission RPC Support**:
- Automatically handles Transmission `409 Conflict` session ID (`X-Transmission-Session-Id`) handshakes.
- Supports optional HTTP Basic Authentication.
---
## Configuration
Transmission Manager is configured entirely via environment variables:
| Variable | Required | Description |
| :--- | :---: | :--- |
| `TRANSMISSION_URL` | **Yes** | Absolute HTTP or HTTPS RPC endpoint URL of your Transmission instance. |
| `TRANSMISSION_RPC_USERNAME` | No | Basic Authentication username for Transmission RPC. |
| `TRANSMISSION_RPC_PASSWORD` | No | Basic Authentication password for Transmission RPC. |
---
## Quick Start
### Using Docker
Run the container directly:
```bash
docker run -d \
--name transmission-manager \
-p 8080:8080 \
-e TRANSMISSION_URL=http://192.168.1.100:9091/transmission/rpc \
-e TRANSMISSION_RPC_USERNAME=admin \
-e TRANSMISSION_RPC_PASSWORD=secret \
transmission-manager:latest
```
### Using Docker Compose
Create a `docker-compose.yml`:
```yaml
services:
transmission-manager:
build: .
container_name: transmission-manager
ports:
- "8080:8080"
environment:
TRANSMISSION_URL: http://192.168.1.100:9091/transmission/rpc
TRANSMISSION_RPC_USERNAME: admin
TRANSMISSION_RPC_PASSWORD: secret
restart: unless-stopped
```
Then start the application:
```bash
docker compose up -d
```
Open your browser and navigate to `http://localhost:8080`.
---
## Building from Source
### Prerequisites
- [Go](https://go.dev/) 1.24 or later
### Build
Compile the single binary with embedded frontend assets:
```bash
git clone https://github.com/your-repo/transmission-manager.git
cd transmission-manager
go build -ldflags="-s -w" -o transmission-manager .
```
### Run
```bash
export TRANSMISSION_URL="http://localhost:9091/transmission/rpc"
./transmission-manager
```
By default, the server listens on port `8080`.