4.7 KiB
4.7 KiB
Multi-Platform Chat Overlay Development Plan (v4 - Simplified Stack)
This document outlines the development plan for a multi-user, web-based chat overlay service using a simplified technology stack.
1. Project Overview
The goal is to create a service where streamers can log in using their platform accounts (Twitch, YouTube), configure a personalized chat overlay, and use it in their streaming software (e.g., OBS). The service will aggregate chat from their connected accounts and provide moderation tools.
2. Technology Stack
- Backend (API & Chat Listeners): Python (for Twitch/YouTube chat listeners), Node.js (for WebSocket server and potentially other APIs), PHP (for user management and web serving).
- Database: MySQL
- Frontend: HTML, CSS, JavaScript
3. Implementation Roadmap
Phase 1: Basic Setup & Twitch Chat Listener (Python)
- Project Structure: Establish a clear directory structure for PHP, Python, Node.js, and static assets.
- Python Environment: Set up a Python virtual environment and install
twitchio. - Twitch Chat Listener (Python Script): Create a standalone Python script that connects to Twitch chat, listens for messages, and prints them to standard output. This script will be run as a background process.
- Twitch OAuth2 (Python): Implement a simple Python script or a PHP endpoint to handle Twitch OAuth2 to obtain user access tokens. Store these securely in MySQL.
Phase 2: MySQL Database & User Management (PHP)
- MySQL Setup: Set up a MySQL database and create a
userstable to store user information (Twitch ID, username, access token, refresh token). - PHP Web Server: Configure a basic PHP web server.
- User Registration/Login (PHP): Implement PHP scripts for user registration and login, integrating with the MySQL database.
- Dashboard (PHP/HTML): Create a basic dashboard where logged-in users can see their Twitch connection status and their unique overlay URL.
Phase 3: WebSocket Server (Node.js) & Overlay (HTML/CSS/JS)
- Node.js Environment: Set up a Node.js environment and install
ws(WebSocket library). - WebSocket Server (Node.js): Create a Node.js WebSocket server that:
- Accepts connections from overlay clients.
- Receives chat messages from the Python Twitch listener (via a simple inter-process communication mechanism, e.g., writing to a file or a local socket).
- Broadcasts messages to connected overlay clients.
- Overlay Frontend (HTML/CSS/JS): Create a basic
overlay.htmlthat:- Connects to the Node.js WebSocket server.
- Displays incoming chat messages.
- Inter-process Communication: Implement a mechanism for the Python Twitch listener to send messages to the Node.js WebSocket server.
Phase 4: Integration & Refinement
- Dynamic Listener Management: Develop a system (e.g., a PHP script or a Node.js API) to start and stop Python Twitch listener processes based on user activity.
- YouTube Integration: Add YouTube chat listening capabilities (Python
pytchat) and integrate with the existing system. This will be implemented after the core Twitch functionality is stable. - Advanced Overlay Customization: Implement options for users to customize their overlay.
4. Requirements for Completion (Initial Version)
The project will be considered complete for its initial version when Phases 1, 2, and 3 are functional:
- Users can log in with their Twitch account.
- Users can see their unique overlay URL on a dashboard.
- The overlay successfully connects to their Twitch chat and displays messages when opened in a browser source.
6. Future Enhancements from Gitea Issues
These are enhancement suggestions gathered from the project's Gitea issues, representing potential future features or considerations:
- Issue #1: Multi select chat display order
- Allow streamer to click on messages that appear whilst discussing chat message already on screen. This will enable quick progress through important messages without having to scroll back up chat.
- Issue #2: Moderator chat assistance with streamer over ride
- Moderators can select messages on their end, marking them for discussion, freeing up the streamer to simply stream. The streamer would have override to reject messages as the stream owner.
- Issue #3: Chat Speed toggle for busier chat streams
- Implement a toggle to adjust the display speed of chat messages, useful for very active streams.
- Issue #4: Auto add YT Superchats to Highlights
- Add a setting to automatically include YouTube Superchats in the highlighted messages.
- Issue #5: Donations page somewhere
- Consider integrating a donations page or feature within the service.