# Kaizoku-Styled Private Anime Library A small local web app for browsing a folder-based private video collection. The interface follows Kaizoku's dark purple glass-panel design, including the same card gradients, rounded controls, cover fallback treatment, and accent colors. The app remains a standalone private library browser and 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.