| title | Contribute to Quackback |
|---|---|
| description | Submit bug reports, features, and code to the project. |
| icon | code-pull-request |
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.
- 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
Click "Fork" on GitHub to create your own copy.
git clone https://github.com/YOUR_USERNAME/quackback.git
cd quackbackbun run setup
bun run devSee Development Setup for detailed instructions.
git checkout -b feature/your-feature-name
# or
git checkout -b fix/issue-descriptionWe 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 typecheck| Type | Convention | Example |
|---|---|---|
| Files | kebab-case | user-profile.tsx |
| Components | PascalCase | UserProfile |
| Functions | camelCase | getUserProfile |
| Database | snake_case | post_tags |
- 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
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
# Unit tests
bun run test
# E2E tests
bun run test:e2e
# Specific test file
bun run test path/to/test.tsUnit 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/.
Aim for meaningful test coverage:
- Critical business logic
- Edge cases
- Error handling
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
git push origin feature/your-feature-name- 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
- Keep PRs focused on a single change
- Include tests for new functionality
- Update documentation if needed
- Respond to review feedback promptly
- 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
- Code quality and readability
- Test coverage
- Performance implications
- Security considerations
- Documentation updates
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).
- Treat everyone with respect
- Be constructive in feedback
- Welcome newcomers
- Assume good intentions
- GitHub Issues - Bug reports and feature requests
- GitHub Discussions - Questions and ideas
- Pull Requests - Code contributions
Stuck on something?
- Check existing documentation
- Search closed issues and PRs
- Ask in GitHub Discussions
- Open an issue with details
Quackback is licensed under AGPL-3.0. Contributions go under the same license.
Contributors are recognized in:
- CONTRIBUTORS file
- Release notes for significant contributions
- Project documentation
Thank you for contributing to Quackback!
- Development Setup - Get your environment ready
- Architecture - Understand the codebase
- Adding Features - Build something new