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 yoinkInstall frontend dependencies
cd frontend && bun install && cd ..Configure environment
cp .env.example .envFor development, you may want to set AUTH_DISABLED=true to skip authentication.
Start development servers
mise run devThis 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 -dProject Commands
| Command | Description |
|---|---|
mise run dev | Start backend + frontend in dev mode |
mise run lint | Run all linters |
mise run lint-server | Clippy with warnings as errors |
mise run lint-frontend | Frontend linting via oxlint |
mise run build-frontend | Production frontend build |
mise run gen-frontend-types | Regenerate TypeScript types from OpenAPI spec |
mise run sea | SeaORM 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 guideDo not modify CHANGELOG.md or crate version numbers. These are managed by release-please.
Pull Request Workflow
- Fork the repository and create a feature branch
- Make your changes with conventional commit messages
- Verify your changes pass checks:
cargo fmt --check
cargo test -p yoink-server
cd frontend && bun run lint && bun run fmt:check- Submit a pull request
API Contract Changes
If you modify API routes or response types:
- Update the
utoipaannotations on the affected handlers - Start the backend:
mise run run-server - Regenerate frontend types:
mise run gen-frontend-types - Commit the regenerated
frontend/src/lib/api/types.gen.ts