Ways to Contribute
There are many ways to contribute to Anchor:- Report bugs - Found an issue? Let us know!
- Suggest features - Have an idea? We’d love to hear it
- Write code - Fix bugs or implement new features
- Improve documentation - Help others understand Anchor better
- Review pull requests - Share your expertise with the community
- Answer questions - Help other users in discussions
Getting Started
Fork the repository
Click the “Fork” button on the Anchor GitHub repository to create your own copy.
Set up your development environment
Follow the getting started guide to set up your local environment.
Development Workflow
Making Changes
Commit your changes
Write clear, descriptive commit messages:
Good commit messages:
- “Fix sync conflict when editing same note offline”
- “Add support for note templates”
- “Update API documentation for tags endpoint”
- “fixed stuff”
- “wip”
- “changes”
Submitting a Pull Request
Create a pull request
Go to the original Anchor repository and click “New Pull Request”. Select your fork and branch.
Fill out the PR template
Provide:
- Description - What does this PR do?
- Motivation - Why is this change needed?
- Testing - How did you test this?
- Screenshots - If applicable (UI changes)
Coding Standards
General Guidelines
- Write clean, readable code
- Follow the existing code style
- Add comments for complex logic
- Keep functions small and focused
- Use meaningful variable names
- Avoid unnecessary complexity
TypeScript/JavaScript (Server & Web)
- Use TypeScript types, avoid
any - Define interfaces for data structures
- Use async/await over callbacks
- Handle errors properly
- Use ESLint and Prettier
Dart/Flutter (Mobile)
- Follow Effective Dart
- Use Riverpod for state management
- Keep widgets small and focused
- Use const constructors where possible
- Run
dart formatbefore committing
Database Migrations (Prisma)
When making schema changes:Migration Naming Examples:
add_note_template_tableadd_color_to_tagsrename_user_name_to_display_name
Testing Guidelines
Server Tests
Write unit tests for business logic:Web Tests
Test components and utilities:Mobile Tests
Write widget and unit tests:Documentation Standards
Code Documentation
User Documentation
When adding features, update the relevant documentation:- Add examples to README files
- Update API documentation
- Add screenshots for UI changes
- Update environment variable docs
Pull Request Checklist
Before submitting, ensure:- Code follows the style guidelines
- All tests pass (
pnpm testorflutter test) - Build succeeds (
pnpm buildorflutter build) - No linting errors (
pnpm lintordart analyze) - Documentation is updated
- Commit messages are descriptive
- Branch is up to date with main
Code Review Process
When your PR is submitted:- Automated Checks - CI/CD runs tests and builds
- Maintainer Review - A maintainer reviews your code
- Feedback - You may receive comments or change requests
- Updates - Make requested changes and push updates
- Approval - Once approved, your PR will be merged
Review Timeline:
Maintainers aim to review PRs within 3-5 business days. Please be patient and don’t spam with comments asking for updates.
Commit Message Format
We follow a simple commit message format:feat- New featurefix- Bug fixdocs- Documentation changesstyle- Code style changes (formatting, etc.)refactor- Code refactoringtest- Adding or updating testschore- Maintenance tasks
Branching Strategy
main- Stable release branchdevelop- Integration branch (if used)feature/*- Feature branchesfix/*- Bug fix branchesdocs/*- Documentation branches
main unless instructed otherwise.
Community Guidelines
Be Respectful
- Treat everyone with respect and kindness
- Welcome newcomers and help them learn
- Assume good intentions
- Provide constructive feedback
Be Professional
- Keep discussions focused and on-topic
- Avoid unnecessary debates
- Accept feedback gracefully
- Give credit where it’s due
Be Collaborative
- Share knowledge and help others
- Ask questions when unclear
- Review others’ code thoughtfully
- Celebrate community wins
Getting Help
If you need help:- Questions - Open a GitHub Discussion
- Bugs - Create a GitHub Issue
- Security - Email the maintainers privately
- General Chat - Join community channels (if available)
Recognition
Contributors are recognized in:- GitHub contributors list
- Release notes (for significant contributions)
- Project README (for major features)
License
By contributing to Anchor, you agree that your contributions will be licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). This ensures that:- Your contributions remain open source
- Network users receive source code access
- Derivative works must use the same license
Next Steps
Ready to contribute?- Set up your development environment
- Review the architecture to understand the codebase
- Learn how to build the project
- Pick an issue or feature and start coding!