No description
- TypeScript 47.7%
- JavaScript 42%
- Just 5.1%
- Dockerfile 2.1%
- CSS 1.4%
- Other 1.7%
|
Some checks failed
Build and publish Docker image / build-and-push (push) Failing after 2s
|
||
|---|---|---|
| .forgejo/workflows | ||
| nginx | ||
| public | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| docker-entrypoint.sh | ||
| Dockerfile | ||
| index.html | ||
| justfile | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
totoro-tv
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.
Features
- 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
Stack
- 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
Getting Started
Prerequisites
Development
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:5173
The dev server proxies /tunarr/ to TUNARR_URL, matching the production Nginx behaviour.
Configuration
| Variable | Description | Example |
|---|---|---|
TUNARR_URL |
Base URL of your Tunarr instance | http://tunarr:8000 |
Deployment
Docker (recommended)
# Using the published image
cp .env.example .env
# edit .env
just up
The container runs Nginx on port 8080. Point your reverse proxy there.
Build locally
just build # builds Docker image tagged totoro-tv
just run # runs it on http://localhost:8080
CI/CD
Pushing 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 build
Available recipes
just # 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/