# du.pe
Simple, Fast & Lightweight Torrent Server β‘π¦
A **self-hosted torrent-based file manager and media player**, similar to Put.io β fast, minimal, and elegant.
Add torrents, monitor downloads, and instantly stream videos through a clean web interface! π₯οΈπ¬
---
## β¨ Features
- π§² **Add Torrents**
- Upload `.torrent` files (via form)
- Add magnet links (via prompt)
- π₯ **Download Management**
- View active torrents
- See progress, speed, and remaining time
- Browse file trees within torrents
- π΄ **Real-Time Updates**
- Live progress updates via WebSocket
- ποΈ **Instant Playback**
- Stream video files directly in the browser
- ffmpeg-ready structure for Safari/codec compatibility
- ποΈ **Clean & Modern Web Interface**
- Svelte-powered fast and lightweight UI
- Search bar, torrent list, detailed view
- Custom modal video player: title, progress bar, volume, subtitles, and download icons
- Mobile-friendly layout with hamburger menu support
- π³ **Easy Docker Setup**
- One-command deployment with `docker-compose.yml`
> π Login and user authentication are not yet implemented β planned in the roadmap.
---
## ποΈ Architecture
```
root
ββ client/ # Svelte-based Web UI
ββ server/ # Node.js (Express) API + WebSocket + WebTorrent
ββ docker-compose.yml
```
- **client**
- Developed and built using Vite
- Backend API configured via `VITE_API` (e.g., `http://192.168.x.x:3001`)
- **server**
- Express REST endpoints (list, add, stream torrents)
- Real-time updates via WebSocket (`progress` events)
- WebTorrent for downloading and seeding
- Optional ffmpeg integration for video transcoding
---
## π Quick Start
### π³ Docker Compose (Recommended)
```bash
docker compose up -d --build
```
**Default Ports:**
- Server (API): `http://localhost:3001`
- Client (UI): `http://localhost:5173`
---
## βοΈ Environment Variables
### Client
| Variable | Description |
|-----------|--------------|
| `VITE_API` | Backend API root URL (e.g., `http://localhost:3001`) |
### Server
| Variable | Description |
|-----------|--------------|
| `PORT` | API port (default: `3001`) |
---
## π API & WebSocket Endpoints
| Method | URL | Description |
|--------|-----|-------------|
| `GET` | `/api/torrents` | Returns active torrents |
| `POST` | `/api/transfer` | Adds a torrent via `.torrent` file upload |
| `POST` | `/api/magnet` | Adds a torrent via magnet link |
| `GET` | `/stream/:infoHash/:fileIndex` | Streams a video or file |
| `WS` | `ws://:3001/` | Torrent progress updates (`type: progress`) |
---
## π§ Developer Notes
- **Safari Compatibility:** Some codecs may cause issues. Itβs recommended to remux files (`.mkv β .mp4`) with ffmpeg if needed.
---
## π£οΈ Roadmap
- π Authentication (JWT or session-based)
- ποΈ Advanced player features (subtitle selection, quality control)
- π§Ή File management, trash bin, and history
- π§ͺ Automated testing and CI setup
---