{"id":26187980,"url":"https://github.com/ryex/go-broadcaster","last_synced_at":"2025-07-02T20:32:56.864Z","repository":{"id":69111507,"uuid":"138369011","full_name":"Ryex/go-broadcaster","owner":"Ryex","description":"A rewrite of Sourcefabric's Airtime in Go for better performance and lower resource usage","archived":false,"fork":false,"pushed_at":"2019-02-09T01:38:10.000Z","size":8148,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-11T23:54:02.321Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ryex.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":"2018-06-23T03:45:05.000Z","updated_at":"2019-02-09T01:38:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"b28b511a-62e9-4dd5-b001-f134beef39c1","html_url":"https://github.com/Ryex/go-broadcaster","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Ryex/go-broadcaster","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ryex%2Fgo-broadcaster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ryex%2Fgo-broadcaster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ryex%2Fgo-broadcaster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ryex%2Fgo-broadcaster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ryex","download_url":"https://codeload.github.com/Ryex/go-broadcaster/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ryex%2Fgo-broadcaster/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263210615,"owners_count":23431163,"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":[],"created_at":"2025-03-11T23:54:05.818Z","updated_at":"2025-07-02T20:32:56.831Z","avatar_url":"https://github.com/Ryex.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-broadcaster\nA rewrite of Sourcefabric's Airtime in Go for better performance and lower resource usage\n\n## Structure\n\ngo-broadcaster will consist of 3 main Go programs.\n\n* A web frontend (currently go-broadcaster-web)\n* A media library monitor (currently media-monitor)\n* A playout engine (not currently structured)\n\nthese three parts will communicate with a PostgresDB database and synchronize using\nPostgres `NOTIFY` and `LISTEN`.\n\nThis *should* result in a cleaner and more maintainable system than the current PHP Zend implementation. The use of Go should make for a much faster and more responsive system, and using `NOTIFY/LISTEN` will eliminate the need for a rabbitmq server making the system much easier to scale.\n\nThis will let the web frontend schedule content and the playout engine will be notified of changes to parts of the schedule it may of already pulled.\n\nThe playout engine will this use a telnet connection to a liquidsoap server to control playback of content.\n\nInitial design will focus around making playlists and scheduling them for playback.\n\n## TODO\n  * implement monitoring of, and importing of media in, library paths stored in the database\n    - switch to tagLib wrapper\n  * implement basic functionality of playout-engine\n  * implement playlist creation\n\n## Build\nThe Project provides a Makefile.\nit is known to be built successfully ATM in the following environments:\n\n  * Linux x86_64, Go 1.11.4+, yarn 1.13.0+, node v8.11.1+, GNU Make 4.2.1\n  * Windows 10 /w MSYS2, Go 1.11.4+, yarn 1.13.0+, node v8.11.1+, GNU Make 4.2.1\n\nin general running `make` in the project repository will build the entire project and place the output in `./bin`.\n\nusing `-e MODE=production` or `-e MODE=dev` with `make` will explicitly set the build mode.\n\n### Build Examples\n\n  ```\n  ./go-broadcaster$ make\n  ```\n\n  ```\n  ./go-broadcaster$ make -e MODE=production\n  ```\n\n  ```\n  ./go-broadcaster$ make -e MODE=dev\n  ```\n\n### The hard way\n\nThe project consists of four main parts; the three go cmds, and the vue.js SPA web client.\n\n\n#### Build the SPA client\n\nThe first step is to build the web client SPA\n\n  1) cd to `./web` and run `yarn install` to install all the dependencies\n  2) run `yarn build` or `yarn dev-build` to build out the desired files to `./web/dist`\n\nThis will get the SPA built to ./web/dist.\n\nNext build the gobcasst-web binary. This can either embed the `./web/dist` SPA OR run\nrun with it off the disk from the working directory\n\n#### Building Embedded\n\n  1) copy `./web/dist` to `./cmd/gobcast-web/client/dist`\n\n    cp -r ./web/dist ./cmd/gobcast-web/client\n\n  2) run `go generate ./cmd/gobcast-web/client` to generate the embedded asset code\n  3) `go build ./cmd/gobcast-web`\n\n#### Building non Embedded\n\n  1) `go build -tags dev ./cmd/gobcast-web`\n  2) ensure the `./web/dist` directory is copied to the working directory when `gobcast-web` is run\n\n#### Build the media monitor\n\n  1) `go build ./cmd/gobcast-mediamon`\n\n\n### TOOLS\n\n  There are some useful tools located in `./tools`\n  the most important of which is probably `migrate`\n\n#### migrate\n  Used to prep the database for the application\n\n#### dbproto\n  Used to prototype the database from the defined model structs.\n  Mostly useful during development to quickly drop an create schema.\n\n#### rolemod\n  Used to add, remove, modify, and inspect roles in the database\n  useful for development and potentially maintenance\n\n#### usermod\nUsed to add, remove, modify, and inspect users in the database\nuseful for development and potentially maintenance\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryex%2Fgo-broadcaster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryex%2Fgo-broadcaster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryex%2Fgo-broadcaster/lists"}