A free, open source personal media server written in C# and available on all platforms thanks to the Mono framework.
Licensed under The GNU General Public License v3.0, for more information please read the LICENSE.md file in this repository or visit the preceding link to the GNU website.
WaveBox features a very extensible JSON API, and is built with API developers in mind! Full API documentation can be found in API_DOCS.md.
The test suite lives under tests/ and uses xUnit v3:
WaveBox.Core.Tests— pure unit tests for the core library.WaveBox.Server.Tests— server unit tests plus integration tests against a real temporary SQLite database (integration tests run serialized; they isolate all state via theWAVEBOX_ROOT/WAVEBOX_TEMPenvironment overrides).WaveBox.E2E.Tests— black-box tests that boot a real server process on a random port with a generated MP3 fixture and drive the legacy/apiand OpenSubsonic/restAPIs over HTTP.
Run everything locally with:
dotnet testBy default the E2E suite launches the locally built (JIT) server. To run it against a NativeAOT-published binary — which is what CI does, since trimming/rooting regressions only appear there — point it at the binary:
dotnet publish WaveBox.Server -c Release -r osx-arm64
WAVEBOX_E2E_BINARY=$PWD/WaveBox.Server/bin/Release/net10.0/osx-arm64/publish/WaveBox.Server \
dotnet test tests/WaveBox.E2E.Tests -c ReleaseThe transcoded-stream E2E test skips automatically when ffmpeg is not installed.
Though WaveBox is currently under heavy development, several clients and libraries exist which can interact with a WaveBox server. If you wish to have a client included in this list, please send a pull request!
- WaveBoxWebClient - The official HTML5 web client for WaveBox. GPL3 licensed.
- php-wavebox - A PHP 5.4+ WaveBox API client library. MIT licensed.
- rb-wavebox - A Ruby WaveBox API client library. MIT licensed.
Have questions about the project, or want to help out? Come talk to us on irc.freenode.net at #wavebox!