Skip to content

Contribute to Quackback

Help us build something great. Whether you're fixing a bug, adding a feature, or improving docs, this guide shows you how to contribute effectively and get your changes merged.

Ways to Contribute

  • Bug reports - Found a bug? Open an issue
  • Feature requests - Have an idea? Start a discussion
  • Code contributions - Fix bugs or add features
  • Documentation - Improve guides and API docs
  • Translations - Help localize the platform

Get started

1. Fork the Repository

Click "Fork" on GitHub to create your own copy.

2. Clone Your Fork

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

3. Set Up Development Environment

bun run setup
bun run dev

See Development Setup for detailed instructions.

4. Create a Branch

git checkout -b feature/your-feature-name
# or
git checkout -b fix/issue-description

Make changes

Code Style

We use:

  • ESLint for code linting
  • Prettier for formatting
  • TypeScript for type safety

Run checks before committing:

bun run lint

For type checking (in apps/web):

cd apps/web && bun run typecheck

Naming Conventions

TypeConventionExample
Fileskebab-caseuser-profile.tsx
ComponentsPascalCaseUserProfile
FunctionscamelCasegetUserProfile
Databasesnake_casepost_tags

Component Guidelines

  • Use React Server Components by default
  • Add 'use client' only when needed (hooks, browser APIs)
  • Keep components focused and small
  • Extract complex logic to hooks or utilities

Database Changes

When modifying the schema:

  1. Edit files in packages/db/src/schema/
  2. Generate migration: bun run db:generate
  3. Test migration: bun run db:migrate
  4. Verify with Drizzle Studio: bun run db:studio

Testing

Run Tests

# Unit tests
bun run test
 
# E2E tests
bun run test:e2e
 
# Specific test file
bun run test path/to/test.ts

Write tests

Unit tests go in __tests__ directories next to the code they test:

packages/ids/src/
├── core.ts
└── __tests__/
    └── core.test.ts

E2E tests are in apps/web/e2e/.

Test Coverage

Aim for meaningful test coverage:

  • Critical business logic
  • Edge cases
  • Error handling

Submit changes

1. Commit Your Changes

Write clear commit messages:

# Good
git commit -m "fix: prevent duplicate votes on same post"
git commit -m "feat: add CSV export for posts"
 
# Bad
git commit -m "fixed stuff"
git commit -m "wip"

Follow conventional commits:

  • feat: - New feature
  • fix: - Bug fix
  • docs: - Documentation
  • refactor: - Code refactoring
  • test: - Adding tests
  • chore: - Maintenance

2. Push to Your Fork

git push origin feature/your-feature-name

3. Create a Pull Request

  1. Go to the main Quackback repository
  2. Click "Compare & pull request"
  3. Fill in the PR template:
    • Description of changes
    • Related issues
    • Screenshots (if UI changes)
    • Testing done

PR Guidelines

  • Keep PRs focused on a single change
  • Include tests for new functionality
  • Update documentation if needed
  • Respond to review feedback promptly

Review Process

  1. Automated checks - CI runs tests and linting
  2. Code review - Maintainers review your code
  3. Feedback - Address any requested changes
  4. Merge - Once approved, your PR is merged

What Reviewers Look For

  • Code quality and readability
  • Test coverage
  • Performance implications
  • Security considerations
  • Documentation updates

Contributor License Agreement

By contributing, you agree that your contributions will be licensed under the project's AGPL-3.0 license.

For substantial contributions, you may be asked to sign a CLA (Contributor License Agreement).

Community Guidelines

Be Respectful

  • Treat everyone with respect
  • Be constructive in feedback
  • Welcome newcomers
  • Assume good intentions

Communication

  • GitHub Issues - Bug reports and feature requests
  • GitHub Discussions - Questions and ideas
  • Pull Requests - Code contributions

Getting Help

Stuck on something?

  1. Check existing documentation
  2. Search closed issues and PRs
  3. Ask in GitHub Discussions
  4. Open an issue with details

License

Quackback is licensed under AGPL-3.0. Contributions go under the same license.

Recognition

Contributors are recognized in:

  • CONTRIBUTORS file
  • Release notes for significant contributions
  • Project documentation

Thank you for contributing to Quackback!

Next Steps