- JavaScript 52.7%
- CSS 37.3%
- HTML 8.3%
- Nix 1.2%
- Dockerfile 0.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| public | ||
| .dockerignore | ||
| compose.yaml | ||
| Dockerfile | ||
| flake.nix | ||
| package.json | ||
| README.md | ||
| server.mjs | ||
Download Shelf
A client-rendered browser for qBittorrent downloads. Every top-level directory in the mounted download root is a project. It supports card and expandable tree views, search and sorting, and browser-local shelves for merging related projects.
Run with Docker
docker compose up --build -d
The container binds only to 127.0.0.1:18080; nginx publishes it through the configured store.home.lolicon.cyou virtual host. The compose file mounts /var/lib/qBittorrent/qBittorrent/downloads read-only at /downloads.
To use another directory, change the host-side portion of the volume mount in compose.yaml. The API never exposes paths outside DOWNLOAD_ROOT.
Local development
nix develop
npm run dev
Set DOWNLOAD_ROOT when the downloads are not mounted at /downloads:
DOWNLOAD_ROOT=/var/lib/qBittorrent/qBittorrent/downloads npm run dev
The implementation deliberately has no runtime npm dependencies. The Node server scans the mounted filesystem and serves the static client; all presentation state, including shelves, stays in the browser.