From cae0136aafca38b9d31c485489a623946a09faca Mon Sep 17 00:00:00 2001 From: vaibhav Date: Sat, 14 Feb 2026 03:48:48 +0530 Subject: [PATCH] Update README with current status and features Clarify that the project implements *parts* of the OpenSubsonic API. Add a section detailing the current status and explicitly list implemented features. Update installation steps to include installing the Diesel CLI. Add an example for the `createUser.view` endpoint. --- README.md | 51 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index af4f395..e1640a3 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,22 @@ # SoundSonic -A Rust-based music streaming server implementing the OpenSubsonic API protocol. +A Rust-based server implementing parts of the OpenSubsonic API protocol. ## Overview -SoundSonic is a lightweight music streaming server built with Rust that implements the [OpenSubsonic](https://opensubsonic.netlify.app/) API specification. It allows you to stream your music collection to any OpenSubsonic-compatible client. +SoundSonic is a lightweight server built with Rust that implements the [OpenSubsonic](https://opensubsonic.netlify.app/) API specification. The long-term goal is to support streaming a local music collection to OpenSubsonic-compatible clients. + +## Status + +This project is under active development. Only a small subset of the OpenSubsonic API is implemented today (see **API Endpoints**). ## Features -- **OpenSubsonic API Support**: Compatible with any client supporting the OpenSubsonic protocol -- **User Management**: Role-based access control with customizable user permissions -- **SQLite Database**: Lightweight local storage with Diesel ORM -- **RESTful API**: Clean, well-structured API endpoints -- **Async Runtime**: Built on Tokio for high performance +- **OpenSubsonic Response Envelope**: Consistent `subsonic-response` JSON format +- **OpenSubsonic Extensions Endpoint**: Exposes supported extensions via `getOpenSubsonicExtensions` +- **User Creation**: `createUser.view` endpoint with role/permission fields +- **SQLite + Diesel**: Lightweight local storage +- **Axum + Tokio**: Async HTTP server runtime ## Technologies @@ -25,18 +29,23 @@ SoundSonic is a lightweight music streaming server built with Rust that implemen ## Prerequisites - Rust (latest stable version) -- SQLite +- SQLite (system library) - Diesel CLI (for database migrations) ## Installation 1. Clone the repository: ```bash -git clone +git clone cd soundsonic ``` -2. Set up the database URL: +2. Install Diesel CLI (SQLite): +```bash +cargo install diesel_cli --no-default-features --features sqlite +``` + +3. Set up the database URL: ```bash export DATABASE_URL=database.db ``` @@ -46,27 +55,37 @@ Or create a `.env` file: DATABASE_URL=database.db ``` -3. Run database migrations: +4. Run database migrations: ```bash diesel migration run ``` -4. Build and run the server: +5. Build and run the server: ```bash cargo run ``` -The server will start on `http://0.0.0.0:3311` +The server will start on `http://0.0.0.0:3311`. ## API Endpoints +All endpoints are nested under the `/rest` prefix. + ### System -- `GET/POST /rest/getOpenSubsonicExtensions` - Get supported OpenSubsonic extensions +- `GET /rest/getOpenSubsonicExtensions` +- `POST /rest/getOpenSubsonicExtensions` ### User Management -- `GET/POST /rest/createUser.view` - Create a new user with specified permissions +- `GET /rest/createUser.view` +- `POST /rest/createUser.view` (accepts `application/x-www-form-urlencoded`) + +Example: +```bash +curl -X POST 'http://localhost:3311/rest/createUser.view' \ + -d 'username=alice&password=secret&email=alice@example.com&adminRole=true&streamRole=true' +``` ### Request/Response Format @@ -137,7 +156,7 @@ diesel migration run ## License -[Your License Here] +MIT (see `LICENSE`). ## Contributing