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
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 <repository-url>
git clone <your-repository-url>
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