Thank you for your interest in contributing to Oreno GRC! This document provides guidelines and information for contributors.
- Python 3.11+
- PostgreSQL (recommended) or SQLite
- Git
Optional:
- Node.js 18+ (for frontend assets)
- Docker (for containerized development)
-
Fork and Clone
git clone https://github.com/oumafreddy/oreno.git cd oreno -
Create Virtual Environment
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
-
Install Dependencies
pip install -r requirements.txt pip install -r requirements-dev.txt
-
Environment Configuration
cp env.example .env.oreno # Edit .env.oreno with your configuration -
Database Setup
python manage.py migrate --settings=config.settings.development python manage.py createsuperuser --settings=config.settings.development
-
Run Development Server
python manage.py runserver --settings=config.settings.development
- Follow PEP 8 for Python code
- Use Black for code formatting
- Use isort for import sorting
- Follow Django best practices
- Write meaningful commit messages
-
Create a Feature Branch
git checkout -b feature/your-feature-name
-
Make Your Changes
- Write tests for new functionality
- Update documentation if needed
- Ensure all tests pass
-
Test Your Changes
python manage.py test --settings=config.settings.development -
Submit Pull Request
- Provide a clear description
- Reference any related issues
- Include screenshots for UI changes
When reporting issues, please include:
- Python version
- Django version
- Steps to reproduce
- Expected vs actual behavior
- Screenshots (if applicable)
oreno/
├── apps/ # Django applications
│ ├── audit/ # Audit management
│ ├── risk/ # Risk management
│ ├── compliance/ # Compliance tracking
│ ├── contracts/ # Contract management
│ ├── ai_governance/ # AI governance features
│ └── ...
├── config/ # Django configuration
├── services/ # External service integrations
├── templates/ # HTML templates
├── static/ # Static assets
└── tests/ # Test suites
# Run all tests
python manage.py test --settings=config.settings.development
# Run specific app tests
python manage.py test apps.audit --settings=config.settings.development
# Run with coverage
coverage run --source='.' manage.py test --settings=config.settings.development
coverage report- Write unit tests for new models and views
- Include integration tests for complex workflows
- Test both success and failure scenarios
- Aim for >80% code coverage
- Use docstrings for all functions and classes
- Follow Google docstring format
- Document complex business logic
- Update README.md for significant changes
- Document new API endpoints
- Include request/response examples
- Update OpenAPI/Swagger documentation
- Never commit secrets or API keys
- Use environment variables for sensitive data
- Follow OWASP guidelines
- Report security issues privately to maintainers
For security vulnerabilities, please email: fredouma@oreno.tech or oumafredomondi@gmail.com
We follow Semantic Versioning:
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes (backward compatible)
- All tests pass
- Documentation updated
- Changelog updated
- Version bumped
- Release notes prepared
- Be respectful and inclusive
- Welcome newcomers and help them learn
- Focus on constructive feedback
- Respect different perspectives and approaches
- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: General questions and ideas
- Pull Requests: Code contributions and reviews
- Test coverage improvements
- Performance optimizations
- Documentation enhancements
- Security audit and improvements
- AI Governance enhancements
- Risk assessment tools
- Compliance automation
- Reporting improvements
- Mobile responsiveness
- Code refactoring
- Database optimization
- Frontend modernization
- API standardization
- Check existing issues and discussions
- Join our community discussions
- Contact maintainers for guidance
Contributors will be recognized in:
- CONTRIBUTORS.md file
- Release notes
- Project documentation
- Community highlights
Thank you for contributing to Oreno GRC! 🎉