Contributing to OrganiserPro
Thank you for your interest in contributing to OrganiserPro! We welcome contributions from everyone, whether you’re a developer, designer, writer, or just someone with a good idea.
Ways to Contribute
There are many ways to contribute to OrganiserPro:
Code contributions: Fix bugs, implement new features, or improve existing code
Documentation: Improve documentation, fix typos, or add examples
Bug reports: Report bugs you find while using OrganiserPro
Feature requests: Suggest new features or improvements
Testing: Help test the software and report issues
Community: Help answer questions on issue trackers or forums
Getting Started
Fork the repository on GitHub
Clone your fork locally:
git clone https://github.com/your-username/OrganiserPro.git cd OrganiserPro
Set up the development environment:
# Create and activate a virtual environment (recommended) python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # Install the package in development mode with all dependencies pip install -e .[dev]
Create a new branch for your changes:
git checkout -b your-feature-branch
Make your changes and ensure tests pass:
# Run tests pytest # Check code style black OrganiserPro tests isort OrganiserPro tests flake8 OrganiserPro tests
Commit your changes with a clear message:
git commit -m "Add your commit message here"
Push to your fork and submit a pull request
Coding Standards
Follow PEP 8 style guidelines
Use type hints for all functions and methods
Write docstrings for all public functions, classes, and modules
Keep lines under 88 characters (Black’s default line length)
Write tests for new features and bug fixes
Document all new features and changes
Commit Message Guidelines
Use the present tense (“Add feature” not “Added feature”)
Use the imperative mood (“Move cursor to…” not “Moves cursor to…”)
Limit the first line to 72 characters or less
Reference issues and pull requests liberally after the first line
Consider starting the commit message with an applicable emoji: - :bug: :bug: when fixing a bug - :sparkles: :sparkles: when adding a new feature - :memo: :memo: when writing docs - :art: :art: when improving the format/structure - :zap: :zap: when improving performance - :white_check_mark: :white_check_mark: when adding tests - :wrench: :wrench: when updating configuration - :recycle: :recycle: when refactoring code - :fire: :fire: when removing code or files - :lock: :lock: when dealing with security - :arrow_up: :arrow_up: when upgrading dependencies - :arrow_down: :arrow_down: when downgrading dependencies
Testing
We use pytest for testing. To run the tests:
# Run all tests
pytest
# Run tests with coverage
pytest --cov=OrganiserPro
# Run a specific test file
pytest tests/test_something.py -v
# Run a specific test function
pytest tests/test_something.py::test_function_name -v
Documentation
We use Sphinx for documentation. To build the documentation:
# Install documentation dependencies
pip install -e .[docs]
# Build the documentation
cd docs
make html
# Open the documentation in your browser
open _build/html/index.html
Code Review Process
Create a pull request (PR) with your changes
Ensure all CI checks pass
A maintainer will review your PR and provide feedback
Address any feedback and update your PR
Once approved, a maintainer will merge your PR
Code of Conduct
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. See code_of_conduct for more information.
License
By contributing to OrganiserPro, you agree that your contributions will be licensed under the MIT License.