yoink

Contributing

How to set up a development environment and contribute to yoink.

Contributions are welcome. Whether it's a bug fix, new feature, or documentation improvement.

Development Setup

Fork and clone

git clone https://github.com/YOUR_USERNAME/yoink.git
cd yoink

Install tools

mise install

This installs bun, sea-orm-cli, and other development dependencies.

Install frontend dependencies

cd frontend && bun install && cd ..

Configure environment

cp .env.example .env

For development, you may want to set AUTH_DISABLED=true to skip authentication.

Start development servers

mise run dev

This starts the backend in watch mode and the frontend dev server. The UI is at http://localhost:5173.

Alternatively, use Docker for the full stack:

docker compose -f compose.dev.yaml up -d

Project Commands

CommandDescription
mise run devStart backend + frontend in dev mode
mise run lintRun all linters
mise run lint-serverClippy with warnings as errors
mise run lint-frontendFrontend linting via oxlint
mise run build-frontendProduction frontend build
mise run gen-frontend-typesRegenerate TypeScript types from OpenAPI spec
mise run seaSeaORM CLI (migrations, entities)

Commit Conventions

Use Conventional Commits for all commit messages:

feat: add album merge dialog
fix: prevent duplicate provider links
docs: update SoulSeek setup guide

Do not modify CHANGELOG.md or crate version numbers. These are managed by release-please.

Pull Request Workflow

  1. Fork the repository and create a feature branch
  2. Make your changes with conventional commit messages
  3. Verify your changes pass checks:
cargo fmt --check
cargo test -p yoink-server
cd frontend && bun run lint && bun run fmt:check
  1. Submit a pull request

API Contract Changes

If you modify API routes or response types:

  1. Update the utoipa annotations on the affected handlers
  2. Start the backend: mise run run-server
  3. Regenerate frontend types: mise run gen-frontend-types
  4. Commit the regenerated frontend/src/lib/api/types.gen.ts

On this page