Discover, collect and play music from Youtube, Soundcloud, Bandcamp, Deezer and other streaming platforms.
Music libraries like Spotify and Apple Music make it easy to play and collect music that is released officially by music labels.
Openwhyd, on the other hand, allows music lovers to discover, play and collect any musical gem that is available on the most popular streaming platforms, including:
- music videos, bootlegs and specific live performances,
- fresh tracks from new and/or local artists,
- DJ sets and rare remixes,
- or any song that can be found and streamed online.
Free to use at openwhyd.org, and on your iPhone.
Features:
- Playlists: made of tracks from various sources: Youtube, Soundcloud, Bandcamp, Deezer...
- Button: Add a track from any web page, in a few clicks, using our Google Chrome extension and bookmarklet
- Radio: Subscribe to music curators based on your musical taste, and listen to their latest discoveries
- Fame: Get a following by creating awesome playlists, and being featured in the "Hot Tracks" ranking
- Search: Add descriptions to your track, to make them easier to find when you need them
- Integration: Embed your playlists on your blog or website, so your visitors can listen to it directly.
This product is the result of years of iterative development, by the start-up company Whyd. Read the full story from Whyd to Openwhyd.
Since its code was generously open-sourced by Whyd, Adrien Joly (ex-lead developer at Whyd) has been maintaining it on his spare time (i.e. replying to user feedback on twitter and facebook, maintaing issues based on user feedback, backing up openwhyd's database, updating SSL certificates...), and coordinating contributors.
We welcome contributors, including beginners!
- Latest stats, analytics and demographics: Openwhyd data report, mid-october 2016
- A question / problem? --> Check out our FAQ
- Node.js
- Express-like Web Server
- jQuery
- HTML + CSS
- Playemjs for streaming tracks continuously
If you want to contribute, please:
- read the contribution guidelines: CONTRIBUTING.md;
- pick an issue from our roadmap, work on it, then propose a Pull-Request;
- if you need help, ask us on Slack.
Also, be aware that this project has become open-source very recently, so please be kind and constructive about code quality, and about the management of this project.
Thank you for your understanding! ^^
Docker makes it easy and safe to install and start the two servers required for Openwhyd: the MongoDB database server, and the whydJS web/application server. All you need is access to the shell (a.k.a. terminal), and to have Docker and Git installed on your machine.
- Install Docker Client and start it
- Install Git if you don't have it already
- Clone openwhyd's repository:
git clone https://github.com/openwhyd/openwhyd.git
, thencd openwhyd
- Build and launch Docker processes:
docker-compose up
- Open http://localhost:8080 in your web browser => you should see Openwhyd's home page! 🎉
- When you're done, shutdown the Docker processes by pressing the
Ctrl-C
key combination in the shell instance where you had rundocker-compose up
(step 4).
Whenever you want to update your local clone of Openwhyd's repository to the latest version, run git pull
from the openwhyd
folder where you had cloned the repository (step 3).
Whenever you want to start the Docker processes after shutting them down (step 7), run docker-compose up
again from the openwhyd
folder where you had cloned the repository (step 3).
Whenever you just want to restart Openwhyd while the Docker processes are still running, run docker-compose restart web
from a shell terminal.
Whenever you want to know what Docker processes are currently running: run docker-compose ps
.
- Install Node.js, MongoDB, GraphicsMagick or ImageMagick
- Make sure that
make
andg++
are installed (required for building npm binaries, I had to do this and this) - Make sure that a MongoDB server is running
- Make sure that the necessary environment variables are defined (see below)
- Make sure that the database is initialized (by running
mongo openwhyd_data whydJS/config/initdb.js
andmongo openwhyd_data whydJS/config/initdb_team.js
) - Make sure that dependencies are installed (
npm install
) - If you want notifications to be pushed to your iPhone app, make sure that Apple Push Notification Service (APNS) certificates are copied to
/whydJS/config/apns
with the following filenames:aps_dev.cert.pem
,aps_dev.key.pem
,aps_prod.cert.pem
,aps_prod.key.pem
, andDev_Whyd.mobileprovision
. (you can test them usingtest_apns.sh
)
docker-compose up
, ornpm run run
(for development), ornpm start
(forever daemon)- Open http://localhost:8080 (or
WHYD_URL_PREFIX
) - During development, you may have to restart the server to have your changes taken into account. To restart the Docker container, use
docker-compose restart web
.
Run unit tests only:
npm run test-unit
Run all tests, including acceptance tests (webdriver.io-based), from the whydJS
folder:
# in a terminal session, start the "whydJS" application server
npm run run-for-tests
# in another terminal session, run the tests
npm test
Run all tests against the Docker container:
npm run test-docker
WHYD_GENUINE_SIGNUP_SECRET
(mandatory. a secret key that is used to make sure that sign-ups are legit)WHYD_SESSION_SECRET
(mandatory. a secret key used to sign session cookies)WHYD_DEV_APNS_PASSPHRASE
(mandatory. the passphrase used to de-cypher APNS certificate and key, for iOS push notifications in DEV mode)WHYD_APNS_PASSPHRASE
(mandatory. the passphrase used to de-cypher APNS certificate and key, for iOS push notifications in PRODUCTION mode)WHYD_ADMIN_OBJECTID
(ObjectId of the user that can access to admin endpoints)WHYD_ADMIN_NAME
(Full-text name of the user that can access to admin endpoints)WHYD_ADMIN_EMAIL
(mandatory. Email address of the user that can access to admin endpoints)WHYD_CONTACT_EMAIL
(mandatory. email for users to contact the site's team)WHYD_CRASH_EMAIL
(mandatory when running with forever. email address of the site's administrator)WHYD_URL_PREFIX
(default:http://localhost:8080
)WHYD_PORT
(default:8080
)WHYD_DEV
(default:false
)MONGODB_DATABASE
(example:openwhyd_data
, oropenwhyd_test
)MONGODB_HOST
(default:localhost
)MONGODB_PORT
(default:27017
)MONGODB_USER
(default: none)MONGODB_PASS
(default: none)SENDGRID_API_USER
(mandatory. email address of sendgrid account to be used for sending emails)SENDGRID_API_KEY
(mandatory. key / password of sendgrid account)SENDGRID_API_FROM_EMAIL
(mandatory. email address of email sender)SENDGRID_API_FROM_NAME
(mandatory. name of email sender)LAST_FM_API_KEY
(mandatory. for lastfm scrobbling)LAST_FM_API_SECRET
(mandatory. for lastfm scrobbling)ALGOLIA_APP_ID
(mandatory. for search index)ALGOLIA_API_KEY
(mandatory. for search index)
Support us with a monthly donation and help us continue our activities. [Become a backer]
Become a sponsor and get your logo on our README on Github with a link to your site. [Become a sponsor]