WaveLength is a cross-platform music app that wraps Rapid API's YouTube Music API and YouTube's official v3 API.
Clone the project.
$ git clone https://github.com/Dev-Siri/wavelength
NOTE: Each of these applications have their .env.example (with the server having .env.docker too), make sure you fill these variables before running them.
Navigate to the /web directory, and run the SvelteKit app with dev mode
$ cd web
$ bun dev
# or
$ pnpm dev
Navigate to the /mobile directory. Make sure you have Flutter. You'll also need the native tooling for the platform you're running on: Android requires Android-Studio and additional command-line tools and packages installed. iOS requires XCode to be installed on your Mac.
Then you can start the application in dev mode:
$ flutter run
Navigate to /server. Here you'll need a couple of things. One of these are YouTube credentials. Follow the instructions from yt-dlp's wiki page and make sure that you are using a burner YouTube account to not be at risk of termination. You should be retrieving the cookies in Netscape format.
Make sure you have Docker installed on your system.
Then you can build the docker image, and run it, specifying the PORT and --env-file.
$ docker build . -t wavelength/server
$ docker run -p 8080:8080 -e PORT=8080 --env-file=.env.docker wavelength/server
You will need Go 1.22+ installed on your system, and the GeoLite2-Country database from MaxMind. Get it by registering for a free MaxMind account here, after which you can download specifically the GeoLite2-Country database.
Create a directory named lib and place the database file in it.
After this, you can navigate back to /server and finally run the Go server:
# Run it directly.
$ go run main.go
# OR: Compile the server to a binary, then run it.
$ go build -v -trimpath -ldflags=-s -ldflags=-w -buildvcs=false -o ./bin/wavelength .
$ ./bin/wavelength
# OR: Run it using `air` if you have it installed.
$ air
This project is MIT licensed. See LICENSE.