Thank you for your interest in contributing to PyNote! This document provides guidelines and instructions for contributing to the project.
- Fork the repository and clone it locally
- Create a virtual environment:
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate pip install -r requirements.txt
- Find an issue labeled
good first issueor check the difficulty labels - Create a branch following our naming convention
- Make your changes and test them
- Submit a pull request
Use descriptive branch names:
feature/<short-desc>- for new featuresbug/<short-desc>- for bug fixesdocs/<short-desc>- for documentation updates
Examples:
feature/add-toolbar-iconsbug/fix-save-dialogdocs/update-readme
Use short, imperative commit messages:
- ✅
fix: update save dialog - ✅
feat: add dark theme toggle - ✅
docs: update contributing guide - ❌
Fixed some stuff - ❌
updates
Format: <type>: <description>
Types: fix, feat, docs, style, refactor, test, chore
good first issue- Perfect for beginnerseasy- Beginner-friendly tasks (1-2 hours)medium- Intermediate tasks (3-5 hours)hard- Advanced tasks (6-10 hours)bug- Something isn't workingenhancement- New feature or improvementdocumentation- Documentation improvementshelp wanted- Extra attention neededdesign- UI/UX related
- Reference an issue - All PRs should reference an issue number (e.g.,
Fixes #123) - Keep PRs focused - One logical change per PR
- Include screenshots - For UI changes, include before/after screenshots
- Test your changes - Run the app and verify it works
- Update documentation - If adding features, update relevant docs
- Label your PR - Add appropriate labels when creating the PR
When creating a PR, include:
## Description
Brief description of changes
## Related Issue
Closes #123
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Other (please describe)
## Testing
Steps to test:
1. ...
2. ...
## Screenshots (if applicable)
[Add screenshots here]
## Checklist
- [ ] Code follows project style guidelines
- [ ] Self-review completed
- [ ] Comments added for complex code
- [ ] Documentation updated
- [ ] No new warnings generated
- [ ] Tests pass (if applicable)Before submitting a PR:
- Run the application:
python -m src.pynote.main
- Test your changes manually
- Run tests (if applicable):
pytest tests/
- Follow PEP 8 for Python code
- Use meaningful variable names
- Add comments for complex logic
- Keep functions focused and small
- Use type hints where appropriate
- Follow existing UI patterns
- Ensure dark/light theme compatibility
- Test on different screen sizes if applicable
- Keep the interface clean and intuitive
Use the bug report template and include:
- Clear description of the bug
- Steps to reproduce
- Expected vs actual behavior
- Screenshots (if applicable)
- Environment details (OS, Python version)
Use the feature request template and include:
- Clear description of the feature
- Use case / problem it solves
- Proposed solution
- Mockups or examples (if applicable)
Each issue includes acceptance criteria. Make sure your PR satisfies all criteria before submitting.
Example:
- ✅ Feature works as described
- ✅ Code follows style guidelines
- ✅ No regressions introduced
- ✅ Documentation updated
- Open a discussion in the repository
- Check existing issues for similar questions
- Reach out to maintainers
Your contributions make PyNote better for everyone. We appreciate your time and effort!
Happy Contributing! 🚀