[English](#english) | [Deutsch](#deutsch) --- # Twitch4SteamDeck > **Disclaimer:** This app was vibe coded with Claude Code— architecture and structure were planned together with AI, and all implementation was done through prompts. Not a single line was written by hand. Twitch client for the Steam Deck with Big-Screen UI, full gamepad control, and VOD playback with resume. ## Screenshots

Browse screen Following screen

Channel screen Playback overlay

Chapter panel

## Features - **Live Streams** — Playback via Streamlink + hls.js (HTML5 video, no external player) - **VOD Playback** — Watch recordings with automatic resume at last position - **VOD Chapters** — Browse and jump to chapters within VODs; view count displayed on VOD cards - **Video Quality Selection** — Change stream quality on-the-fly during playback (Live and VOD); available qualities fetched dynamically via Streamlink; session-only, defaults to `best` - **Direct Stream Start** — Press A on any stream card in Browse/Top Streams/Category to start immediately without leaving the browse view - **Gamepad Control** — Full control via Steam Deck controller, Xbox, or PlayStation gamepad (USB and Bluetooth), including Gaming Mode (reads Linux evdev `/dev/input/event*` directly with standardized BTN_* codes — works with any controller regardless of driver) - **Big-Screen UI** — 10-foot interface optimized for TV/deck; fills the screen on Steam Deck and on external TVs when docked (React + Electron) - **Twitch Login** — Device Code Flow with QR code (no browser required) - **Following** — Live status and overview of followed streamers - **Category Browser** — Browse Twitch categories and top streams - **UI Language Support** — Switch the interface between German and English in Settings; the selection is stored locally - **Language-Filtered Streams** — Top streams filtered by German/English - **Account Screen** — User profile, app version, logout - **VOD History** — Local SQLite database with playback history and progress - **Hardware Decoding** — GPU-accelerated video via Chromium's built-in VA-API on Steam Deck - **Quit Dialog** — Confirm quit via Xbox/Start button - **Logout Confirmation** — Confirmation dialog before logging out ## Architecture ``` Electron (Main Process) ├── Auth -- Twitch Device Code Flow + token management (Electron safeStorage) ├── Helix Client -- Twitch API (followed channels, streams, VODs, categories, chapters via GQL) ├── Playback -- Streamlink --stream-url → HLS URL → IPC event to renderer ├── Gamepad -- Linux evdev (/dev/input/event*), discovered via js*, BTN_* codes └── History -- SQLite (better-sqlite3) for VOD history + resume Shared (src/shared/) └── Types -- Shared types between main and renderer (PlaybackEvent, HlsUrlPayload, …) Electron (Renderer) ├── React UI -- Screens: Login, Following, Browse, Category, Channel, │ StreamList (DE/EN), Settings, Account ├── i18n -- German/English message catalogs + translation hook ├── VideoPlayer -- hls.js