diff --git a/README.md b/README.md index 6aed266..dd829d5 100644 --- a/README.md +++ b/README.md @@ -1,59 +1,60 @@ # q-buffer -A production-ready monorepo that orchestrates qBittorrent torrents in a controlled playback loop with strict peer enforcement. +q-buffer, qBittorrent üzerinde torrentleri kontrollü şekilde döngüye almayı ve peer kısıtlamasını otomatikleştirmeyi amaçlayan bir uygulamadır. Buffer ekranında torrent seçip loop akışını başlatabilir, Timer ekranında etiket bazlı otomatik silme kuralları tanımlayabilirsiniz. -## Overview +## Neler yapar? -- 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) +- qBittorrent WebUI API ile bağlanır, aktif torrent listesini gösterir. +- Seçilen torrent için loop (indir → sil → yeniden ekle) işlemini yönetir. +- Allow IP kuralıyla agresif peer kısıtlaması uygular (destek varsa ban). +- Timer kurallarıyla etiket bazlı seed süresi dolan torrentleri otomatik siler. +- Gerçek zamanlı durum, log ve metrikleri UI üzerinden gösterir. -## Quick Start +## Hızlı Başlangıç -1. Copy `.env.example` to `.env` and fill values. -2. Start dev stack: +1) `.env.example` dosyasını `.env` olarak kopyalayın ve değerleri doldurun. +2) Geliştirme ortamını başlatın: ```bash docker-compose -f docker-compose.dev.yml up --build ``` -3. Open: +3) Açın: - Web: http://localhost:5173 - API/Socket: http://localhost:3001 +## Kullanım (Buffer) + +1) qBittorrent’te torrentleri ekleyin (UI listeye düşer). +2) Loop yapmak istediğiniz torrent için listede **upload ikonu**na tıklayın ve `.torrent` dosyasını seçin. + - Bu işlem torrent dosyasını arşivler. + - **Arşiv yüklenmeden Loop Setup başlamaz.** +3) Allow IP, Loop sayısı ve Delay değerlerini girip **Start**’a basın. + +## Kullanım (Timer) + +1) Etiketleri qBittorrent’te oluşturun (radarr, tv-sonarr gibi). +2) Timer ekranında etiket seçip seed süresi kuralı ekleyin. +3) Süresi dolan torrentler qBittorrent ve diskten silinir. + ## Production ```bash docker-compose up --build ``` -Open http://localhost:3001 +Ardından 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 +## Ortam Değişkenleri - `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` +- `WEB_ALLOWED_HOSTS` (ör: `localhost,qbuffer.bee`) -## Folder Layout +## Klasör Yapısı - `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. +- `data`: JSON DB, loglar, arşivlenen torrent dosyaları