vaibhav 123a409e14 Add README.md with project overview
This commit introduces the README.md file for the SoundSonic project.
It provides a comprehensive overview of the project, its features,
technologies used, installation instructions, API endpoints, user roles,
configuration details, development guidance, supported extensions,
license,
contributing guidelines, and acknowledgments.
2026-02-14 03:38:20 +05:30
2026-02-14 03:36:11 +05:30
2026-02-13 22:02:54 +00:00
2026-02-14 03:38:20 +05:30

SoundSonic

A Rust-based music streaming server implementing the OpenSubsonic API protocol.

Overview

SoundSonic is a lightweight music streaming server built with Rust that implements the OpenSubsonic API specification. It allows you to stream your music collection to any OpenSubsonic-compatible client.

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

Technologies

  • Rust (Edition 2024)
  • Axum - Web framework
  • Tokio - Async runtime
  • Diesel - ORM with SQLite
  • Serde - Serialization/deserialization

Prerequisites

  • Rust (latest stable version)
  • SQLite
  • Diesel CLI (for database migrations)

Installation

  1. Clone the repository:
git clone <repository-url>
cd soundsonic
  1. Set up the database URL:
export DATABASE_URL=database.db

Or create a .env file:

DATABASE_URL=database.db
  1. Run database migrations:
diesel migration run
  1. Build and run the server:
cargo run

The server will start on http://0.0.0.0:3311

API Endpoints

System

  • GET/POST /rest/getOpenSubsonicExtensions - Get supported OpenSubsonic extensions

User Management

  • GET/POST /rest/createUser.view - Create a new user with specified permissions

Request/Response Format

All API responses follow the OpenSubsonic response format:

{
  "subsonic-response": {
    "status": "ok",
    "version": "1.16.1",
    "type": "SoundSonic",
    "serverVersion": "1.16.1",
    "openSubsonic": true
  }
}

User Roles

Users can have the following permissions:

  • adminRole - Administrative privileges
  • streamRole - Stream music
  • downloadRole - Download music
  • uploadRole - Upload music
  • playlistRole - Manage playlists
  • coverArtRole - Manage cover art
  • commentRole - Add comments
  • podcastRole - Access podcasts
  • shareRole - Share content
  • jukeboxRole - Jukebox control
  • videoConversionRole - Video conversion
  • settingsRole - Change settings
  • ldapAuthenticated - LDAP authentication

Configuration

The server can be configured via environment variables:

  • DATABASE_URL - Path to the SQLite database file (required)

Development

Running in development mode:

cargo run

Building for production:

cargo build --release

Database schema changes:

diesel migration generate <migration_name>
diesel migration run

Supported OpenSubsonic Extensions

  • apiKeyAuthentication - API key-based authentication
  • formPost - Form-based POST requests
  • indexBasedQueue - Index-based queue management
  • songLyrics - Song lyrics support
  • transcodeOffset - Transcoding offset support
  • transcoding - Audio transcoding capabilities

License

[Your License Here]

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Acknowledgments

  • OpenSubsonic - The API specification this server implements
  • Subsonic - The original music streaming server
Description
open subsonic api implementation
Readme MIT 96 KiB
Languages
Rust 100%