884c1987837a17dae4907be581bb8a49f26166f4
Moves git-compatible content from Nextcloud (Botomir/Projekte/Angefangen/Kino-Projekt) into this repo per cleanup request, under nextcloud-import/ to avoid colliding with the actively maintained backend/frontend/worker layout: - status/planning docs (Botomir-Status.md, Plan-Botomir.md, Projektbeschreibung.md) - docs/ (deployment.md, provider-policy.md) - backend-nextcloud-variant/ (older app/ layout, kept for reference only) - plugin.video.xstream/, script.module.xstreamscraper/ (vendored Kodi addon source) A third-party Firefox extension folder was intentionally left in Nextcloud (unrelated vendor code, not project source).
project-kino
Docker-hosted web GUI for searching and downloading movies/series, with Jellyfin integration.
Quick Start
cp .env.example .env
# edit .env — set DB_PASSWORD, SECRET_KEY, JELLYFIN_URL, JELLYFIN_API_KEY
docker compose up --build
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- Health: http://localhost:8000/health
Architecture
frontend (React/Vite + nginx)
└─ /api/* → backend (FastAPI)
└─ PostgreSQL
worker (Python polling)
└─ reads pending downloads from DB, simulates job execution
API
| Method | Path | Description |
|---|---|---|
| GET | /health | Health check |
| GET | /api/search?q= | Search across configured providers |
| POST | /api/downloads | Queue a download |
| GET | /api/downloads | List all downloads |
| GET | /api/downloads/:id | Get one download |
| POST | /api/downloads/:id/retry | Retry a failed download |
Providers
Providers are operator-configured search sources. The default mock provider returns
test data. Add real providers by implementing BaseProvider in backend/src/providers.py
and registering them in the _registry.
No hardcoded piracy sources. All download URLs come from operator-configured providers only.
Configuration
All secrets via environment variables or .env (never committed):
| Variable | Description |
|---|---|
DB_PASSWORD |
PostgreSQL password |
SECRET_KEY |
App secret key |
JELLYFIN_URL |
Jellyfin base URL |
JELLYFIN_API_KEY |
Jellyfin API key |
MEDIA_PATH |
Local path for downloaded media |
Description
Languages
Python
95.1%
JavaScript
3.1%
TypeScript
0.6%
HTML
0.6%
CSS
0.4%
Other
0.2%