Thanks for your interest in contributing! Here's how to get started.
- Fork and clone the repo
- Run
bin/setupto install dependencies and set up the database - Run
bin/devto start the development server
See Getting Started for detailed setup instructions.
- Create a feature branch from
main - Make your changes
- Run the test suite:
rails test:all - Run linters:
bundle exec rubocop -A && bundle exec erb_lint --lint-all -a - Push and open a pull request
- Thin controllers, rich models - business logic belongs in models
- Always scope to organization - use
Current.organization.resources, neverResource.all - Associate with membership - org-scoped resources belong to
membership, notuser - Pundit for authorization - generate policies with
rails g pundit:policy resource_name
See Development Guide for more details.
- Keep PRs focused on a single change
- Include tests for new features and bug fixes
- Make sure CI passes (linting + tests)
- Describe what changed and why in the PR description
Open an issue with:
- Steps to reproduce
- Expected vs actual behavior
- Ruby/Rails version
Open an issue describing the use case and proposed solution. Discussion before implementation helps avoid wasted effort.