🇮🇳 Thank you for your interest in contributing to PolyNote! We're building a thriving community of Indian developers and welcome contributions from everyone.
- Code of Conduct
- How Can I Contribute?
- Development Setup
- Contribution Workflow
- Coding Standards
- Commit Guidelines
- Pull Request Process
- Community
We are committed to providing a welcoming and inclusive environment. Please be respectful and considerate in all interactions.
- Use welcoming and inclusive language
- Respect differing viewpoints and experiences
- Accept constructive criticism gracefully
- Focus on what's best for the community
- Show empathy towards other community members
Before creating a bug report, please check existing issues. When creating a bug report, include:
- Clear and descriptive title
- Steps to reproduce the issue
- Expected behavior vs actual behavior
- Screenshots if applicable
- Your environment (OS, Node version, etc.)
Feature suggestions are welcome! Please:
- Use a clear and descriptive title
- Provide detailed explanation of the feature
- Explain why this feature would be useful
- Include examples if possible
- First-time contributors: Look for issues tagged with
good first issue - Bug fixes: Check issues tagged with
bug - New features: Discuss in an issue before starting work
- Documentation: Improvements are always welcome
- Node.js ≥22.0.0
- pnpm ≥9.0.0
- Podman or Docker
- Git
# Fork and clone the repository
git clone https://github.com/YOUR_USERNAME/polynote.git
cd polynote
# Install dependencies
pnpm install
# Set up development environment
make dev-up
# Run tests to verify setup
pnpm test
# Start development server
pnpm devpolynote/
├── apps/
│ ├── desktop/ # Electron desktop application
│ └── server/ # Backend API server
├── packages/
│ ├── connectors/ # Platform connectors
│ ├── ai/ # AI integrations
│ ├── security/ # Security features
│ └── shared/ # Shared utilities
├── infra/ # Infrastructure configs
└── docs/ # Documentation
# Create a feature branch
git checkout -b feat/your-feature-name
# Or for bug fixes
git checkout -b fix/bug-description- Write clean, readable code
- Follow existing code style
- Add tests for new features
- Update documentation as needed
# Run all tests
pnpm test
# Run tests in watch mode during development
pnpm test:watch
# Check code coverage
pnpm test:coverage
# Lint your code
pnpm lint
# Check TypeScript types
pnpm type-checkUse conventional commits format:
git commit -m "feat(connectors): add Joplin sync support"See Commit Guidelines for details.
git push origin feat/your-feature-nameThen create a Pull Request on GitHub.
- Use TypeScript strict mode
- Provide type annotations for public APIs
- Avoid
anytype unless absolutely necessary - Use meaningful variable and function names
- Follow ESLint and Prettier configurations
- Use 2 spaces for indentation
- Maximum line length: 100 characters
- Use single quotes for strings
- Write unit tests for all new functions
- Aim for ≥80% code coverage
- Use descriptive test names
- Include edge cases
Example test structure:
describe('FeatureName', () => {
describe('functionName()', () => {
it('should handle normal case', () => {
// Test implementation
});
it('should handle edge case', () => {
// Test implementation
});
it('should throw error for invalid input', () => {
// Test implementation
});
});
});We follow Conventional Commits specification.
<type>(<scope>): <subject>
<body>
<footer>
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
connectors: Connector-related changesai: AI module changessecurity: Security featuresui: User interface changesdocs: Documentationinfra: Infrastructure
# Feature
git commit -m "feat(connectors): implement Notion OAuth flow"
# Bug fix
git commit -m "fix(sync): resolve conflict detection issue"
# Documentation
git commit -m "docs(readme): update installation instructions"
# Multiple changes
git commit -m "feat(ai): add translation support" -m "Supports EN, TE, and HI languages"- Tests pass locally (
pnpm test) - Code is linted (
pnpm lint) - Types are correct (
pnpm type-check) - Documentation is updated
- Commits follow conventional commits
- Branch is up to date with
develop
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Code refactoring
## Testing
How was this tested?
## Checklist
- [ ] Tests added/updated
- [ ] Documentation updated
- [ ] No breaking changes
- [ ] Follows code style guidelines- Automated checks must pass (CI, linting, tests)
- At least one approval from maintainers
- All review comments addressed
- Branch up to date with target branch
- Maintainers will merge your PR
- Delete your feature branch after merge
- Celebrate your contribution! 🎉
- Discord: Join our community (coming soon)
- Discussions: Use GitHub Discussions for questions
- Issues: Report bugs or suggest features
Contributors will be recognized in:
- README.md contributors section
- Release notes
- Project website (when available)
We're building a strong community of Indian open-source contributors. Join us to:
- Learn from experienced developers
- Contribute to a growing project
- Build your portfolio
- Connect with other Indian developers
Feel free to ask questions in:
- GitHub Discussions
- Issue comments
- Pull request comments
Happy Contributing! 🚀
Made with ❤️ in India