Radio-ish music streaming on a web
Table of Contents
dark mode (default) | light mode |
---|---|
Spotify is cool and I love it, but how do you enjoy any mp3 file you have with your friends? What if they don't have music that you wanted? This project's main objective is to be able to enjoy mp3 file with others, in the same time.
Simply put, it's an endless radio station made of your mp3 files.
- Radio station - Doesn't stop even if noone's listening.
- Enqueuing music by request
- Synchronized music position
- Extracting cover image and metadata from mp3 file
- Saving and comparing metadata on a mongoDB database
- Get/Update lyrics from the database
- Console commands
- Force skipping music
- Reloading music without restarting the server
- Enqueuing music
- Synchronized music position
- Responsive design for both PC and mobile
- Mediasession support with cover image and metadata
- Reading and editing lyrics with HTML
- Features for searching music
- Sorting title to ascending/descending order
- Searching through music title/artist/album
- Searching through romaji title/artist for Japanese
- Keyboard shortcuts
L
toggles lyric modeE
inside lyric mode enables edit modeCtrl + S
saves lyrics and returns to lyric modeESC
does not save lyrics and returns to lyric mode
ESC
exits lyric mode
M
toggles muteSpace
toggles play/stop
- Save/Loading states
- Light mode toggle
- Clone the repo
git clone https://github.com/hw4n/melody
- Install dependencies for backend, starting
And you must install
cd melody/server yarn install
ffmpeg
(as well asffprobe
).
Maybe here or any of your choice. - Set environment variables
Create.env
Use any of your choiceDon't change port if it's not needed, client uses proxy to port 3333 for default Also set DBURI to your own mongoDB connection stringvim .env code .env ...
PORT=3333 DBURI=mongodb+srv://...
- Create
mp3
directory and put music
It doesn't matter if the mp3 files are nested inside another directory.You can also use a symlink to point mp3 directory, however the link should be named asserver ┐ ├ mp3 ┐ ├ src ├ something.mp3 └ ... └ myAlbum ┐ ├ track1.mp3 └ track2.mp3
mp3
.
For example,$ melody/server> ln -s ~/musics mp3
- Start the backend server
yarn start
- Install dependencies for frontend and start
cd melody/client yarn install yarn start
- Append
STAGE=live
to.env
When this flag is set, server will servebuild
on the same directory - Build client, and move it
Then move
cd melody/client yarn build
build
directory intoserver
directorymv build ../server # or cp -r build ../server
- Build server and run it
cd melody/server yarn build node built/index.js
Any contributions you make are hugely appreciated.
I don't really have any restrictions or regulations on how to make an issue or how to commit. However post any questions, suggestions... on issues tab for contribution, I'll reply.
Distributed under the MIT License. See LICENSE
for more information.
Hwanhee Chae - hh@hwan.me
Project Link: https://github.com/hw4n/melody