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:
51
README.md
51
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 <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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user