Thank you for your interest in contributing to LensLogic! This document provides guidelines for contributing to the project.
- Python 3.9 or higher
- Git
- Basic knowledge of Python and CLI development
-
Fork and clone the repository
git clone https://github.com/your-username/lenslogic.git cd lenslogic -
Create a virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Run tests
pytest tests/
-
Run the application
python src/main.py --help
Before creating bug reports, please check the existing issues to avoid duplicates. When creating a bug report, include:
- Clear description of the problem
- Steps to reproduce the issue
- Expected vs actual behavior
- Environment details (OS, Python version, etc.)
- Sample files (if applicable and non-sensitive)
- Log output (with
--verboseflag)
Feature requests are welcome! Please include:
- Clear description of the feature
- Use case - why is this feature needed?
- Proposed implementation (if you have ideas)
- Potential impact on existing functionality
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
- Ensure all tests pass
-
Commit your changes
git commit -m "feat: add feature description" -
Push and create a pull request
git push origin feature/your-feature-name
- Follow PEP 8 Python style guidelines
- Use type hints where appropriate
- Write descriptive docstrings for functions and classes
- Keep functions focused and reasonably sized
- Write tests for new functionality
- Ensure tests pass before submitting PR
- Use descriptive test names
- Include both unit tests and integration tests
- Update README.md for new features
- Add docstrings to new functions/classes
- Update relevant documentation files
- Include examples for new features
Use conventional commit format:
feat:for new featuresfix:for bug fixesdocs:for documentation changestest:for test additions/modificationsrefactor:for code refactoringchore:for maintenance tasks
- Cross-platform compatibility - Testing on different OS
- Performance optimization - Large file handling
- Additional metadata sources - New camera/format support
- UI/UX improvements - Interactive menu enhancements
- Documentation - Examples, tutorials, guides
- Add support for new camera models
- Improve error messages
- Add new file format support
- Create example configurations
- Improve test coverage
- Video metadata extraction enhancements
- Machine learning for photo categorization
- Cloud storage integration
- GUI application development
- Performance profiling and optimization
# Run all tests
pytest
# Run specific test file
pytest tests/test_enhanced_exif_extractor.py
# Run with coverage
pytest --cov=src tests/
# Run with verbose output
pytest -v- Unit tests in
tests/directory - Integration tests marked with
@pytest.mark.integration - Use fixtures for common test data
- Mock external dependencies
- Automated checks must pass (tests, linting)
- Code review by maintainers
- Documentation review for user-facing changes
- Testing on different platforms if needed
- GitHub Issues - For bugs and feature requests
- GitHub Discussions - For questions and general discussion
- Documentation - Check existing docs first
Contributors will be recognized in:
- GitHub contributors list
- Release notes for significant contributions
- Documentation credits
By contributing to LensLogic, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to LensLogic! 🚀