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.
This commit is contained in:
vaibhav
2026-02-14 03:48:48 +05:30
parent 123a409e14
commit cae0136aaf

View File

@@ -1,18 +1,22 @@
# SoundSonic # SoundSonic
A Rust-based music streaming server implementing the OpenSubsonic API protocol. A Rust-based server implementing parts of the OpenSubsonic API protocol.
## Overview ## 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 ## Features
- **OpenSubsonic API Support**: Compatible with any client supporting the OpenSubsonic protocol - **OpenSubsonic Response Envelope**: Consistent `subsonic-response` JSON format
- **User Management**: Role-based access control with customizable user permissions - **OpenSubsonic Extensions Endpoint**: Exposes supported extensions via `getOpenSubsonicExtensions`
- **SQLite Database**: Lightweight local storage with Diesel ORM - **User Creation**: `createUser.view` endpoint with role/permission fields
- **RESTful API**: Clean, well-structured API endpoints - **SQLite + Diesel**: Lightweight local storage
- **Async Runtime**: Built on Tokio for high performance - **Axum + Tokio**: Async HTTP server runtime
## Technologies ## Technologies
@@ -25,18 +29,23 @@ SoundSonic is a lightweight music streaming server built with Rust that implemen
## Prerequisites ## Prerequisites
- Rust (latest stable version) - Rust (latest stable version)
- SQLite - SQLite (system library)
- Diesel CLI (for database migrations) - Diesel CLI (for database migrations)
## Installation ## Installation
1. Clone the repository: 1. Clone the repository:
```bash ```bash
git clone <repository-url> git clone <your-repository-url>
cd soundsonic 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 ```bash
export DATABASE_URL=database.db export DATABASE_URL=database.db
``` ```
@@ -46,27 +55,37 @@ Or create a `.env` file:
DATABASE_URL=database.db DATABASE_URL=database.db
``` ```
3. Run database migrations: 4. Run database migrations:
```bash ```bash
diesel migration run diesel migration run
``` ```
4. Build and run the server: 5. Build and run the server:
```bash ```bash
cargo run 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 ## API Endpoints
All endpoints are nested under the `/rest` prefix.
### System ### System
- `GET/POST /rest/getOpenSubsonicExtensions` - Get supported OpenSubsonic extensions - `GET /rest/getOpenSubsonicExtensions`
- `POST /rest/getOpenSubsonicExtensions`
### User Management ### 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 ### Request/Response Format
@@ -137,7 +156,7 @@ diesel migration run
## License ## License
[Your License Here] MIT (see `LICENSE`).
## Contributing ## Contributing