Ctrl K
ComunidadGuías…

CONTRIBUTING.md

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Contributing to RiffPlayer

Thanks for your interest! RiffPlayer is a small project, and bug reports, ideas and pull requests are all welcome.

## Reporting bugs and asking for features

Open an [issue](https://github.com/atabayrak460/riffplayer/issues/new/choose) and pick the matching template. For bugs, the most useful details are your RiffPlayer version, how you run it (Docker, from source), and the steps to reproduce.

**Security problems:** please do not file a public issue. See [SECURITY.md](SECURITY.md).

## Development setup

The repository is a monorepo:

| Folder | What it is |
|---|---|
| `server/` | Node.js + TypeScript backend (Fastify, SQLite) |
| `web/` | React + TypeScript web app (installable PWA) |
| `mobile/` | Flutter Android app |

```bash
npm ci                 # installs server + web (npm workspaces)
npm run server         # backend with auto-reload
npm run web            # web app dev server (Vite), proxies to the backend on :4533
```

`ffmpeg` must be installed for the transcoding tests. For the mobile app: install Flutter, then `cd mobile && flutter pub get && flutter run`. More detail is in the [README](README.md#development) and [`mobile/README.md`](mobile/README.md).

## Before you open a pull request

CI runs the same checks, so running them locally saves a round trip:

```bash
# server and web (run each from its own folder)
npx tsc --noEmit
npm run lint
npx vitest run
# web only
npm run build

# mobile (from mobile/)
flutter analyze
flutter test
```

Guidelines:

- Keep pull requests small and focused on one change.
- Add or update tests when you change behaviour. If you fix a bug, a test that fails without your fix is ideal.
- RiffPlayer must keep working with the Subsonic API. Don't change existing Subsonic responses to add a feature; use the extended `/api/v1` API for that.
- The server only serves the user's own files. Features that fetch or download music from external services won't be accepted.
- No telemetry or "phoning home". Anything that contacts an external service must be opt-in and documented.

## License

By contributing you agree that your contributions are licensed under the [AGPL-3.0](LICENSE), the same as the project.