Streaming Front End to Switch between Jellyfin, Plex, Steam Link, and other apps. Like Roku or AppleTV, but open source.
  • Svelte 48.1%
  • TypeScript 27.4%
  • Rust 22.8%
  • HTML 1.1%
  • CSS 0.6%
Find a file
Brian McGonagill 1e7feff96b feat: complete matrix-based navigation system overhaul (Session 27)
- Replaced zone-based spatial navigation with explicit navigation matrices
- Navigation store now uses setNavigationMap() for explicit up/down/left/right targets
- Removed row/col/zone props from Focusable component - now only requires id
- Home page: converted app tiles to flexible CSS grid layout
- Home page: moved Continue Watching section below app grid
- Home page: settings button focusable via D-pad (UP from top row)
- SystemSettings: explicit field ordering navigation
- ServerBrowser: navigation matrix for sidebar and media grid
- AddServer: navigation matrix for wizard steps
- ServerSettings: navigation matrix for settings fields
- Updated all components to use new matrix-based navigation
- Fixed remote control navigation with key normalization
- Fixed app tile layout with large centered logos
- Fixed ServerBrowser capture-phase event listener blocking remote input
- Fixed Home page category navigation for non-home categories
- Fixed server status check to work without health check
- Fixed gamepad API error with null check
- Fixed ServerBrowser navigation timing with proper async/await
- All 87 tests passing
2026-09-07 18:55:16 -05:00
public feat: complete matrix-based navigation system overhaul (Session 27) 2026-09-07 18:55:16 -05:00
src feat: complete matrix-based navigation system overhaul (Session 27) 2026-09-07 18:55:16 -05:00
src-tauri feat: complete TV UI redesign, on-screen keyboard & content discovery (Sessions 21-24) 2026-08-30 16:57:48 -05:00
.gitignore feat: complete TV UI redesign, on-screen keyboard & content discovery (Sessions 21-24) 2026-08-30 16:57:48 -05:00
AGENTS.md feat: complete matrix-based navigation system overhaul (Session 27) 2026-09-07 18:55:16 -05:00
APP_MANAGEMENT.md feat: complete Phase 7 - App Management & Home Screen Polish 2026-07-11 19:50:58 -05:00
GAME_STREAMING.md feat: complete Phase 6 - Game Streaming (Steam + Moonlight/Sunshine) 2026-07-11 18:59:33 -05:00
Get_streaming-0.1.0-1.x86_64.rpm feat: complete matrix-based navigation system overhaul (Session 27) 2026-09-07 18:55:16 -05:00
Get_streaming_0.1.0_amd64.AppImage feat: complete matrix-based navigation system overhaul (Session 27) 2026-09-07 18:55:16 -05:00
index.html feat: complete phases 1-3 - TV streaming hub foundation 2026-07-11 18:24:16 -05:00
LICENSE Initial commit 2026-07-11 19:07:57 +00:00
package.json feat: complete phases 1-3 - TV streaming hub foundation 2026-07-11 18:24:16 -05:00
PLAYBACK.md feat: complete Phase 3 media playback with MPV integration 2026-07-11 18:50:10 -05:00
pnpm-lock.yaml feat: complete phases 1-3 - TV streaming hub foundation 2026-07-11 18:24:16 -05:00
Product_Requirements.md feat: complete phases 1-3 - TV streaming hub foundation 2026-07-11 18:24:16 -05:00
README.md feat: complete TV UI redesign, on-screen keyboard & content discovery (Sessions 21-24) 2026-08-30 16:57:48 -05:00
svelte.config.js feat: complete phases 1-3 - TV streaming hub foundation 2026-07-11 18:24:16 -05:00
the_plan.md feat: complete phases 1-3 - TV streaming hub foundation 2026-07-11 18:24:16 -05:00
tsconfig.json feat: complete phases 1-3 - TV streaming hub foundation 2026-07-11 18:24:16 -05:00
tsconfig.node.json feat: complete phases 1-3 - TV streaming hub foundation 2026-07-11 18:24:16 -05:00
vite.config.ts feat: complete TV UI redesign, on-screen keyboard & content discovery (Sessions 21-24) 2026-08-30 16:57:48 -05:00

Get_streaming

A cinematic TV UI streaming hub for self-hosted media servers and game streaming. Like Roku or AppleTV, but open source and designed for your self-hosted media.

Features

Current Features

  • Cinematic TV UI: Modern 10-foot interface with:
    • Left sidebar navigation (Home, Movies, TV Shows, Games, Music, Photos)
    • Horizontal content rows with poster cards
    • Dynamic backdrop pulled from Jellyfin
    • Cyan/teal accent color scheme
    • Controller button hints (A/B/X)
  • Multi-Server Support: Add and manage multiple Jellyfin, Plex, Emby, Steam, and Moonlight/Sunshine servers
  • Real Jellyfin Integration: Full API support for browsing libraries, viewing metadata, and playing media
  • MPV Media Player: Full-featured video playback with:
    • Play/pause, seek, volume controls
    • Quality selection (Auto/4K/1080p/720p/480p)
    • Keyboard shortcuts
    • Auto-hiding controls
    • Playback position persistence
    • Resume across sessions
  • Game Streaming: Stream games from your network:
    • Steam Remote Play integration
    • Moonlight/Sunshine support
    • Quality settings (resolution, bitrate, FPS)
    • Controller support
  • Smart App Organization:
    • Auto-assign apps to categories (Jellyfin→Media, Steam→Games)
    • Manual category override
    • Poster cards with actual media/game artwork
  • App Management:
    • Drag-and-drop tile reordering
    • Long-press edit mode
    • Server health monitoring
    • Per-app settings persistence
    • System settings (network, display, input, SSH)
  • Navigation: Keyboard (arrow keys) and gamepad (D-pad) support
  • Connector Framework: Extensible plugin system for adding new services
  • Secure Storage: AES-256-GCM encryption for credentials
  • Cross-Platform: Built with Tauri (Rust backend, Svelte frontend)

Planned Features

  • Plex and Emby full API integration
  • Continue Watching row with progress tracking
  • Dynamic backdrop from multiple sources
  • Multi-user support
  • Linux distribution for dedicated HTPC

Tech Stack

  • Frontend: Svelte 5 + TypeScript
  • Backend: Tauri 2 (Rust)
  • Database: SQLite
  • Media Player: MPV
  • Styling: Custom CSS with TV-optimized design system

Requirements

Development

  • Node.js 18+
  • pnpm
  • Rust (latest stable)
  • System libraries for Tauri (see below)

Runtime

  • MPV: Must be installed for media playback
    # Ubuntu/Debian
    sudo apt-get install mpv
    
    # macOS
    brew install mpv
    
    # Windows
    # Download from https://mpv.io/installation/
    

Tauri System Dependencies

Ubuntu/Debian

sudo apt-get install \
  libwebkit2gtk-4.1-dev \
  build-essential \
  curl \
  wget \
  file \
  libxdo-dev \
  libssl-dev \
  libayatana-appindicator3-dev \
  librsvg2-dev

macOS

# No additional dependencies required

Windows

# No additional dependencies required

Installation

# Clone the repository
git clone <repository-url>
cd Get_streaming

# Install dependencies
pnpm install

# Run development server
pnpm tauri dev

# Build for production
pnpm tauri build

Usage

Adding a Jellyfin Server

  1. Launch the app
  2. Click "Add Server" on the home screen
  3. Select "Jellyfin" as the server type
  4. Enter your server details:
    • Host: IP address or hostname (e.g., 192.168.1.100 or jellyfin.local)
    • Port: Default is 8096
    • Protocol: HTTP or HTTPS
  5. Enter your Jellyfin username and password
  6. Click "Connect"

Browsing Media

  1. Click on a server tile from the home screen
  2. Select a library from the sidebar (Movies, TV Shows, Music, etc.)
  3. Browse items in the grid
  4. Click on an item to start playback

Media Playback

  • Space / K: Toggle play/pause
  • Left/Right Arrows: Seek backward/forward 10 seconds
  • Up/Down Arrows: Increase/decrease volume
  • M: Toggle mute
  • Escape: Close player (position is saved automatically)

App Management

Tile Reordering

  1. Long-press a tile (500ms) or click "Edit" button to enter edit mode
  2. Drag tiles to reorder (mouse/touch) or use arrow keys (gamepad)
  3. Click "Done" or press Escape to exit edit mode
  4. Layout is automatically saved to the database

Server Health Monitoring

  • Server tiles show status indicators:
    • 🟢 Online: Server is reachable
    • 🔴 Offline: Server is not reachable
    • 🟡 Connecting: Checking server status
    • Error: Server returned an error
  • Health is automatically checked when the home screen loads
  • Click "Refresh" in server settings to manually check health

Per-App Settings

  • Right-click a tile or long-press to open context menu
  • Select "Settings" to configure app-specific options:
    • Jellyfin: Quality, transcoding, direct play
    • Steam: Streaming quality, bandwidth limit, hardware encoding
    • Moonlight: Resolution, FPS, bitrate, video/audio codecs
  • Settings are persisted to the database and restored on next launch

System Settings

Access system settings by clicking the gear icon in the top-right corner:

Network

  • Configure hostname, IP address, DNS servers
  • Enable/disable DHCP

Display

  • Set resolution (720p, 1080p, 1440p, 4K)
  • Adjust refresh rate (30Hz, 60Hz, 120Hz)
  • Configure overscan
  • Select theme (dark/light)

Input

  • Enable/disable gamepad, keyboard, remote control
  • Configure controller mapping (Xbox, PlayStation, Nintendo)

System

  • Set device name
  • Enable/disable SSH access
  • Toggle auto-updates
  • View system information (version, OS, architecture, memory, storage)

Navigation

  • Arrow Keys: Navigate between UI elements
  • Enter: Select focused element
  • Escape / Backspace: Go back (when not in text input)
  • Gamepad D-pad: Navigate
  • Gamepad A: Select
  • Gamepad B: Go back

Project Structure

Get_streaming/
├── src/                          # Svelte frontend
│   ├── lib/
│   │   ├── components/          # Reusable UI components
│   │   │   ├── VideoPlayer.svelte
│   │   │   ├── AppTile.svelte
│   │   │   ├── ContextMenu.svelte
│   │   │   └── ServerSettings.svelte
│   │   ├── connectors/          # Service connectors
│   │   │   ├── jellyfin.ts
│   │   │   ├── steam.ts
│   │   │   ├── moonlight.ts
│   │   │   ├── base.ts
│   │   │   └── registry.ts
│   │   ├── pages/               # Main pages
│   │   │   ├── Home.svelte
│   │   │   ├── ServerBrowser.svelte
│   │   │   ├── AddServer.svelte
│   │   │   └── SystemSettings.svelte
│   │   ├── stores/              # Svelte stores
│   │   └── api.ts               # Tauri API wrappers
│   └── App.svelte
├── src-tauri/                    # Rust backend
│   ├── core/                    # Core library
│   │   └── src/
│   │       ├── db.rs            # Database operations
│   │       ├── jellyfin.rs      # Jellyfin API client
│   │       ├── steam.rs         # Steam Remote Play client
│   │       ├── sunshine.rs      # Sunshine API client
│   │       ├── player.rs        # MPV player backend
│   │       └── crypto.rs        # Encryption
│   └── src/
│       ├── commands/            # Tauri commands
│       └── lib.rs
└── public/                       # Static assets

Development

Running Tests

# Frontend tests
pnpm test

# Backend tests
cd src-tauri/core
cargo test

Building

# Development build with hot reload
pnpm tauri dev

# Production build
pnpm tauri build

The built app will be in src-tauri/target/release/.

Documentation

Contributing

This project is in active development. See the_plan.md for the development roadmap.

License

See LICENSE file for details.

Acknowledgments