{"id":14979833,"url":"https://github.com/belgiangeek/badassboard","last_synced_at":"2025-10-28T20:30:17.901Z","repository":{"id":38028094,"uuid":"204866456","full_name":"belgianGeek/BadassBoard","owner":"belgianGeek","description":"Time to level up your homepage :muscle: :sunglasses:","archived":false,"fork":false,"pushed_at":"2025-01-21T22:33:45.000Z","size":10966,"stargazers_count":5,"open_issues_count":1,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-01T17:51:12.480Z","etag":null,"topics":["audio","audio-files","audio-player","download-songs","downloader","homepage","invidious","openweathermap-api","playlist","rss","rss-aggregator","rss-feed","rss-reader","weather-forecast","youtube","youtube-dl","youtube-player","youtube-playlist","youtube-search","youtube-video"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"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/belgianGeek.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":"2019-08-28T06:47:09.000Z","updated_at":"2024-12-10T21:52:00.000Z","dependencies_parsed_at":"2024-02-20T23:23:52.586Z","dependency_job_id":"bb7492d0-b0b3-4f85-ad0c-8fb7ca73f251","html_url":"https://github.com/belgianGeek/BadassBoard","commit_stats":{"total_commits":354,"total_committers":7,"mean_commits":50.57142857142857,"dds":0.1610169491525424,"last_synced_commit":"6a5a378739498e39df5efebe369627937468f490"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/belgianGeek%2FBadassBoard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/belgianGeek%2FBadassBoard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/belgianGeek%2FBadassBoard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/belgianGeek%2FBadassBoard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/belgianGeek","download_url":"https://codeload.github.com/belgianGeek/BadassBoard/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238710402,"owners_count":19517697,"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":["audio","audio-files","audio-player","download-songs","downloader","homepage","invidious","openweathermap-api","playlist","rss","rss-aggregator","rss-feed","rss-reader","weather-forecast","youtube","youtube-dl","youtube-player","youtube-playlist","youtube-search","youtube-video"],"created_at":"2024-09-24T14:00:45.256Z","updated_at":"2025-10-28T20:30:16.178Z","avatar_url":"https://github.com/belgianGeek.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![GitHub release (latest by date)](https://img.shields.io/github/v/release/belgianGeek/badassBoard) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/belgianGeek/badassBoard) ![Lines of code](https://img.shields.io/tokei/lines/github/belgianGeek/badassBoard)\r\n\r\n#  ̿̿ ̿̿ ̿'̿'\\̵͇̿̿\\з= ( ▀ ͜͞ʖ▀) =ε/̵͇̿̿/’̿’̿ ̿ ̿̿ ̿̿ ̿̿\r\n\r\n![Screenshot](https://raw.githubusercontent.com/belgianGeek/BadassBoard/dev/screenshots/home.jpg)\r\n\r\n# What is _BadassBoard_ ?\r\n\r\nThis project intent to be an open source, self-hosted replacement for services like _start.me_.\r\n\r\nPlease note that this a project intented to LEARN web development. So do not expect a beautifully amazing state-of-the-art stuff :innocent: . This might contains bugs or missing features you would LOVE to use. You're in such case ? Well, the deal is really simple : open a GitHub issue or a pull request :wink: .\r\n\r\nIts features includes :\r\n\r\n- RSS reader ;\r\n- Weather forecast (thanks to the _OpenWeatherMap_ API) ;\r\n- Web shortcuts to several websites (based on the DuckDuckGo _Bangs_ system) ;\r\n- Audio streaming from YouTube thanks to the _Invidious_ API (both playlists, mixes and videos are supported) ;\r\n- IT units converter (only from bytes to terabytes for now) ;\r\n- Instant Youtube Search ;\r\n- Basic chatbot ;\r\n- A YouTube channel ID to RSS converter ;\r\n\r\nAll of that available through a (nice ?) and customizable UI.\r\n\r\n# Installation\r\n\r\nYou must have [Node.js](http://nodejs.org) installed on your system. If this is not the case, please follow this link : https://nodejs.org/en/download/.\r\n\r\nThen, you can clone this repo or download the files using the download button in upper right corner of the main page, or by downloading the `.zip` file in the [releases](https://github.com/belgianGeek/BadassBoard/releases) tab.\r\n\r\nOnce Node.js is installed, open a terminal/console in the project's root directory on your computer and install the dependencies by running the command `npm install`.\r\n\r\n:point_right: **Please note that this last step won't work if you do not have Node.js installed**.\r\n\r\n# How to use it ?\r\n\r\nFirst, make sure you are in the project's root directory. Then, you can launch the app by running the command `npm run start` in your console.\r\n\r\nIf you are connected to the Internet, you should get a nice message in your console, saying that you can connect to the app by typing `http://\u003cyour_IP\u003e:8080` or `http://\u003cyour_hostname\u003e:8080`in your web browser.\r\n\r\n# A few notes about the features\r\n\r\n## Using the search field\r\n\r\nBy default, you can search the web thanks to the _DuckDuckGo_ search engine, but you can choose another one from the settings panel.\r\n\r\nAND you can use a few web shortcuts (or _Webcuts_) to get instant results in your browser from sites like _Amazon_, _Wikipedia_, _Google_, _How-to Geek_... Interested ? Just type `!\u003cWebcut\u003e \u003cyour search term(s)` in the search field, and you are good to go !\r\n\r\nThis search field can also be used to download audio files (`!d \u003cYouTube URL\u003e`) or to listen to some music (`!p \u003cYouTube URL or ID\u003e`). All that stuff in one place, nice uh ? :wink:\r\n\r\n## Downloading audio files\r\n\r\nAs mentioned above, you can download audio streams from YouTube. There is two ways to do that :\r\n\r\n- \u003cu\u003eThe default way\u003c/u\u003e : the audio stream will be read and written in a `.mp3` file. It works, but might take a lot of time to complete and generate some errors.\r\n\r\n- \u003cu\u003eThe most efficient way\u003c/u\u003e : you can use the most recent version of _[Youtube-dl](https://github.com/ytdl-org/youtube-dl/)_. It is way faster and will provide you audio files with some metadata.\r\n\r\n**Windows users please put the Youtube-dl executable into the project's directory**\r\n**Linux users please put Youtube-dl (or a symbolic link to it) into the /usr/bin folder**\r\n\r\n## Weather forecast\r\n\r\n_BadassBoard_ can provide you weather forecast thanks to the _OpenWeatherMap_ API. This feature require a token. As there is already one provided, you can use it as it is. But, if you want, you can use your own. More info [here](https://openweathermap.org/api).\r\n\r\n## Audio streaming\r\n\r\nAs mentioned above, you can stream YouTube videos or playlists (thanks to the _Invidious_ API). Because _Invidious_ is becoming more and more popular, you might encounter some issues while using this feature. In this case, a message will inform you that your request couldn't be completed. If you're facing it, I invite you to open an issue with the more details that you can provide. But keep in mind that this might be related to the  _Invidious_ instance being used, as the audio streaming feature is based on it.\r\n\r\n## Chatbot\r\n\r\nSince the 0.3.0 version, a (basic) chatbot is embedded in _BadassBoard_.\r\n\r\nIt can respond to basic messages, but also provide you some information about the weather, give you a movie review (thanks to a built-in _rottentomatoes.com_ scraping module), or search for terms and expressions on _Wikipedia_.\r\n\r\nYou can customize its look and feel using the settings menu.\r\n\r\n# Contributing\r\n\r\nYou found a bug or just have a suggestion ? Feel free to create an issue with the more details that you can provide (error code, context, etc.).\r\n\r\nIf you want to improve the app, you can create a pull request or fork it as well.\r\n\r\n## Development notes\r\n\r\nHere are a few notes if you want to modify this project :\r\n\r\nTo make development easier, the client-side JS code is minified using the _Minify_ package and the _minify.js_ script.\r\n\r\nThe CSS code is generated with the help of the SCSS package.\r\n\r\nPlease note that these packages need to be installed globally on your system to function properly. In order to do that, just type `npm i -g \u003cpackage name\u003e` in your terminal.\r\n\r\nLike mentioned in the `package.json` file, the CSS code can be compiled with the `sass` command, and the JS code can be minified by running `node minify`.\r\n\r\n# Libraries used\r\n\r\nA special thank to the maintainers and creators of :\r\n\r\n- [Cheerio](https://cheerio.js.org/) ;\r\n- [Express](https://github.com/expressjs/express) ;\r\n- [Feedparser-promised](https://github.com/alabeduarte/feedparser-promised) ;\r\n- [IP](https://github.com/indutny/node-ip) ;\r\n- [Minify](https://github.com/coderaiser/minify) ;\r\n- [Natural](https://github.com/NaturalNode/natural) ;\r\n- [opusscript](https://github.com/abalabahaha/opusscript) ;\r\n- [Puppeteer](https://pptr.dev/) ;\r\n- [SCSS](https://yarnpkg.com/en/package/scss) ;\r\n- [Socket.io](https://socket.io) ;\r\n- [Ytdl-core](https://github.com/fent/node-ytdl-core) ;\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbelgiangeek%2Fbadassboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbelgiangeek%2Fbadassboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbelgiangeek%2Fbadassboard/lists"}