{"id":13406498,"url":"https://github.com/stream-labs/desktop","last_synced_at":"2025-03-26T17:03:52.620Z","repository":{"id":37026876,"uuid":"108469351","full_name":"stream-labs/desktop","owner":"stream-labs","description":"Free and open source streaming software built on OBS and Electron.","archived":false,"fork":false,"pushed_at":"2025-03-18T20:45:23.000Z","size":220265,"stargazers_count":4629,"open_issues_count":37,"forks_count":701,"subscribers_count":121,"default_branch":"master","last_synced_at":"2025-03-19T09:01:59.489Z","etag":null,"topics":["electron","facebook","react","streaming","streamlabs","twitch","typescript","vue","vuejs","youtube"],"latest_commit_sha":null,"homepage":"https://streamlabs.com","language":"TypeScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stream-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-26T21:50:19.000Z","updated_at":"2025-03-18T19:59:13.000Z","dependencies_parsed_at":"2024-01-22T19:08:44.244Z","dependency_job_id":"cbdb1b37-5abc-4d30-84e6-c230bb9c6378","html_url":"https://github.com/stream-labs/desktop","commit_stats":null,"previous_names":[],"tags_count":2391,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stream-labs%2Fdesktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stream-labs%2Fdesktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stream-labs%2Fdesktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stream-labs%2Fdesktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stream-labs","download_url":"https://codeload.github.com/stream-labs/desktop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245699278,"owners_count":20657986,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electron","facebook","react","streaming","streamlabs","twitch","typescript","vue","vuejs","youtube"],"created_at":"2024-07-30T19:02:31.891Z","updated_at":"2025-03-26T17:03:52.589Z","avatar_url":"https://github.com/stream-labs.png","language":"TypeScript","readme":"# Streamlabs Desktop\n\n[![Build Status](https://dev.azure.com/streamlabs/Streamlabs%20OBS/_apis/build/status/stream-labs.streamlabs-obs?branchName=staging)](https://dev.azure.com/streamlabs/Streamlabs%20OBS/_build/latest?definitionId=1\u0026branchName=staging)\n\nSimple, powerful, and efficient live streaming software built on Electron and OBS.\n\n![Streamlabs Desktop](https://slobs-cdn.streamlabs.com/media/streamlabs-desktop_1920x1050.png)\n\nThis application currently only supports OSX 10.14+ and 64-bit Windows.\n\n## Dependencies\n\n### Node.js\n\nNode is required for installing npm packages and for running\nvarious scripts. We recommend the latest LTS release.\n\nhttps://nodejs.org\n\n### Yarn\n\nWe use Yarn as our package manager. We use yarn modern (berry) with\nthe yarn version checked in to version control. To get the yarn CLI,\nwe currently recommend installing it with npm:\n\n```\nnpm install -g yarn\n```\n\n### Bash\n\nSome of our scripts assume a bash-like environment. On Windows, we recommend\nusing Git Bash, which is included with Git for Windows. On macOS, the\ndefault shell should work fine.\n\n### Native Modules\n\nStreamlabs Desktop uses several native C++ modules. These are NPM modules\nthat live in separate repositories, and are automatically installed as prebuilt\nbinaries by Yarn. If you are not doing any development on these native modules,\nno additional action is required to install native modules.\n\n## Installation\n\nInstall all node modules via yarn:\n\n```\nyarn install\n```\n\nThen, compile assets with webpack:\n\n```\nyarn compile\n```\n\nAlternatively, you can watch for changes to app files:\n\n```\nyarn watch\n```\n\n## Starting\n\nYou can start the app by running:\n\n```\nyarn start\n```\n\n## Environment Variables\n\nThese variables can be used in development to force certain behavior.\n\n`SLOBS_FORCE_AUTO_UPDATE`: Force the auto-updater to run in development. Normally\nthis would only run in production.\n\n`SLOBS_CACHE_DIR`: Force a different location for the user data cache directory.\n\n`SLOBS_DISABLE_MAIN_LOGGING`: Disable javascript logging in the main process.\n\n`SLOBS_REPORT_TO_SENTRY`: Report errors to sentry in the dev environment\n\n`SLOBS_PRODUCTION_DEBUG`: Forces dev tools to open when the app starts\n\n## Development\n\nYou can open dev tools by clicking the `\u003c/\u003e` button on the sidebar.\nIn the development environment, the titlebar of the main window will\nlight up red when an exception occurs in any window.\n\nOur app is comprised of several windows, which are essential separate\ncopies of the same Javascript app, which are running different pieces\nof the code and communicating via Electron IPC.\n\n`worker` - This is a persistent invisible window that runs our entire\nservices layer.\n\n`main` - This is the main window of the application. It communicates\nwith the worker window to perform actions.\n\n`child` - This window is always running in the background, and appears\nto show windows like Source Properties. It stays always running because\nElectron windows can take several seconds to initialize, so we keep it\nready in the background.\n\nThere are potentially many other JS runtime processes that can be running\ndepending on use, for features like Apps, embedded webviews, one-off windows\nlike projectors, pop-outs etc.\n\n### Sync / Async\n\nGiven the heavy reliance on interprocess communication in our application,\nwe strongly recommend using asynchronous IPC whenever possible. When\naccessing a service, calling it as an action will call it asynchronously.\n\nFor example the following (synchronous):\n\n```\nStreamingService.toggleStreaming()\n```\n\nCan be rewritten as (asynchronous):\n\n```\nStreamingService.actions.toggleStreaming()\n```\n\nThe return type of the latter will automatically be `void` as actions\nare unable to return values.  In general, receiving information from\nservices is best done via `views`.  `views` are executed in-window, and\nbacked by our `vuex` data store, which is replicated across windows.\n\n### Vue / React\n\nWe are in the process of migrating from Vue to React. There are many components\nof both frameworks in our codebase currently. All new components should be\nwritten in React, and major non-trivial changes to existing Vue components\nshould be accompanied with a rewrite to React.\n\nWe exclusively use functional components in React, relying on the hooks API\nfor things like component state and lifecycle.\n\n## Contributing\n\nWe accept outside contributions, and do our best to respond to Pull Requests.\nWe ask that all contributors sign a Contributor License Agreement before merging\ncode. We do not guarantee that all external Pull Requests will be merged, but\nwe deeply appreciate any and all changes submitted. Thank you for your interest\nand contribution.\n\n### Translations\n\nAt this time, we are not able to accept translations submitted to GitHub, as we\nuse a professional translation team that manages translations elsewhere.\n\n## Packaging/Distribution\n\nFor Windows:\n\n```\nyarn package\n```\n\nFor macOS:\n\n```\nyarn package:mac\n```\n\nNote that both of these commands require code signing certificates to be\npresent in the environment, and in the case of macOS, a valid Apple developer\naccount for notarization of the app package.\n\nThere are some environment variables that can be passed to skip these steps:\n\n`SLOBS_NO_SIGN` Do not attempt to codesign the app package\n\n`SLOBS_NO_NOTARIZE` Do not attempt to notarize the macOS package\n\n## ❤ OBS Developers\n\nAt its core, Streamlabs Desktop is powered by the [OBS](https://obsproject.com/)\nproject. We want to thank all of the developers over at the OBS project for\ntheir years of tireless hard work, without which Streamlabs Desktop wouldn't exist today.\n","funding_links":[],"categories":["TypeScript","HarmonyOS","Cross-Platform"],"sub_categories":["Windows Manager","JavaScript"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstream-labs%2Fdesktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstream-labs%2Fdesktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstream-labs%2Fdesktop/lists"}