Skip to content

EuphoriaDevelopmentOrg/StreamLink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

StreamLink

StreamLink is a cross-platform Xbox streaming client scaffold with a shared Nuxt 4 core and wrapper targets for desktop (Tauri) and mobile (Capacitor).

Stack

  • Frontend and API core: Nuxt 4, Nitro, TypeScript, Tailwind CSS, Pinia
  • Security and platform: nuxt-security, @vite-pwa/nuxt
  • Data and auth baseline: Drizzle ORM + local SQLite (@libsql/client), better-auth
  • Desktop: Tauri v2 wrapper for Windows/Linux
  • Mobile: Capacitor wrapper for Android/iOS

Workspace Layout

  • apps/web shared application core
  • apps/desktop Tauri desktop wrapper
  • apps/mobile Capacitor mobile wrapper

Quick Start

  1. Install dependencies:
    • pnpm install
  2. Run shared web app:
    • pnpm --filter @streamlink/web db:migrate
    • pnpm dev
  3. Run desktop shell:
    • pnpm desktop:dev
  4. Sync mobile shell assets to native projects:
    • pnpm mobile:sync

Native Build + Run

Desktop (Windows/Linux)

  • Dev runtime: pnpm desktop:dev
  • Release build: pnpm desktop:build

If Rust is installed under ~/.cargo/bin, the desktop wrapper scripts automatically prepend that path before invoking Tauri.

Android (Windows/Linux/macOS)

  1. Sync web assets: pnpm mobile:sync
  2. Build debug APK: pnpm mobile:build:android
  3. Install and launch on connected device/emulator: pnpm mobile:run:android
  4. Open native project in Android Studio: pnpm mobile:open:android

APK output path: apps/mobile/android/app/build/outputs/apk/debug/app-debug.apk

iOS

  • iOS wrapper files can be generated from this repo, but building/running iOS requires macOS + Xcode.

Environment

Copy apps/web/.env.example to apps/web/.env and fill values.

Local Database

  • Default local DB path: apps/web/.data/streamlink.sqlite
  • Env var: DATABASE_URL=file:./.data/streamlink.sqlite
  • No external database service is required.

Xbox Setup

  • Device-code linking works with defaults and does not require private secrets.
  • Optional browser OAuth mode requires:
    • XBOX_CLIENT_ID
    • XBOX_REDIRECT_URI
    • optional XBOX_CLIENT_SECRET
  • OAuth callback route is GET /api/integrations/xbox/link/callback.
  • Device-code routes:
    • POST /api/integrations/xbox/link/device/start
    • POST /api/integrations/xbox/link/device/complete
  • Optional advanced stream negotiation:
    • XBOX_XSTS_RELYING_PARTY (defaults to http://xboxlive.com)
    • XBOX_STREAM_SESSION_ENDPOINT (custom stream-session broker endpoint)

Account Auth (Better Auth)

  • Better Auth routes are mounted at /api/auth/*.
  • Email/password auth endpoints are available out of the box (/api/auth/sign-up/email, /api/auth/sign-in/email, /api/auth/sign-out).
  • Integration routes now use authenticated Better Auth user identities (not anonymous cookie ids).

Notes

  • Xbox integration includes browser OAuth PKCE, device-code linking, unlink, token refresh, XBL/XSTS exchange, and stream session orchestration persistence.
  • Desktop wrapper now exposes bridge commands for controller-state and haptics events.
  • Media transport/player handling is still pending for full end-to-end video playback.
  • On Windows, reopen your terminal after installing toolchains so updated PATH/JAVA_HOME values are picked up.

About

Easily Stream your XBOX to your PC, Browser and Mobile!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

  •  

Packages

 
 
 

Contributors