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 quackback3. Set Up Development Environment
bun run setup
bun run devSee Development Setup for detailed instructions.
4. Create a Branch
git checkout -b feature/your-feature-name
# or
git checkout -b fix/issue-descriptionMake changes
Code Style
We use:
- ESLint for code linting
- Prettier for formatting
- TypeScript for type safety
Run checks before committing:
bun run lintFor type checking (in apps/web):
cd apps/web && bun run typecheckNaming Conventions
| Type | Convention | Example |
|---|---|---|
| Files | kebab-case | user-profile.tsx |
| Components | PascalCase | UserProfile |
| Functions | camelCase | getUserProfile |
| Database | snake_case | post_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:
- Edit files in
packages/db/src/schema/ - Generate migration:
bun run db:generate - Test migration:
bun run db:migrate - 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.tsWrite 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 featurefix:- Bug fixdocs:- Documentationrefactor:- Code refactoringtest:- Adding testschore:- Maintenance
2. Push to Your Fork
git push origin feature/your-feature-name3. Create a Pull Request
- Go to the main Quackback repository
- Click "Compare & pull request"
- 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
- Automated checks - CI runs tests and linting
- Code review - Maintainers review your code
- Feedback - Address any requested changes
- 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?
- Check existing documentation
- Search closed issues and PRs
- Ask in GitHub Discussions
- 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
- Development Setup - Get your environment ready
- Architecture - Understand the codebase
- Adding Features - Build something new