Wavelength is a cross-platform music app that picks up from YouTube Music to serve an ad-free music-streaming experience while allowing you to download songs offline, along with the option for a complete offline experience.
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.
Run the SvelteKit app with dev mode.
$ bun dev
# or
$ pnpm dev
To run the desktop app in dev mode, you will need to have Rust installed on your system. Then run the tauri command.
$ bun tauri dev
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
Almost all microservices are entirely written in Go, with one crucial service, the YouTube Scraper, written in TypeScript (Node) for use of the YouTube.js library to retrieve data from the platform.
To run the entirety of the project, you need to have Docker installed on your system. The project includes a docker-compose.yml in the /server directory. Use the compose commands to start all the microservices up:
$ cd server
$ docker compose up
# shut all services down
$ docker compose down
The microservices use gRPC for communication. If you are looking to make any changes to the protobuf definitions, you need to run make to regenerate the gRPC client/server code.
# generate gRPC definitions
$ make generate
Note that the command also runs a package.json script with Bun to generate TypeScript definitions. If you do not have Bun installed, then change the Makefile to a different JavaScript package manager command. The yt-scraper service uses Bun during development (bun run dev) but the Dockerfile builds for Node in production. (There is a bug with Bun on GCP for gRPC connections)
This project is MIT licensed. See LICENSE.