{"id":19684975,"url":"https://github.com/boolfalse/online-radio","last_synced_at":"2025-06-18T15:39:22.736Z","repository":{"id":183862031,"uuid":"660574808","full_name":"boolfalse/online-radio","owner":"boolfalse","description":"Simple online radio project","archived":false,"fork":false,"pushed_at":"2023-07-27T02:24:47.000Z","size":2440,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-27T08:08:52.959Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/boolfalse.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}},"created_at":"2023-06-30T10:10:12.000Z","updated_at":"2023-07-26T03:19:50.000Z","dependencies_parsed_at":"2025-02-27T08:08:41.641Z","dependency_job_id":"d706c27e-7647-49c7-b6e9-337c0fd18c25","html_url":"https://github.com/boolfalse/online-radio","commit_stats":null,"previous_names":["boolfalse/online-radio"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/boolfalse/online-radio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boolfalse%2Fonline-radio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boolfalse%2Fonline-radio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boolfalse%2Fonline-radio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boolfalse%2Fonline-radio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/boolfalse","download_url":"https://codeload.github.com/boolfalse/online-radio/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boolfalse%2Fonline-radio/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260581888,"owners_count":23031681,"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":"2024-11-11T18:19:33.897Z","updated_at":"2025-06-18T15:39:17.724Z","avatar_url":"https://github.com/boolfalse.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## Online Radio\n\n\u003cimg src=\"https://i.imgur.com/P56zt04.png\" alt=\"Online Radio\" /\u003e\n\nThis is a simple online radio app built with following technologies:\n\n- [React.js](https://react.dev/)\n- [Node.js](https://nodejs.org/)\n- [Vite](https://vitejs.dev/)\n- [TypeScript](https://www.typescriptlang.org/)\n- [AudioContext (Web API)](https://developer.mozilla.org/en-US/docs/Web/API/AudioContext)\n- [Express](https://expressjs.com/)\n- [socket.io](https://socket.io/)\n- [ESLint](https://eslint.org/)\n\n---\n\n\n\n### Installation:\n\n- Clone this repository:\n\n```bash\ngit clone git@github.com:boolfalse/online-radio.git \u0026\u0026 cd online-radio\n```\n\n- Install frontend and backend dependencies:\n\n```bash\nnpm install \u0026\u0026 cd backend \u0026\u0026 npm install \u0026\u0026 cd ..\n```\n\n- Make sure to have a [GitHub Gist](https://gist.github.com/boolfalse/6b66a0065c70a33f95e0e831cb0c7e9f#file-tracks-json) JSON file with the tracks in it.\n\n- JSON file sample:\n\n```json\n[\n  {\n    \"title\": \"Harp Arpeggio - Medieval Tune\",\n    \"file\": \"https://cdn.freesound.org/previews/564/564024_12539862-lq.mp3\",\n    \"image\": \"https://dummyimage.com/480x360/c2ccb2/ff6200\u0026text=Harp%20Arpeggio%20-%20Medieval%20Tune\",\n    \"source_url\": \"https://freesound.org/people/gertraut_hecher/sounds/564024/\"\n  },\n  {\n    \"title\": \"Punta Secca Waves 2\",\n    \"file\": \"https://cdn.freesound.org/previews/353/353102_2874677-lq.mp3\",\n    \"image\": \"https://dummyimage.com/480x360/c2ccb2/ff6200\u0026text=Punta%20Secca%20Waves%202\",\n    \"source_url\": \"https://freesound.org/people/microsome/sounds/353102/\"\n  }\n]\n```\n\n- For minimizing the track before uploading to the cloud you can run:\n\n```shell\n# following command will convert \"input.mp3\" to \"output.mp3\" with the 96 kbit/second quality\nffmpeg -i input.mp3 -codec:a libmp3lame -b:a 96k output.mp3\n```\n\n- Setup environment variables in \".env\" file as described in \".env.example\" file.\n```dotenv\nNODE_VERSION=\"18.16.0\"\nAPP_ENV=\"development\"\n\nRADIO_GIST_ID=\"6b66a0065c70a33f95e0e831cb0c7e9f\"\nRADIO_PLAYLIST_FILE=\"tracks\"\n\nVITE_BACKEND_PORT=5000\nVITE_SERVER_PORT=5001\nVITE_SOCKET_PORT=3000\n```\n\n- Run the app:\n\n```bash\n# development\nnpm run dev\n# production (TODO: review before production)\nnpm run build \u0026\u0026 npm run start\n```\n\n- Check out [http://localhost:5001](http://localhost:5001) on local environment.\n\n- For checking linting (ESLint) errors and warnings:\n```bash\nnpm run lint\n```\n\n\n\n### Notes:\n\n- This app uses [GitHub Gist](https://gist.github.com/6b66a0065c70a33f95e0e831cb0c7e9f) as a database for storing tracks (\"tracks.json\" file).\n- Frontend UI inspired by: [Daily UI IX: Music Player #009](https://codepen.io/lgkonline/pen/BQdeyZ) \u0026 [3D Cube Slider](https://codepen.io/fghty/pen/WNORPYW).\n- Background image from: [GIPHY](https://www.pinterest.com/pin/406942516311166244/).\n- Track images taken from [YouTube thumbnails](https://i.ytimg.com/vi/6k_NWX0Fo8g/hqdefault.jpg).\n- Testing tracks taken from [freesound.org](https://freesound.org/search/?q=\u0026f=\u0026w=\u0026s=Duration+%28shortest+first%29\u0026advanced=0\u0026g=1\u0026page=9000#sound).\n- Testing images generated by [dummyimage.com](https://dummyimage.com/480x360/c2ccb2/ff6200\u0026text=Harp%20Arpeggio%20-%20Medieval%20Tune).\n- This app was built with the help of [OpenAI's Chatbot](https://chat.openai.com/).\n- Similar online radio app: [freeCodeCamp Radio](https://coderadio.freecodecamp.org/).\n\n\n\n### Author:\n\n- [BoolFalse](https://boolfalse.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboolfalse%2Fonline-radio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fboolfalse%2Fonline-radio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboolfalse%2Fonline-radio/lists"}