2026-01-02 15:49:01 +03:00
2026-01-02 15:49:01 +03:00
2026-01-02 15:49:01 +03:00
2026-01-02 15:49:01 +03:00
2026-01-02 15:49:01 +03:00
2026-01-02 15:49:01 +03:00
2026-01-02 15:49:01 +03:00
2026-01-02 15:49:01 +03:00
2026-01-02 15:49:01 +03:00
2026-01-02 15:49:01 +03:00

q-buffer

A production-ready monorepo that orchestrates qBittorrent torrents in a controlled playback loop with strict peer enforcement.

Overview

  • Backend: Node.js + TypeScript + Express + socket.io
  • Frontend: React + Vite + TypeScript (shadcn-style UI)
  • Storage: JSON file DB with atomic writes and mutex
  • Docker: dev (two containers) and prod (single container)

Quick Start

  1. Copy .env.example to .env and fill values.
  2. Start dev stack:
docker-compose -f docker-compose.dev.yml up --build
  1. Open:

Production

docker-compose up --build

Open http://localhost:3001

Features

  • Login with env-configured credentials (JWT httpOnly cookie)
  • Torrent list and selection
  • Torrent archive to /data/torrents/{hash}.torrent
  • Loop engine with delete/re-add between runs
  • Aggressive allow-IP enforcement (peer ban when supported)
  • Dry run report and profiles
  • Real-time status/logs via socket.io

Environment Variables

  • QBIT_BASE_URL, QBIT_USERNAME, QBIT_PASSWORD
  • APP_USERNAME, APP_PASSWORD, JWT_SECRET
  • POLL_INTERVAL_MS, ENFORCE_INTERVAL_MS, DEFAULT_DELAY_MS, MAX_LOOP_LIMIT

Folder Layout

  • apps/server: Express API + socket.io
  • apps/web: Vite React UI
  • data: JSON DB, logs, torrent archive

Notes

  • If magnet metadata generation fails, use Advanced upload to provide .torrent manually.
  • The loop engine deletes downloaded data between loops.
Description
No description provided
Readme 5.4 MiB
Languages
TypeScript 96.9%
CSS 1.5%
Dockerfile 0.8%
JavaScript 0.5%
HTML 0.3%