{"id":23655329,"url":"https://github.com/davidoliver/live_cue","last_synced_at":"2025-09-10T11:33:04.080Z","repository":{"id":141421136,"uuid":"344704513","full_name":"DavidOliver/live_cue","owner":"DavidOliver","description":"A Phoenix LiveView-powered shared-file music collection player, for listening in sync with friends","archived":false,"fork":false,"pushed_at":"2024-02-28T21:45:06.000Z","size":214,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-01T15:44:05.340Z","etag":null,"topics":["elixir","elixir-phoenix"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DavidOliver.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2021-03-05T05:28:13.000Z","updated_at":"2024-01-01T14:10:29.000Z","dependencies_parsed_at":"2024-01-16T19:51:10.486Z","dependency_job_id":"8e5c2587-f14b-4e18-b74e-2f5b5d8a5742","html_url":"https://github.com/DavidOliver/live_cue","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DavidOliver/live_cue","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidOliver%2Flive_cue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidOliver%2Flive_cue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidOliver%2Flive_cue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidOliver%2Flive_cue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DavidOliver","download_url":"https://codeload.github.com/DavidOliver/live_cue/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DavidOliver%2Flive_cue/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274455433,"owners_count":25288557,"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","status":"online","status_checked_at":"2025-09-10T02:00:12.551Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["elixir","elixir-phoenix"],"created_at":"2024-12-28T19:53:13.509Z","updated_at":"2025-09-10T11:33:04.002Z","avatar_url":"https://github.com/DavidOliver.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LiveCue\n\nA Phoenix LiveView-powered shared-file music collection player, for listening in sync with friends.\n\nLiveCue is currently configured to use ZeroTier.\n\n\n## Audio file format support\n\nFLAC. (mp3 and m4a support is in progress.)\n\n\n## Set up and configure\n\n### 1. Ensure the Nix package manager is installed\n\n[Instructions](https://zero-to-nix.com/concepts/nix-installer).\n\n### 2. Ensure Devbox is installed\n\n[Instructions](https://www.jetpack.io/devbox/docs/installing_devbox/).\n\n### 3. Get LiveCue source code and configure\n\n1. Clone repository:\n\n\t`$ git clone git@bitbucket.org:theoliverbros/live_cue.git \u003cdestination-directory\u003e`\n\n2. `cd` to the repository directory.\n\n3. Set values in `envs/.env.all`.\n\n4. Prepare and enter the environment:\n\n\t`$ devbox shell`\n\n5. Run initial setup:\n\n\t`$ devbox run setup`\n\n6. Open ports `4369` and `9001`, TCP protocol, in your computer’s local software firewall.\n\n7. Connect to ZeroTier if not already connected.\n\n\n## Run\n\n1. If not already in the Devbox environment:\n\n\t`$ devbox shell`\n\n2. Start LiveCue:\n\n\t`$ ./start.sh`\n\n\tThis opens and configures a `tmux` session, in which `cmus` (the audio player) and `LiveCue` itself are run.\n\n3. Parse and process local music collection files:\n\n\t```\n\tiex\u003e LiveCue.process_collection()\n\t```\n\n\tThis step is only required on the first run and after music collection updates.\n\n4. Visit [`localhost:4000`](http://localhost:4000) in your web browser.\n\n\tChoose an album or track and press play!\n\n\n## Stop\n\nTo stop the app and close down related services:\n\n1. Press Ctrl+C twice in the LiveCue iex terminal.\n2. Type `:q` and press Return to quit `cmus`.\n3. `exit` to exit the cmus pane.\n4. `exit` to exit `tmux`.\n\n(Hopefully, the stopping process will soon be improved.)\n\n\n## Notes on parsing collection and storing data\n\nProcessing collection files into data for use by LiveCue is done in two main steps.\n\n### 1. Parsing collection files\n\nIn this step, we obtain basic file and meta data from the music collection’s files, and store the result in the local database.\n\nThis step can be individually run in the Elixir interactive terminal:\n\n```\niex\u003e LiveCue.parse_collection_files()\n```\n\n### 2. Processing parsed data\n\nIn this step, we transform and apply keys for storage to the data generated in step 1, and store the result in the local database. The data generated in this step is read when the LiveCue browser-based interface is used.\n\nThis step can be individually run in the Elixir interactive terminal:\n\n```\niex\u003e LiveCue.store_collection_data()\n```\n\nAs this step uses the data stored by step 1, the code for step 2 can be updated and re-run during development without having to re-parse the collection files, which is a relatively lengthy process.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidoliver%2Flive_cue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavidoliver%2Flive_cue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidoliver%2Flive_cue/lists"}