Skip to content

vertopolkaLF/split-chat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

29 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

SplitChat

SplitChat is a modern web application for viewing multiple live streaming chat rooms simultaneously. Perfect for multi-streaming enthusiasts, moderators, and viewers who want to keep track of multiple conversations at once.

SplitChat Preview

โœจ Features

Core Functionality

  • Multi-platform Support: View chats from Twitch, YouTube, and Kick simultaneously
  • Unlimited Chat Panels: Display up to 10+ chat rooms side by side (technically unlimited)
  • Auto-Detection: Automatically detects current YouTube live streams by username
  • Responsive Design: Adjust the width of each chat panel with intuitive drag-and-drop
  • Smart Performance: Automatically unloads chats when the tab becomes inactive to save resources

User Experience

  • Light/Dark Mode: Switch between light, dark, and system themes
  • Persistent Settings: Everything is saved locally in your browser
  • Preset System: Quick-switch between predefined chat configurations via URL
  • Real-time Updates: Live chat updates with smooth animations
  • Mobile Friendly: Responsive design that works on all devices

Technical Features

  • YouTube API Integration: Real-time lookup of live streams using YouTube Data API v3
  • Caching System: Intelligent caching to reduce API calls and improve performance
  • Privacy Focused: All data stays in your browser, no account required
  • Modern Tech Stack: Built with Nuxt 4, Vue 3, and TypeScript

๐Ÿš€ Quick Start

Prerequisites

  • Node.js 18+
  • Package manager: pnpm, npm, yarn, or bun

Installation

  1. Clone the repository:
git clone <repository-url>
cd theo-chat
  1. Install dependencies:
# Using pnpm (recommended)
pnpm install

# Or using npm
npm install

# Or using yarn
yarn install

# Or using bun
bun install
  1. Set up environment variables:
cp .env.example .env
  1. Get a YouTube Data API v3 key (optional for auto-detect current livestream by username):

    • Go to Google Cloud Console
    • Create a new project or select existing
    • Enable YouTube Data API v3
    • Create credentials (API Key)
    • Add the key to your .env file:
    YT_API_KEY=your_youtube_api_key_here
    
  2. Start the development server:

# Using pnpm
pnpm dev

# Or using npm
npm run dev

# Or using yarn
yarn dev

# Or using bun
bun run dev
  1. Open http://localhost:3000 in your browser

๐Ÿ“– Usage

Adding Chat Rooms

  1. Click the settings button (gear icon) at the bottom of the screen
  2. Click "Add chat" to create a new chat panel
  3. Enter a streamer username or URL:
    • Twitch: streamername or https://twitch.tv/streamername
    • YouTube: @username or https://youtube.com/@username
    • Kick: streamername or https://kick.com/streamername

Supported Input Formats

Twitch:

  • ninja
  • https://twitch.tv/ninja
  • https://www.twitch.tv/ninja

YouTube:

  • @PewDiePie
  • PewDiePie (automatically treated as @handle)
  • UC-lHJZR3Gqxm24_Vd_AJ5Yw (channel ID)
  • https://youtube.com/@PewDiePie
  • https://youtube.com/channel/UC-lHJZR3Gqxm24_Vd_AJ5Yw

Kick:

  • xqc
  • https://kick.com/xqc

Adjusting Layout

  • Resize panels: Drag the divider between chat panels to adjust widths
  • Equalize widths: Double-click any divider to equalize all panel widths
  • Theme toggle: Use the theme buttons in settings to switch between light/dark mode

Performance Settings

  • Unload on blur: Configure automatic unloading of YouTube chats when tab becomes inactive
  • Platform selection: Choose which platforms should unload when inactive

๐ŸŽฏ Presets

SplitChat includes built-in presets for quick setup:

Available Presets

  • theo - Theo's Twitch and YouTube chats
  • empty - Clear all settings

Using Presets

Access presets via URL:

http://localhost:3000/theo
http://localhost:3000/empty

๐Ÿ› ๏ธ Development

Project Structure

โ”œโ”€โ”€ app/
โ”‚   โ””โ”€โ”€ app.vue                 # Main application component
โ”œโ”€โ”€ components/
โ”‚   โ”œโ”€โ”€ ChatEntryInput.vue      # Chat input component
โ”‚   โ”œโ”€โ”€ PlatformMultiPicker.vue # Platform selection
โ”‚   โ”œโ”€โ”€ SettingsModal.vue       # Settings modal
โ”‚   โ””โ”€โ”€ UiSelect.vue           # UI select component
โ”œโ”€โ”€ server/
โ”‚   โ””โ”€โ”€ api/
โ”‚       โ””โ”€โ”€ youtube/
โ”‚           โ””โ”€โ”€ live.get.ts     # YouTube API integration
โ”œโ”€โ”€ presets/
โ”‚   โ””โ”€โ”€ index.ts               # Preset definitions
โ””โ”€โ”€ public/
    โ”œโ”€โ”€ sounds/                # Sound effects
    โ””โ”€โ”€ images/                # Static assets

Building for Production

# Build the application
pnpm build

# Preview production build locally
pnpm preview

Environment Variables

Create a .env file with:

# YouTube Data API v3 Key (required for YouTube live detection)
YT_API_KEY=your_youtube_api_key_here

๐Ÿ”ง Configuration

Nuxt Configuration

The app uses Nuxt 4 with the following modules:

  • @nuxt/icon - Icon support
  • @nuxtjs/color-mode - Theme switching
  • @nuxt/fonts - Font management
  • @formkit/auto-animate - Smooth animations

Runtime Configuration

YouTube API key is configured in nuxt.config.ts:

runtimeConfig: {
  youtubeApiKey: process.env.YT_API_KEY
}

๐Ÿ“ API Reference

YouTube Live Detection

Endpoint: GET /api/youtube/live

Query Parameters:

  • input - Streamer username, handle, or URL

Response:

{
  "videoId": "dQw4w9WgXcQ",
  "reason": "optional reason for null videoId"
}

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

๐Ÿ“„ License

This project is open source and available under the MIT License.

๐Ÿ™ Acknowledgments

  • Built with Nuxt
  • Icons from Iconify
  • YouTube Data API v3 integration
  • Inspired by the streaming community's need for better multi-chat tools

Happy streaming! ๐ŸŽฎ๐Ÿ“บ

About

Justice for Youtube chat!

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published