# Castarr

**Live-TV auf dem Fernseher, eingerichtet in einer Minute — alles läuft übers Handy.**

Castarr ist eine App für Google TV / Android TV. Auf dem Fernseher muss nie
etwas getippt werden: Zum Einrichten scannt man einmal einen QR-Code mit dem
Handy, meldet sich dort an — fertig. Danach zappt man mit der normalen
TV-Fernbedienung oder steuert alles bequem vom Handy aus.

| Senderliste | Player |
| --- | --- |
| ![Senderliste](docs/screenshots/senderliste.png) | ![Player](docs/screenshots/player.png) |

| Nummerntasten | Einrichtung |
| --- | --- |
| ![Nummerntasten](docs/screenshots/nummerntasten.png) | ![Willkommens-Bildschirm](docs/screenshots/willkommen.png) |

## Was die App kann

- **Senderliste mit Logos und Programm** — was gerade läuft, wie lange noch,
  was danach kommt. Gruppen und Favoriten links, Sender rechts.
- **Zappen wie früher** — Nummerntasten auf der Fernbedienung schalten direkt
  um (mit großer Anzeige, welcher Sender gleich kommt), hoch/runter blättert
  durch die Sender.
- **Aufgeräumter Player** — OK-Taste zeigt Sendung, Zeiten und Fortschritt,
  dazu Pause/Stopp-Buttons und Tonspur-Wahl, wenn der Sender mehrere hat.
  Blendet sich von selbst wieder aus.
- **Handy als Fernbedienung** — QR-Code in den Einstellungen scannen, schon
  hat man Senderliste, Suche, Lautstärke und Favoriten im Handy-Browser.
  Keine App-Installation nötig.
- **Favoriten** — OK auf einem Sender gedrückt halten, Stern gesetzt. Die
  Favoriten gelten pro Person und sind auf jedem Gerät dieselben.
- **Updates aus der App heraus** — unter Einstellungen → App genügt ein
  Klick, wenn eine neue Version bereitsteht.

## Installation auf dem Fernseher

1. Auf dem Google TV die App **Downloader** installieren (oder einen anderen
   Weg nutzen, eine APK-Datei zu öffnen).
2. Diese Adresse eingeben:
   `git.beckm4nn.net/be-nj/castarr/raw/branch/apk/castarr.apk`
3. Installation bestätigen („Unbekannte Quellen" für Downloader erlauben,
   wenn der Fernseher fragt).
4. Castarr starten und den drei Schritten auf dem Bildschirm folgen:
   QR-Code scannen, auf dem Handy Server angeben und anmelden — den Rest
   macht der Fernseher.

Danach hält sich die App über den eingebauten Updater selbst aktuell.

---

## Für Technikinteressierte

Native Kotlin-App (Jetpack Compose for TV, Media3/ExoPlayer für HLS und
MPEG-TS). Als Backend dient ein [Dispatcharr](https://github.com/be-nj/Dispatcharr)-Fork
mit OIDC-Unterstützung: Anmeldung per Device Authorization Grant (der
Fernseher zeigt QR + Code, bestätigt wird am Handy beim Identity Provider),
API-Zugriff per Bearer-Token, Favoriten und Ausgabeprofile pro Nutzer.
Ohne Dispatcharr funktioniert auch jede M3U-Playlist (+ optionales XMLTV)
als generische Quelle — ErsatzTV, Threadfin, Tunarr, einfache Playlists.

Die Handy-Fernbedienung serviert der Fernseher selbst (eingebetteter
HTTP/WebSocket-Server, Kopplung per QR-Token mit ratenlimitiertem
Zahlencode als Fallback). Physische Mediatasten und Google Assistant
funktionieren über eine Media3 MediaSession.

### Selbst bauen

JDK 17+ und Android SDK (Platform 35) erforderlich; eine passende
JDK-Toolchain wird automatisch aufgelöst (foojay).

```
./gradlew assembleDebug     # Debug-APK
./gradlew assembleRelease   # signiert, wenn CASTARR_STORE_*-Env gesetzt ist
```

APK-Ausgabe: `app/build/outputs/apk/<variant>/`. Die Releases hier im Repo
sind signiert; über einem Debug-Build muss einmal deinstalliert werden
(Signaturwechsel). Updates bezieht die App über die Release-API dieses
Repos, die APK selbst liegt auf dem Branch `apk`.

Architektur-Notizen: [CONTEXT.md](CONTEXT.md) und [docs/adr/](docs/adr/).
