Files
project-kino/README.md

59 lines
1.9 KiB
Markdown

# project-kino
Docker-hosted web GUI for searching and downloading movies/series, with Jellyfin integration.
> **Current runtime snapshot (2026-08-21):** The latest VM207/CT201 FastAPI implementation, browser extension, tests, Docker stack, token monitor, and migration report are under [`runtime-current/`](runtime-current/README.md). The older root frontend/backend/worker layout below remains as project history and has not been overwritten.
## Quick Start
```bash
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 |