Initial h-play app

This commit is contained in:
Dymas
2026-09-15 15:18:12 +02:00
commit e1dfdc7bd7
12 changed files with 1375 additions and 0 deletions
+77
View File
@@ -0,0 +1,77 @@
# Kaizoku-Styled Private Anime Library
A small local web app for browsing a folder-based private video collection. The interface uses a Kaizoku-inspired dark purple glass-panel design, but the app remains a standalone private library browser. It does not integrate with Plex, Jellyfin, Kodi, or any external metadata provider.
## Folder Layout
Place media in this shape:
```text
Library/
Movie Or Series/
filename.mp4
Series With Seasons/
Season 01/
episode-01.mp4
```
Supported extensions: `.mp4`, `.m4v`, `.mkv`, `.webm`, `.mov`, `.avi`.
## Run With Docker
```bash
docker compose up --build
```
Open http://localhost:3000.
The app binds to `127.0.0.1` by default, so it is only reachable from the same machine unless you explicitly set `HOST`. The compose file publishes the container on `127.0.0.1:3000`. Your library is mounted read-only, while metadata and generated thumbnails are saved in `./data`.
To add a browser password prompt, uncomment `AUTH_USERNAME` and `AUTH_PASSWORD` in `docker-compose.yml`.
## Run Without Docker
```bash
npm start
```
Optional environment variables:
```bash
HOST=127.0.0.1
PORT=3000
LIBRARY_DIR=/path/to/Library
DATA_DIR=/path/to/private-library-data
AUTH_USERNAME=viewer
AUTH_PASSWORD=change-me
```
Set `HOST=0.0.0.0` only when you intentionally want the app reachable from other machines on the network. Use `AUTH_USERNAME` and `AUTH_PASSWORD` before exposing it beyond localhost.
Thumbnail generation requires `ffmpeg` on the host. Docker includes it.
## Metadata Storage
Metadata is stored in SQLite at:
```text
data/library.sqlite
```
If an older `data/metadata.json` file exists, the app imports it into SQLite on startup without deleting the JSON file.
## Metadata Fields
Use the app to edit:
- display title
- short description
- thumbnail path or URL
The `Thumbnail` button extracts a frame from the first video in a title and stores it under `data/thumbnails`.
## Privacy Notes
- No external metadata lookup is performed.
- Optional Basic Auth is available through `AUTH_USERNAME` and `AUTH_PASSWORD`.
- Do not expose this container directly to the public internet.