Contributing
EZInfiniteYTLive is a small project, which makes it a great candidate for first-time contributions. This page covers the practical workflow; see Architecture Overview and API Reference first to understand the codebase.
Getting set up
- Fork and clone the repository.
- Follow Installation / Building From Source to get a local build running.
- Make sure FFmpeg is installed so you can actually test streaming (e.g. to a private/unlisted YouTube stream, or a local RTMP server such as
nginx-rtmpor MediaMTX).
Suggested first contributions
The core playback behaviors are implemented in VideoStreamer; useful next contributions include:
- Persist settings. Use the already-scaffolded
Properties/Settings.settingsto remember the last-used video folder, RTMP URL, and FFmpeg path between sessions. - Make the FFmpeg path configurable from the UI, rather than hardcoded in
Form1._ffmpegPath. - Add a unit test project for file discovery, ordering, error reporting, and cancellation, then wire it into the GitHub Actions workflow.
- Improve diagnostics. Add a dedicated log panel or export
Tracediagnostics to a file for long-running streams. - Publish build artifacts from CI (e.g. via
actions/upload-artifact) so testers can grab a build without compiling locally.
Code style notes
- The codebase mixes English and Portuguese comments/strings (e.g.
Program.cs's/// <summary>comment andForm1.Designer.cs's#regionare in Portuguese, reflecting Visual Studio's localized designer templates). New code can be written in English; there's no strict enforced style guide, so prefer matching the existing conventions in the file you're editing (naming likePascalCasefor public members/controls,_camelCasefor private fields). - UI changes to
Form1should be made via the Visual Studio Windows Forms Designer when possible, sinceForm1.Designer.csis machine-generated and easy to desync from the.resx/designer view if hand-edited carelessly.
Submitting changes
- Create a branch for your change.
- Make sure the solution builds (
msbuild EZInfiniteYTLive.sln /p:Configuration=Release, or build in Visual Studio) — this mirrors what CI checks. - Test the behavior manually using a short sample clip (the repo already embeds sample files under
EZInfiniteYTLive/Resources/examples/) streamed to a private/unlisted or local RTMP endpoint. - Open a pull request against
maindescribing the change and how you tested it.
Documentation contributions
This documentation site is built with Docusaurus and lives in the website/ directory at the root of the repository. To work on the docs locally:
cd website
npm install
npm start
This starts a local dev server (default http://localhost:3000) with hot reload. Docs content lives under website/docs/ as Markdown/MDX files; see Docusaurus's documentation guide for syntax and conventions (front matter, sidebar_position, Mermaid diagrams, etc.).
To produce a static production build:
npm run build
The output is written to website/build/ and can be served with npm run serve or deployed to any static host (GitHub Pages, Netlify, Vercel, etc.).