Skip to content

Conversation

@ksigWyatt
Copy link
Member

Adds a complete backend API, frontend UI, platform integrations, and deployment assets to enable volunteer-friendly live streaming.

Key changes:

  • Adds a .NET Web API with OBS WebSocket v5 client and service that manages connection, scene control, streaming, virtual camera, and audio volume events; includes SignalR hub to push real-time updates to clients.
  • Implements YouTube OAuth and Live services to create/bind broadcasts, manage persistent streams, transition broadcast lifecycle, and upload thumbnails; stores encrypted OAuth credentials in a local SQLite database.
  • Introduces credential encryption using ASP.NET Core Data Protection and an EF Core data layer with entities for credentials, persistent stream configs, and stream sessions.
  • Adds a media status tracker and broadcasters to poll and broadcast media input status and audio meters (for scene-level media tracking).
  • Adds a React (Vite + TypeScript + Tailwind) frontend that connects via SignalR and REST to present dashboard, scene switcher, streaming controls, video preview, and real-time audio meters & status.
  • Provides Dockerfile and docker-compose for multi-stage builds (UI + API), environment example, and static UI serving from the API runtime image for easy deployment.
  • Adds unit tests for controllers and the encryption service and updates README and workflow documentation describing the volunteer workflow and operational notes.
  • Cleans up ignore rules and project/solution scaffolding for .NET and Node projects.

Why:

  • Enables an integrated, real-time control plane for OBS and platform broadcasting so non-technical volunteers can start/monitor/end multi-platform streams with minimal manual steps.
  • Uses secure local storage for tokens and a persistent-stream strategy to avoid exposing stream keys or automating non-compliant platform UIs.
  • Provides a complete local dev and production deployment path (Docker) and automated UI serving from the backend.

Notes / next steps:

  • Populate environment variables (copy .env.example to .env) and configure YouTube OAuth in Google Cloud Console before first-run OAuth flow.
  • OBS must have WebSocket enabled (default port 4455) for full functionality.
  • Review and run the included tests; the solution includes project and test scaffolding.

Implements a full API for managing OBS connections and interactions, enabling seamless control of streaming, scene switching, and status monitoring.

Introduces a structured architecture with services, controllers, and SignalR for real-time communication, enhancing user experience in managing live streams.

Fixes issues with basic connection management and adds functionality for scene management and media status tracking.

Optimizing OBS integration for the Thrive Live Stream.
Implements new endpoints for starting, stopping, and checking the status of the OBS Virtual Camera.

Enhances audio monitoring by introducing real-time volume meter updates, allowing users to visualize audio levels from all active inputs.

Introduces a new component to manage and display these volume levels, along with settings for displaying dB values and scales.

Improves SignalR integration for efficient audio data streaming and enhances the user interface for better interaction.
- Add YouTube OAuth authentication (YouTubeAuthService, YouTubeAuthController)
- Add YouTube Live broadcast management (YouTubeLiveService, YouTubeLiveController)
  - Create broadcasts with custom title/description
  - Persistent stream key support (OBS config never changes)
  - Broadcast lifecycle: create → bind → testing → live → complete
  - Thumbnail upload support
  - Get broadcast defaults from previous streams
- Add credential encryption for secure token storage
- Add StreamingControls UI component for volunteer-friendly operation
  - Start Stream button (creates YT broadcast + starts OBS)
  - Open Facebook button (opens Live Producer URL)
  - End Stream button (stops OBS + ends YT broadcast)
  - Real-time status indicators
- Update Dashboard to include StreamingControls panel
Adds containerized build and runtime support so the app can be built and deployed as a single image that serves the React UI as static files from the .NET API. Provides environment config and ignore rules for Docker workflows, enables SPA fallback so client-side routing works in production, and wires up a basic healthcheck and persisted data volumes for runtime reliability.

- Introduces a multi-stage Dockerfile to build the UI and API and produce a runtime image.
- Adds a compose file to simplify local/container deployment, with env loading, volumes, extra_hosts, and healthcheck.
- Serves the built frontend from the API (static files + SPA fallback) so API routes take precedence.
- Adds example env file and dockerignore / gitignore entries for container artifacts and persisted data.
- Tweaks frontend build config to output a dist bundle and optimize chunks for production.
- Adds documentation describing the recommended livestream workflow and the rationale for avoiding automated Facebook UI interactions.
Adds comprehensive unit tests for the OBS controller and the credential encryption service to improve coverage and validate key behaviors (connection, scene switching, streaming control, encryption/decryption and input validation). Also updates the test project setup to use MSTest and updates test dependencies while removing the placeholder test.

- Introduces controller tests covering connection status, Connect/Disconnect flows, scene listing and switching, and streaming start/stop scenarios with both success and failure paths.
- Adds encryption service tests that validate encrypt/decrypt behavior, input validation, invalid base64 handling, and a real-protector roundtrip; also verifies the protector is created with the expected purpose.
- Updates test project packages: replaces xUnit with MSTest test adapter/framework and bumps Moq; removes the placeholder unit test file.
Adds a GitHub Actions CI pipeline to automate linting, building and testing of the frontend and backend and to validate Docker image builds on push and PR activity. The pipeline provides fast feedback on regressions and ensures artifacts and container builds are reproducible before merges.

- Frontend job: sets up Node, installs dependencies, runs linter and build, and uploads the build artifact for downstream use.
- Backend job: sets up .NET, restores dependencies, builds and runs tests to verify server-side correctness.
- Docker job: sets up Docker Buildx and performs a local build using the CI cache to validate the Dockerfile without pushing images; depends on UI and API jobs.
@ksigWyatt ksigWyatt merged commit cdc16a7 into master Jan 13, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant