- Add group_name column to teams table for mapping teams to OBS groups - Create API endpoints for group creation (/api/createGroup) and bulk sync (/api/syncGroups) - Update teams UI with group status display and creation buttons - Implement automatic group assignment when adding streams - Add comprehensive OBS setup documentation (docs/OBS_SETUP.md) - Fix team list spacing issue with explicit margins - Update OBS client with group management functions - Add database migration script for existing deployments 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
---|---|---|
.forgejo/workflows | ||
.github/workflows | ||
app | ||
components | ||
docs | ||
files | ||
lib | ||
public | ||
scripts | ||
styles | ||
types | ||
.eslintrc.json | ||
.gitignore | ||
CLAUDE.md | ||
config.js | ||
jest.config.js | ||
jest.setup.js | ||
middleware.ts | ||
next.config.ts | ||
package-lock.json | ||
package.json | ||
postcss.config.js | ||
postcss.config.mjs | ||
README.md | ||
tailwind.config.js | ||
tailwind.config.ts | ||
testObs.js | ||
tsconfig.json |
OBS Source Switcher Plugin UI
A professional Next.js web application for controlling multiple OBS Source Switchers with real-time WebSocket integration and modern glass morphism UI.
Features
- Multi-Screen Source Control: Manage 7 different screen positions (large, left, right, and 4 corners)
- Real-time OBS Integration: WebSocket connection with live status monitoring
- Team & Stream Management: Organize streams by teams with full CRUD operations
- Modern UI: Glass morphism design with responsive layout
- Professional Broadcasting: Audio routing, scene management, and live status indicators
- Dual Integration: WebSocket API + text file monitoring for maximum compatibility
Quick Start
npm install
npm run dev
Open http://localhost:3000 to access the control interface.
Configuration
Environment Variables
Create .env.local
in the project root:
# File storage directory (optional, defaults to ./files)
FILE_DIRECTORY=C:\\OBS\\source-switching
# OBS WebSocket settings (optional, these are defaults)
OBS_WEBSOCKET_HOST=127.0.0.1
OBS_WEBSOCKET_PORT=4455
OBS_WEBSOCKET_PASSWORD=your_password_here
# Security (IMPORTANT: Set in production)
API_KEY=your_secure_api_key_here
Security Setup
⚠️ IMPORTANT: Set API_KEY
in production to protect your OBS setup from unauthorized access.
Generate a secure API key:
# Generate a random 32-character key
openssl rand -hex 32
Without an API key, anyone on your network can control your OBS streams.
OBS Source Switcher Setup
- In OBS, configure Source Switcher properties
- Enable "Current Source File" at the bottom
- Point to one of the generated text files (e.g.,
large.txt
,left.txt
) - Set read interval to 1000ms
- Sources will switch automatically when files change
Database Setup
The project includes an empty template database for easy setup:
# Option 1: Use template database directly (development)
# Database will be created in ./files/sources.db
npm run create-sat-summer-2025-tables
# Option 2: Set up custom database location (recommended)
# 1. Copy the template database
cp files/sources.template.db /path/to/your/database/sources.db
# 2. Set environment variable in .env.local
echo "FILE_DIRECTORY=/path/to/your/database" >> .env.local
# 3. Create tables in your custom database
npm run create-sat-summer-2025-tables
Template Database: The repository includes files/sources.template.db
with the proper schema but no data. Your local development database (sources.db
) is automatically ignored by git to prevent committing personal data.
Development Commands
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run type-check # TypeScript validation
Architecture
- Frontend: Next.js 15 with React 19 and TypeScript
- Backend: Next.js API routes with SQLite database
- OBS Integration: WebSocket connection + text file monitoring
- Styling: Custom CSS with glass morphism and Tailwind utilities
- CI/CD: Forgejo workflows with self-hosted runners
API Endpoints
GET /api/streams
- List all streamsPOST /api/addStream
- Create new stream and OBS sourcePOST /api/setActive
- Set active stream for screen positionGET /api/obsStatus
- Real-time OBS connection statusGET /api/teams
- Team management
See CLAUDE.md
for detailed architecture documentation.