Thanks for your interest in contributing! This document will help you get started.
For detailed instructions on setting up your local development environment, please refer to the README.
- Create your feature branch
git checkout -b feature/your-feature
- Run the development server
npm run dev
- (Optionally) Run asynchronous jobs
npm run dev:inngest
- Run API (unit) tests
npm run test
- Run app (end-to-end) tests
npm run shortest
npm run shortest -- --no-cache # with arguments
- We use Vitest for our unit test suite
- We use Shortest for end-to-end tests
- Don't mock database queries in tests, rely on the seed data or inserting test data as part of the test
- Update documentation if you're changing behavior
- Add or update tests for your changes
- Make sure all tests pass
- Request a review from maintainers
- After reviews begin, avoid force-pushing to your branch
- Force-pushing rewrites history and makes review threads hard to follow
- Don't worry about messy commits - we squash everything when merging to main
- The PR will be merged once you have the sign-off of at least one maintainer
- Write in TypeScript
- Follow the existing code patterns
- Use clear, descriptive variable names
A great bug report includes:
- A quick summary and/or background
- Steps to reproduce
- Be specific!
- Give sample code if you can
- What you expected would happen
- What actually happens
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
We use the Conventional Commits specification.
A commit message should be structured as follows:
type(scope): title
description
Where type can be:
feat
: new feature or enhancementfix
: bug fixesdocs
: documentation-only changestest
: test-only changesrefactor
: code improvements without behaviour changeschore
: maintenance/anything else
Example:
feat(cli): Add mobile testing support
- Check existing discussions/issues/PRs before creating new ones
- Start a discussion for questions or ideas
- Open an issue for bugs or problems
By contributing, you agree that your contributions will be licensed under the Iffy Community License.