Skip to content

Pull Request Guidelines
Created on

This guide covers how to create and submit pull requests that are easy to review and likely to be merged.

  1. Check existing issues - Look for related issues or PRs before starting work
  2. Discuss large changes - For significant features, open an issue first to discuss the approach
  3. Keep PRs focused - One PR should address one concern (feature, bug fix, refactor)

Use descriptive branch names with a prefix:

PrefixUse Case
feat/New features
fix/Bug fixes
docs/Documentation changes
refactor/Code refactoring
test/Adding or updating tests
chore/Maintenance tasks

Examples:

  • feat/task-filtering
  • fix/login-redirect-loop
  • docs/contributing-guide
  • refactor/task-service

Follow Conventional Commits format:

<type>(<scope>): <description>
[optional body]
[optional footer(s)]
TypeDescription
featNew feature
fixBug fix
docsDocumentation only
styleFormatting, no code change
refactorCode change that neither fixes nor adds
testAdding or updating tests
choreMaintenance, dependencies
Terminal window
# Feature
feat(tasks): add task filtering by status
# Bug fix
fix(auth): resolve redirect loop on login
# With scope and body
feat(api): add rate limiting to public endpoints
Implements token bucket algorithm with configurable
limits per endpoint. Default is 100 requests per minute.
Closes #123
  • Use imperative mood: “add feature” not “added feature”
  • Keep the first line under 72 characters
  • Reference issues in the footer: Closes #123, Fixes #456

Before creating your PR, run these checks locally:

Terminal window
# Lint your code
pnpm lint
# Fix auto-fixable issues
pnpm lint:fix
# Check types
pnpm check-types
# Run tests (if applicable)
pnpm -F start test

Your PR description should include:

Summary: What does this PR do? (1-2 sentences)

Changes: List the key changes made

Testing: How was this tested?

Screenshots: For UI changes, include before/after screenshots

Related Issues: Link to related issues

## Summary
Brief description of what this PR accomplishes.
## Changes
- Added X component for Y functionality
- Updated Z service to handle edge case
- Fixed bug where A caused B
## Testing
- [ ] Tested locally with `pnpm dev`
- [ ] Added/updated tests
- [ ] Verified on multiple browsers (if UI change)
## Screenshots
<!-- For UI changes, add screenshots here -->
## Related Issues
Closes #123

Aim for PRs that can be reviewed in 15-30 minutes:

  • Under 400 lines of code changes (excluding generated files)
  • Focused on a single concern
  • Easy to understand without extensive context

If your change is large, consider splitting it into multiple PRs.

  1. Correctness: Does the code do what it’s supposed to?
  2. Code style: Does it follow our conventions?
  3. Performance: Are there any obvious performance issues?
  4. Security: Are there any security concerns?
  5. Tests: Are there adequate tests?
  6. Documentation: Are comments and docs updated?
  • Be responsive: Try to address feedback within a few days
  • Ask questions: If feedback is unclear, ask for clarification
  • Discuss disagreements: It’s okay to discuss, but be respectful
  • Update your PR: Push new commits to address feedback
  • At least one approval from a maintainer
  • All CI checks passing
  • No unresolved conversations
  • Delete your branch (GitHub can do this automatically)
  • Close related issues if not auto-closed
  • Update any related documentation if needed

Lint errors:

Terminal window
pnpm lint:fix

Type errors:

Terminal window
pnpm check-types
# Fix reported issues

Test failures:

Terminal window
pnpm -F start test
# Review and fix failing tests

If your branch has conflicts with main:

Terminal window
# Fetch latest changes
git fetch origin
# Rebase onto main
git rebase origin/main
# Resolve conflicts, then continue
git add .
git rebase --continue
# Force push (only on your feature branch!)
git push --force-with-lease

If reviewers ask you to split your PR:

  1. Identify logical groupings of changes
  2. Create new branches for each group
  3. Submit separate PRs
  4. Reference the original PR in descriptions

Before marking your PR ready for review:

  • Branch is up to date with main
  • Code follows the style guide
  • pnpm lint passes
  • pnpm check-types passes
  • Tests pass (if applicable)
  • PR description is complete
  • Screenshots added (for UI changes)
  • Related issues linked
  • No console.log or debug code left in
  • No commented-out code
  • Environment variables documented (if new)

If you’re stuck or have questions:

  1. Comment on the related issue
  2. Ask in the PR comments
  3. Reach out on GitHub Discussions

We’re happy to help guide you through the process!