{"id":13941111,"url":"https://github.com/vitalybe/radio-stream","last_synced_at":"2026-04-03T02:49:51.603Z","repository":{"id":147279341,"uuid":"78101102","full_name":"vitalybe/radio-stream","owner":"vitalybe","description":"A personal music streaming solution","archived":false,"fork":false,"pushed_at":"2018-06-23T21:52:27.000Z","size":12579,"stargazers_count":40,"open_issues_count":1,"forks_count":6,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-11-27T10:35:57.826Z","etag":null,"topics":["beets","electron","kotlin","music","react","react-native","streaming"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/vitalybe.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-01-05T09:54:40.000Z","updated_at":"2024-09-24T20:14:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"7a82cf63-b506-469a-8b50-0294340d1052","html_url":"https://github.com/vitalybe/radio-stream","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vitalybe/radio-stream","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitalybe%2Fradio-stream","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitalybe%2Fradio-stream/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitalybe%2Fradio-stream/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitalybe%2Fradio-stream/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vitalybe","download_url":"https://codeload.github.com/vitalybe/radio-stream/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitalybe%2Fradio-stream/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266067254,"owners_count":23871324,"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":["beets","electron","kotlin","music","react","react-native","streaming"],"created_at":"2024-08-08T02:01:11.396Z","updated_at":"2026-04-03T02:49:51.562Z","avatar_url":"https://github.com/vitalybe.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"Radio Stream - Development repository\n====================================\n\n**NOTE:** These instructions are intended for developers of Radio Stream - If you just want to listen to music [go here](https://github.com/vitalybe/radio-stream-cli).\n\nAbout\n=====\n**Radio Stream** is your personal music service that streams music automatically based on your listening habits.\n\n* **Your music** - Use your own music files without restrictions.\n* **Automatic DJ** - Enjoy music immediately without choosing a specific song or album. The music is selected based on when you last heard it, its rating and more.\n* **Dynamic playlists** - Want to hear only some of your music? Create a music playlist, e.g, only with genre Heavy Metal, and have the automatic DJ stream the music from that station.\n* **Desktop and Mobile clients** - Listen to your music when you're on another computer or on your mobile phone.\n* **Last.FM support** - Scrobble your music to Last.FM\n* **Powered by beets** - Use the super-powerful [beets](https://github.com/beetbox/beets) and all its plugins to organize your music. \n\nYou can read additional details and installation instructions [here](https://github.com/vitalybe/radio-stream-cli).\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/vitalybe/radio-stream-cli/master/images/android.jpg\" alt=\"Radio Stream for Android\"/\u003e\n\u003c/p\u003e\n\nArchitecture\n============\n\nOverview\n---------\n\n![alt text](docs/architecture.png \"architecture overview\")\n\nServer\n------\nComposed of 2 main components.\n\n**Docker container**\n\nDocker was used to provide easy deployment and minimize required configuration for the user. It consists of the following subcomponents:\n* beets - A [fork of beets](https://github.com/vitalybe/beets) that adds a specialized plugin for generating automatic playlists, updating play counts, ratings, etc. The plugin by default is listening for HTTP requests on internal port.\n* nginx - Exposes a single HTTP endpoint for clients. Based on the incoming URL it either serves as proxy for beets or exposes the underlying music files.\n\n**Launcher ([radio-stream-cli](https://github.com/vitalybe/radio-stream-cli))**\n\nThis is the server-side application that the user interacts with to control the docker container and execute beets inside it.\n\nClient applications\n-------------------\n\nBoth clients are written with react-native and share a large portion of code.\n\n* Android application - Developed using react-native.\n* Desktop application - Developed using react-native-web, running on electron.\n\n\nDevelopment\n===========\n\nGetting started\n---------------\n    git clone --recursive https://github.com/vitalybe/radio-stream\n    cd readio-stream\n    # Prepare test hooks\n    cp scripts/pre-commit .git/hooks/pre-commit\n\nThen proceed to a specific folder and follow its readme:\n\n* Server - \"[server](https://github.com/vitalybe/radio-stream/tree/master/server)\" folder. \n* Desktop application - \"[web](https://github.com/vitalybe/radio-stream/tree/master/web)\" folder. \n* Android application - [mobile](https://github.com/vitalybe/radio-stream/tree/master/mobile)\" folder. \n\n\nContributions\n=============\n\nPull requests are most welcome. The main areas of focus I would love to see this project expand:\n\n* Ability to create automatic playlists from clients.\n* Ability to add music from clients - Currently requires to copy files to the computer running the server and running beet import funcionality.\n* Unify web and mobile codebases - Since both electron and react-native rely on javascript, some code elements can be shared between the projects.\n* Windows support - Should be relatively easy to do since electron supports windows already. Mac specific code is very minimal.\n* Web-only mode - The native parts in this application are minimal so this shouldn't be too hard.\n* iPhone support\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvitalybe%2Fradio-stream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvitalybe%2Fradio-stream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvitalybe%2Fradio-stream/lists"}