Skip to main content

Lightweight music-only media server

Project description

welcome to qwave!!


"

what is this?

qWave is a locally hosted media server designed for music! that is to say, it's like spotify or any other streaming service, ran on your own network under your control with your media files. That way you can stream your personal media files from anywhere instead of just on one device!

[!IMPORTANT] this is just a demo!! it's not my first priority, but know that this software will have lots of potentially breaking changes over the future. You can directly contact me via @qwikster_ on discord if you've decided to use this to manage your library and would like help migrating as this project continues to improve! and make sure to revisit this (or add an issue!) if the project doesn't meet your expectations yet :D

you can always make your own frontend if this isn't to your liking!

installation

qWave is designed to run on Linux only. I recommend you run it on a dedicated server machine (as simple as a rpi), but it will work just fine running in the background on your desktop machine, as long as you're okay with it being the dependency for all your devices.

  • dependencies: python, a pypi manager, and ffmpeg! others will be handled by python. for development, you'll also need npm.
  • Use either pipx or your desired tool to download qwave from pypi: pipx install qWave

[!NOTE] You can also use qWave by directly installing it as shown below, but you'll have to manually set up a script to start it because of its unmanaged dependencies.

  • set up your server: qwave_init, and follow the directions!

[!WARNING] if you are installing with an account other than root, pick the user install! sudo can mess with permissions. i recommend leaving the defaults otherwise.

  • run the server with qwave and visit 0.0.0.0:4269/app to start uploading files!

some useful information:

  • once you've uploaded your file, it will be transcoded to .opus and the original deleted - keep the old file around if it's special and you don't care about storage space!

setup for development

  • first: git clone https://github.com/qwikster/qwave.git && cd qwave.
  • you'll need to create a venv: python3 -m venv .venv then source .venv/bin/activate
  • install qwave as a package locally: pip install -e ./qwave-server
  • if you don't already have a local install, follow the installation instructions from after installation.
  • start the backend: qwave
  • start the frontend as a development server: npm run dev and follow that ip
  • frontend changes will update in real time! run npm run build to move to the install for local use

[!TIP] you can download openapi.json directly from the server to use an API software like Yaak or Postman!

  • backend changes will immediately take effect after you restart the software
  • PRs are welcome!! more detailed documentation will come soon!

things i want to add before a full release:

  • android client
  • linux client (CLI...?)
  • more intuitive web frontend
  • finish the visualizer thingy
  • proper playlist support
  • move queues to server side
  • move import flow to server side
  • favourites system
  • content recommendations
  • handle albums and singles better
  • more file organization
  • way better import flow
  • content id, auto imports
  • better security
  • per-account songs and features
  • editing for frontend
  • more useful endpoints
  • branding options
  • more documentation
  • last.fm and discord integration
  • anything you guys suggest
  • promote to the public!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qwave-0.0.2.tar.gz (2.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qwave-0.0.2-py3-none-any.whl (2.8 MB view details)

Uploaded Python 3

File details

Details for the file qwave-0.0.2.tar.gz.

File metadata

  • Download URL: qwave-0.0.2.tar.gz
  • Upload date:
  • Size: 2.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for qwave-0.0.2.tar.gz
Algorithm Hash digest
SHA256 782a391efb9aa2391ef63bc96eb4ddab09a7ea715e9b2509b989dd34c4259586
MD5 3df124253f517731188f79d15d8f6e24
BLAKE2b-256 e1424ebe9f772a9aff3ab48016687c11b7f31ed7a9d2e7959315f2a39f9dad39

See more details on using hashes here.

File details

Details for the file qwave-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: qwave-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 2.8 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for qwave-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 14a7f2255816c6c1f04ae624ae1c2ea8a75a2ff795fb2f9fd9bcdde51edf1b9c
MD5 252e18ef3b27e0521b3cc9d5661e3e33
BLAKE2b-256 1c3e67730ff1542c7f6e75f699ee50cc72b514c0160c8c0f66f1762671cfddb4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page