First off, thank you for considering contributing to CipherSmith! It's people like you that make CipherSmith such a great tool.
By participating in this project, you are expected to uphold our Code of Conduct:
- Be respectful and inclusive
- Exercise consideration and empathy
- Focus on what is best for the community
- Use welcoming and inclusive language
Before creating bug reports, please check the existing issues to avoid duplicates. When you create a bug report, include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples
- Include:
- Your Python version
- CipherSmith version
- Operating system
- Error messages (if any)
- Screenshots (if applicable)
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion:
- Use a clear and descriptive title
- Provide a step-by-step description of the suggested enhancement
- Explain why this enhancement would be useful
- List some examples of how it would be used
-
Fork the repository
-
Create a new branch:
git checkout -b feature/your-feature-name
-
Make your changes
-
Run tests:
pytest
-
Update documentation if needed
-
Commit your changes:
git commit -m "feat: Add some feature"
Follow our commit message conventions:
feat:
for new featuresfix:
for bug fixesdocs:
for documentation changestest:
for test changesrefactor:
for code refactoringstyle:
for formatting changeschore:
for maintenance tasks
-
Push to your fork:
git push origin feature/your-feature-name
-
Open a Pull Request
-
Clone the repository:
git clone https://github.com/YourUsername/CipherSmith.git cd CipherSmith
-
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt pip install -e . # Install in development mode
-
Install development dependencies:
pip install -r requirements-dev.txt
- Follow PEP 8 guidelines
- Use Black for code formatting
- Use type hints where possible
- Write docstrings for functions and classes
- Add comments for complex logic
CipherSmith/
├── .github/ # GitHub specific files
│ └── workflows/ # GitHub Actions workflows
├── app/ # Main application directory
│ ├── __init__.py
│ ├── main.py # Core application logic
│ ├── database.py # Database operations
│ └── password_strength.py # Password analysis
├── docs/ # Documentation files
│ ├── CHANGELOG.md # Version history
│ ├── CONTRIBUTING.md # Contribution guidelines
│ ├── DEMO.md # Usage examples
│ └── INSTALL.md # Installation guide
├── .gitignore # Git ignore rules
├── LICENSE # Project license
├── MANIFEST.ini # Package manifest
├── README.md # Project overview
├── pyproject.toml # Project configuration
├── requirements.txt # Project dependencies
└── setup.py # Package setup file
- Update documentation for new features
- Include docstrings in code
- Update README.md if needed
- Add examples for new functionality
Feel free to:
- Open an issue with your question
- Join our discussions
- Contact maintainers
Contributors will be:
- Listed in our README.md
- Mentioned in release notes
- Added to contributors list
Thank you for contributing to CipherSmith! 🙏