A dark, cinematic web interface for Tunarr channels. Browse your custom TV lineup, check what's on, and watch live streams — all from your browser.
- Channel grid — all your Tunarr channels at a glance, with live "now playing" info and progress bars
- TV Guide — EPG grid view with current and upcoming programs across all channels
- Live player — HLS stream playback via Vidstack
- Auto-refresh — now-playing data updates every 30s, guide every 60s
- Vite + React 19 + TypeScript
- Tailwind CSS v4
- Vidstack for HLS video playback
- React Router v7
- Nginx for serving the SPA and proxying Tunarr API calls at runtime
just install # install deps + create .env from example
# edit .env — set TUNARR_URL to your Tunarr instance
just dev # start Vite dev server on http://localhost:5173The dev server proxies /tunarr/ to TUNARR_URL, matching the production Nginx behaviour.
| Variable | Description | Example |
|---|---|---|
TUNARR_URL |
Base URL of your Tunarr instance | http://tunarr:8000 |
# Using the published image
cp .env.example .env
# edit .env
just upThe container runs Nginx on port 8080. Point your reverse proxy there.
just build # builds Docker image tagged totoro-tv
just run # runs it on http://localhost:8080Pushing to main triggers a Forgejo Actions workflow that builds and pushes the Docker image to forgejo.patilla.es/patillacode/totoro-tv:latest. Version tags (v1.2.3) additionally push a versioned tag.
Requires a REGISTRY_TOKEN secret in the repository settings.
just release 1.0.0 # tags v1.0.0 and pushes — triggers versioned buildjust # list all recipes
just dev # dev server
just build # local Docker build
just run # build + run container
just up # pull published image + start
just down # stop
just restart # pull + restart
just logs # tail logs
just release X # tag + push vX
just clean # remove dist/ and node_modules/