# Contributing to Audion Server Thank you for your interest in contributing to Audion Server! We welcome bug reports, feature requests, documentation improvements, and pull requests. ## ๐Ÿ› ๏ธ Development Prerequisites To develop on the codebase, you need: - **Rust Stable** (v1.82+) - **Node.js** (v18+) - **Docker** and **Docker Compose** (optional, for containerised testing) - **FFmpeg** installed and added to your system path (optional, for FLAC transcoding support) ## ๐Ÿ’ป Local Setup 1. **Clone the repository:** ```bash git clone https://github.com/your-username/audion-app.git cd audion-app ``` 2. **Configure environment:** Copy the example environment file: ```bash cp .env.example .env ``` Generate a JWT secret: ```bash openssl rand -hex 32 ``` Open `.env` and set `AUDION_JWT_SECRET` to the generated hex string, and `AUDION_ADMIN_PASSWORD` to a password of your choice. 3. **Start the Frontend Development Server:** ```bash cd frontend npm install npm run dev ``` The frontend will run at `http://localhost:5173` with hot-module reloading. 4. **Start the Backend:** In another terminal, return to the root folder and run: ```bash cargo run ``` The backend will run on `http://localhost:8080`. ## ๐ŸŽจ Code Styling & Quality We maintain high code quality standards. Please check the following before submitting code changes: - **Rust Backend**: Format your code: ```bash cargo fmt ``` Run linting checks: ```bash cargo clippy --all-targets --all-features -- -D warnings ``` - **Svelte Frontend**: Format and lint the frontend files: ```bash cd frontend npm run lint ``` ## ๐Ÿงช Testing Before creating a pull request, run the local integration tests to verify your changes do not break existing features: ```bash # Run backend compile and cargo check cargo check # Run the API/integration test suite node tests/api_test.js ``` ## ๐Ÿ“ฌ Pull Request Process 1. Fork the repository and create your branch from `master` (e.g., `feature/cool-new-thing` or `fix/tunnel-crash`). 2. Implement your changes, adding tests if applicable. 3. Ensure all styling, linting, and tests pass. 4. Commit your changes with clear, descriptive commit messages. 5. Push to your fork and submit a Pull Request. 6. A maintainer will review your pull request shortly!