Thank you for your interest in contributing to SPKIA! This document provides guidelines for contributing to the project.
Be respectful, inclusive, and constructive in all interactions.
- Check if the bug is already reported in GitHub Issues
- Create a new issue with:
- Clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- System information (OS, browser, etc.)
- Logs or error messages
- Check existing feature requests
- Create an issue with:
- Clear use case description
- Proposed solution
- Alternatives considered
- Impact on privacy/security
# Clone repository
git clone https://github.com/your-org/spkia.git
cd spkia
# Copy environment file
cp .env.example .env
# Start development environment
docker-compose up -dPython (Backend):
- Follow PEP 8
- Use Black for formatting:
black app/ - Use type hints
- Write docstrings for public functions
TypeScript (Frontend):
- Follow project ESLint rules
- Use Prettier for formatting
- Write JSDoc comments for complex functions
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Follow code style guidelines
- Write/update tests
- Update documentation
-
Test your changes
# Backend tests cd backend pytest tests/ --cov=app # Frontend tests cd frontend npm test
-
Commit with descriptive messages
git commit -m "Add: Feature description"Commit message prefixes:
Add:New featureFix:Bug fixUpdate:Changes to existing featureDocs:Documentation changesRefactor:Code refactoringTest:Test additions/changes
-
Push and create PR
git push origin feature/your-feature-name
Then create a Pull Request on GitHub with:
- Clear title and description
- Reference related issues
- Screenshots (if UI changes)
-
Code Review
- Address review comments
- Update PR as needed
- Maintain clean commit history
All PRs must include:
- ✅ Unit tests for new functions
- ✅ Integration tests for API endpoints
- ✅ Updated documentation
- ✅ Passing CI/CD checks
- Document training dataset and methodology
- Provide model performance metrics
- Include model versioning
- Update
models/README.md
- Precision > 92%
- Recall > 90%
- F1-Score > 91%
- Model size < 200MB (for deployment)
- Update README.md for feature changes
- Add API documentation for new endpoints
- Update architecture diagrams if needed
- Write clear inline comments
Follow the project structure:
backend/
├── app/
│ ├── api/ # API routes
│ ├── models/ # Data models
│ ├── services/ # Business logic
│ └── utils/ # Utilities
frontend/
├── src/
│ ├── components/ # Reusable components
│ ├── pages/ # Page components
│ ├── services/ # API clients
│ └── types/ # TypeScript types
- Single Responsibility: Each function/class does one thing
- File Length: Max 500 lines per file
- Function Length: Max 50 lines per function
- Naming: Clear, descriptive names
- Comments: Explain "why", not "what"
- Never commit secrets or API keys
- Validate all user inputs
- Use parameterized queries
- Follow OWASP guidelines
- Report security issues privately to security@spkia.org
- Privacy: No permanent data storage
- Security: Cryptographic integrity
- Accuracy: High detection precision
- Performance: < 2s image verification
- Usability: Clear, intuitive UI
- 💬 Discussions: Use GitHub Discussions for questions
- 🐛 Bugs: Create GitHub Issues
- 📧 Email: dev@spkia.org
- 📖 Docs: https://docs.spkia.org
Contributors will be:
- Listed in CONTRIBUTORS.md
- Credited in release notes
- Acknowledged in documentation
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for making SPKIA better! 🚀