Musicseerr/CONTRIBUTING.md
Arno 63ccf03dac
refactor: Prototype of tanstack-query (#34)
* move getApiUrl to api folder

* adjust imports

* tanstack-query example with homeData

* small adjustments

* fix key collision

* new MusicSource persistent mechanism example

* add error handling & set sveltekit to SPA mode

* remove unnecessary ssr test
2026-04-11 13:46:07 +01:00

2.5 KiB

Contributing to MusicSeerr

Thanks for your interest. Bug reports, feature requests, and pull requests are all welcome.

Reporting Bugs

Use the bug report template. Include your MusicSeerr version, steps to reproduce, and relevant logs from docker compose logs musicseerr. The more detail you give, the faster things get fixed.

Requesting Features

Use the feature request template. Check existing issues first to avoid duplicates.

Development Setup

The backend is Python 3.13 with FastAPI. The frontend is SvelteKit with Svelte 5, Tailwind CSS, and daisyUI.

Prerequisites

  • Python 3.13+
  • Node.js 22+
  • Docker (for building the full image)

Running Locally

Backend:

cd backend
pip install -r requirements-dev.txt
cp env.dev.example .env
uvicorn main:app --reload --port 8688

Frontend:

cd frontend
cp env.development.example .env.development
pnpm install
pnpm run dev

Running Tests

make backend-test    # backend suite
make frontend-test   # frontend suite
make test            # both

Frontend browser tests use Playwright. Install the browser first:

make frontend-browser-install

Pull Requests

  1. Fork the repo and create a branch from main.
  2. Give your branch a descriptive name: fix-scrobble-timing, feature-playlist-export, etc.
  3. If you're fixing a bug, mention the issue number in the PR description.
  4. Make sure tests pass before submitting.
  5. Keep changes focused. One PR per fix or feature.

Code Style

  • Backend: strong typing, async/await, no blocking I/O in async contexts.
  • Frontend: strict TypeScript, no any. Named exports. Async/await only.
  • Use existing design tokens (primary, secondary, etc.) for colours, not hardcoded values.
  • Run pnpm run lint and pnpm run check in the frontend before submitting.

AI-Assisted Contributions

If you used AI tools (Copilot, ChatGPT, Claude, etc.) to write code in your PR, please mention it. This isn't a problem and won't get your PR rejected, but it helps reviewers calibrate how much scrutiny to apply. A quick note like "Claude helped with the caching logic" is enough.

You're still responsible for understanding and testing the code you submit.

Questions?

Open a thread in Discord or start a GitHub Discussion.