Your ultimate streaming recording companion
🌐 Read this in other languages: 한국어 | English
🚀 Never miss your favorite streams again! Automatically record live streams from multiple platforms with a sleek, modern web dashboard.
A powerful web-based dashboard application for automated streaming recording using Streamlink. Built with modern technologies and designed for seamless stream management.
Streamlink Dashboard is a web application that automatically records and manages live streams from various streaming platforms. Users can set up scheduled jobs to automatically record streams from their favorite streamers and manage recorded files through a web dashboard.
| 🎥 Smart Recording | 📅 Auto Scheduling | 🖥️ Modern Dashboard |
|---|---|---|
| Multi-platform support Quality control Stream detection |
Flexible job management Custom intervals Strategy patterns |
React + Next.js 15 Real-time updates Mobile-friendly |
- 🔥 Streamlink-based: Rock-solid and efficient recording engine
- 🌍 Multi-platform Support: Twitch, YouTube, Sooplive, Chzzk(치지직)
- ⚙️ Platform-specific Optimization: Tailored Streamlink arguments for each platform
- 📺 Quality Control: Choose your preferred stream quality
- ⚡ APScheduler-powered: Enterprise-grade job scheduling
- 🎯 Strategy Pattern: Clean, extensible platform architecture
- 🛠️ Flexible Configuration: Quality, custom args, monitoring intervals
- 🔍 Auto Stream Detection: Smart periodic checks for live streams
- 🚀 Next.js 15 + TypeScript: Cutting-edge React stack
- 💅 Tailwind CSS: Beautiful, responsive design
- ⚡ Real-time Updates: Live recording status and progress
- 📱 Mobile-friendly: Works perfectly on all devices
- 💖 One-click Favorites: Mark your most important recordings
- 🛡️ Auto-protection: Favorites are safe from cleanup policies
- 🏷️ Easy Management: Organize and find your best content
- 🔧 Reusable Templates: Create once, apply everywhere
- 📊 Multiple Strategies: Time, count, or size-based cleanup
- 🎛️ Smart Priority: Protect favorites and recent files
- 🎯 Flexible Assignment: Mix and match policies per schedule
- 🚢 Docker-first: One-command deployment
- 🗃️ Built-in Database: No external dependencies
- 📈 Scalable Architecture: Easy to extend and customize
- 🔧 NAS-friendly: Perfect for Synology and QNAP
Python 3.10+ │ FastAPI │ Streamlink │ APScheduler │ SQLite
TypeScript │ Next.js 15 │ Tailwind CSS │ Zustand │ React Query
Docker │ SQLAlchemy │ Pydantic │ Alembic │ Uvicorn
| Component | Technology | Purpose |
|---|---|---|
| 🔧 Backend Framework | FastAPI | High-performance async API |
| 🎬 Recording Engine | Streamlink | Reliable stream recording |
| ⏰ Job Scheduler | APScheduler | Robust background tasks |
| 🗄️ Database | SQLite + SQLAlchemy | Lightweight, async ORM |
| ⚛️ Frontend Framework | Next.js 15 + TypeScript | Modern React with SSR |
| 🎨 UI Framework | Tailwind CSS + Headless UI | Beautiful, accessible components |
| 📦 State Management | Zustand | Simple, scalable state |
| 🔄 Data Fetching | TanStack Query | Smart server state management |
| 🐳 Deployment | Docker + Compose | Container-ready deployment |
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Next.js App │ │ FastAPI │ │ APScheduler │
│ (Frontend) │◄──►│ (Backend) │◄──►│ (Jobs) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ App Data │ │ SQLite DB │ │ Streamlink │
│ (Volume Mount) │ │ (Metadata) │ │ Process │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Platform Interface: Common interface that all platforms must implement
- Strategy Pattern: Stream URL acquisition strategy for each platform
- Plugin System: Plugin architecture for adding new platforms
- Twitch: Direct stream detection and recording
- YouTube: Live stream support with optimized settings
- Sooplive: Korean streaming platform support
- Chzzk (치지직): Naver's streaming platform support
- Extensible Architecture: Easy addition of new platforms via strategy pattern
Managed through the web dashboard:
- Twitch: Stream quality and custom Streamlink arguments
- YouTube: Live stream settings and API configuration
- Sooplive: Korean platform-specific settings
- Chzzk: Naver streaming platform support
- Per-schedule Settings: Quality, custom arguments, rotation policies
- Monitoring Intervals: Configurable stream check frequency
- File Management: Automatic naming and organization
- Reusable Policies: Create once, apply to multiple schedules
- Multiple Conditions: Age, count, and size-based cleanup
- Smart Cleanup: Preserve favorites and recent files
🎯 Get up and running in 2 minutes!
⚠️ Requirements: Python 3.10+, Linux/macOS/Docker environment
# 1️⃣ Create data directory and run
mkdir -p ./app_data
docker run -d \
--name streamlink-dashboard \
-p 8000:8000 \
-v $(pwd)/app_data:/app/app_data \
zerobell/streamlink-dashboard:latest
# 2️⃣ Open your browser
echo "🎉 Dashboard ready at: http://localhost:8000"
echo "🔑 First-time setup: Create your admin account in the web interface"# Download and run
curl -O https://raw.githubusercontent.com/zerobell-lee/streamlink-dashboard/master/docker-compose.yml
docker-compose up -d# Clone, build and run
git clone https://github.com/zerobell-lee/streamlink-dashboard.git
cd streamlink-dashboard
docker build -t streamlink-dashboard .
docker run -d --name streamlink-dashboard -p 8000:8000 -v $(pwd)/app_data:/app/app_data streamlink-dashboard# 🔧 Backend (Terminal 1)
cd backend
./run.sh # 🪄 Auto-setup venv and start server
# ⚛️ Frontend (Terminal 2)
cd frontend
npm install && npm run dev # 🚀 Start with Turbopack🎊 That's it! Your streaming dashboard is ready to go!
Open http://localhost:3000 (dev) or http://localhost:8000 (docker)
Requirements:
- Python 3.10+ (Required)
- Linux/macOS/Docker environment (Windows not supported for development)
# Create virtual environment (Python 3.10 required)
python3.10 -m venv backend/venv
source backend/venv/bin/activate
# Install dependencies
pip install -r backend/requirements.txt
# Run development server
cd backend && ./run.shFor detailed environment setup instructions, see Environment Setup Guide
# Build image
docker build -t streamlink-dashboard .
# Run with volume mount for data persistence
docker run -d \
--name streamlink-dashboard \
-p 8000:8000 \
-v $(pwd)/app_data:/app/app_data \
streamlink-dashboard# Run on Synology NAS
docker run -d \
--name streamlink-dashboard \
-p 8000:8000 \
-v /volume1/streamlink-data:/app/app_data \
streamlink-dashboard- User Accounts: Create and manage user accounts with role-based access
- JWT Tokens: Secure session management with token-based authentication
- First-time Setup: Create your admin account during initial setup
- Role-based Access: Admin and regular user roles with different permissions
- Dynamic Settings: All configurations stored in SQLite database
- No Container Recreation: Change settings without rebuilding containers
- Web Interface: Manage all settings through the dashboard
- NAS Friendly: Perfect for Synology NAS environments
- Platform Settings: API keys, stream quality, custom arguments
- Recording Settings: Storage paths, file naming, rotation policies
- System Settings: Log levels, scheduler intervals, notification settings
- User Settings: Dashboard preferences, favorite management
# View application logs
docker logs streamlink-dashboard
# Follow logs in real-time
docker logs -f streamlink-dashboard
# View recent logs
docker logs --tail=100 streamlink-dashboard
# View error logs only
docker logs streamlink-dashboard 2>&1 | grep ERROR- Structured Logging: JSON format for easy parsing
- Log Rotation: Automatic log file rotation
- Error Tracking: Comprehensive error logging and monitoring
├── backend/ # Python FastAPI backend
│ ├── app/
│ │ ├── api/v1/ # REST API endpoints
│ │ ├── services/ # Business logic (scheduler, streamlink)
│ │ ├── database/ # SQLAlchemy models and DB setup
│ │ └── schemas/ # Pydantic schemas
│ └── run.sh # Development server script
├── frontend/ # Next.js frontend
│ ├── src/
│ │ ├── app/ # Next.js 15 App Router
│ │ ├── components/ # React components
│ │ ├── lib/ # API client and utilities
│ │ └── store/ # Zustand state management
├── app_data/ # Docker volume mount point
│ ├── database/ # SQLite database
│ ├── recordings/ # Recorded video files
│ ├── logs/ # Application logs
│ └── config/ # Configuration files
└── Dockerfile # Multi-stage Docker build
We'd love your help making Streamlink Dashboard even better!
Found a bug? 🐛 Have an idea? 💡 Want to contribute? 🚀
- 🍴 Fork the repository
- 🌿 Create your feature branch (
git checkout -b feature/amazing-feature) - ✨ Commit your changes (
git commit -m 'Add some amazing feature') - 📤 Push to the branch (
git push origin feature/amazing-feature) - 🎯 Open a Pull Request
- 🆕 New Platform Support: Add support for more streaming platforms
- 🎨 UI/UX Improvements: Make the dashboard even more beautiful
- 🧪 Testing: Help us achieve better test coverage
- 📚 Documentation: Improve guides and examples
- 🐛 Bug Fixes: Fix issues and improve stability
- ⚡ Performance: Optimize recording and dashboard performance
MIT License - feel free to use this project however you'd like!
See the LICENSE file for full details.
This project stands on the shoulders of giants! Check out THIRD-PARTY-LICENSES.md for complete license information.
Quick Summary:
- ✅ Project: MIT License
- ✅ Backend Dependencies: MIT, Apache-2.0, BSD compatible
- ✅ Frontend Dependencies: MIT compatible
- 🎉 All dependencies are MIT-compatible - ready for open source!
⭐ Star this repo if you found it helpful!
☕ Buy me a coffee if you want to support development!
Made with ❤️ for the streaming community