- Download and store audio from Youtube.
- Direct upload of audio.
- Secure user accounts and authentication.
- Create and manage playlists.
- Well featured audio player with seek, exponential volume control, loop controls including shuffle and repeat.
- Ability to share songs between accounts and playlists.
- NodeJS/npm
- serve
- FFMPEG
- Python 3.7 or greater installed on system.
- A mysql/mariadb database. (some scripts may not work properly outside of MariaDB)
- screen (optional)
- Clone the source code locally.
git clone https://github.com/ArtificialLegacy/blubify.git
- Install packages.
cd ./blubify
npm i
- Install and config a mysql fork such as MariaDB.
- Setup the blubify database.
CREATE DATABASE blubify;
USE blubify;
- Open db directory
cd ./packages/db
- Run
npm run migrate latest
in./packages/db
.
SHOW tables;
- Create .env in the server directory with the following:
DATABASE_URL="" # url to hosted database.
DATABASE="" # name of database.
- Open server directory
cd ./packages/server
- Create .env in the server directory with the following:
# optional if FFMPEG is installed on PATH
FFMPEG_PATH="" # Path to the exe file.
FFMPEG_LOCATION="" # Path to bin directory.
API_IP="" # The ip to host the ip on, either 127.0.0.1 for hosting locally or you're ip on you're local network.
API_PORT="" # The port to host the api on.
- Running the server is blocking so it must be run within it's own screen/terminal
# OPTIONAL: create a screen
screen -S BlubifyServer
# run server
npm start
- Open client directory.
cd ./client
- Create .env in the client directory with the following.
VITE_API_URL="" # Should be similar to http://{API_IP}:{API_PORT}
- Build static files for hosting.
npm run build
- Running the client is blocking so it must be run within it's own screen/terminal.
# OPTIONAL: create a screen
screen -S BlubifyClient
# run client
npm run host
- Retrieve new source code
git pull
- Install packages.
npm i
- Run
npm run migrate latest
in./packages/db
.
- Build static files for hosting.
npm run build
- Occasionally as the
youtube-dl-exec
package gets out of date it will be unable to download songs imported from youtube, to fix this you can try to update the package.
npm update youtube-dl-exec