Skip to content

kernoeb/secousse

Repository files navigation

Secousse

An open-source alternative Twitch desktop client, built with Tauri 2, React, TypeScript, and Rust.

Secousse is French for "twitch" (as in a sudden movement).

Secousse Screenshot

Features

  • Live Stream Playback - HLS video streaming with quality selection
  • Multi-stream Grid - Watch up to 4 streams at once in a split-screen layout; audio routes to the focused tile
  • Pop-out Windows - Detach any stream into an independent window with optional always-on-top
  • Chat - Real-time chat with emote support (Twitch, 7TV, BTTV, FFZ)
  • Authentication - OAuth login to access your followed channels and send chat messages
  • Follow/Unfollow - Manage your followed channels directly from the app
  • Browse - Discover top live streams
  • Search - Find channels quickly

Tech Stack

  • Frontend: React 19, TypeScript, Tailwind CSS v4, Vite
  • Backend: Rust with Tauri 2
  • Video: HLS.js with custom Tauri loader for CORS bypass
  • Chat: IRC WebSocket connection
  • APIs: Twitch GQL (public data) + Helix API (authenticated operations)

Development

Prerequisites

Setup

# Install dependencies
bun install

# Run in development mode
bun run tauri dev

# Build for production
bun run tauri build

Project Structure

secousse/
├── src/                    # React frontend
│   ├── App.tsx            # Main application component (state orchestrator)
│   ├── PopoutApp.tsx      # Minimal shell for pop-out stream windows
│   ├── components/        # Navbar, Sidebar, VideoPlayer, StreamGrid, Chat, StreamInfo, BrowseGrid, ChannelActionButtons
│   ├── hooks/             # useAuth, useChat, useEmotes, useSearch, useTopStreams, useUserInfo
│   ├── lib/               # utils (persistence, formatters), spamSim (dev tool)
│   ├── TauriHlsLoader.ts  # Custom HLS loader for Tauri
│   └── types.ts           # TypeScript type definitions
├── src-tauri/             # Rust backend
│   └── src/
│       ├── lib.rs         # Tauri commands, OAuth callback server, app setup
│       ├── twitch.rs      # Twitch API client (GQL + Helix)
│       ├── chat.rs        # IRC WebSocket chat handler
│       └── emotes.rs      # 7TV/BTTV/FFZ emote fetching
└── package.json

Acknowledgments

This project is inspired by Xtra, an excellent open-source Twitch client for Android. Thank you to the Xtra team for their work!

License

MIT

About

Open-source alternative Twitch desktop client with multi-stream grid and pop-out windows. Built with Tauri 2, React, TypeScript, and Rust.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages