Thank you for your interest in contributing to FFprobe API! This document provides guidelines and information for contributors.
📋 For detailed technical guidelines, see CONTRIBUTOR-GUIDELINES.md
This document covers general contribution workflow and community guidelines.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/rendiff-probe.git - Add upstream:
git remote add upstream https://github.com/rendiffdev/rendiff-probe.git - Read Technical Guidelines for detailed setup instructions
- Install dependencies:
docker compose -f docker-image/compose.yaml up -d - Run tests:
go test ./... - Start development:
go run cmd/rendiff-probe/main.go
- Go 1.23+
- Docker & Docker Compose v2.20+
- Git
# Clone and setup
git clone https://github.com/rendiffdev/rendiff-probe.git
cd rendiff-probe
# Start development environment (includes PostgreSQL, Redis, FFmpeg)
docker compose -f docker-image/compose.yaml -f docker-image/compose.development.yaml up -d
# Verify setup
curl http://localhost:8080/health
# Run tests
go test ./...For detailed setup instructions, see Technical Guidelines.
- Check Good First Issues for beginners
- Browse Help Wanted issues
- Review our Project Roadmap
- Propose new features via GitHub Discussions
git checkout -b feature/amazing-feature
# or
git checkout -b fix/bug-description
# or
git checkout -b docs/documentation-update- Follow our Code Standards
- Add tests for new functionality
- Update documentation as needed
- Ensure all tests pass
We use Conventional Commits:
# Features
git commit -m "feat: add video quality comparison endpoint"
git commit -m "feat(storage): add Azure Blob Storage support"
# Bug fixes
git commit -m "fix: resolve memory leak in large file processing"
git commit -m "fix(auth): handle expired JWT tokens correctly"
# Documentation
git commit -m "docs: update API documentation for HLS endpoints"
git commit -m "docs(readme): add Docker deployment examples"
# Tests
git commit -m "test: add integration tests for storage providers"
git commit -m "test(quality): add VMAF accuracy validation tests"
# Refactor
git commit -m "refactor: optimize database query performance"
git commit -m "refactor(handlers): simplify error handling logic"git push origin feature/amazing-featureThen create a Pull Request using our PR template.
- Follow Effective Go guidelines
- Use
gofmtandgoimportsfor formatting - Run
golangci-lintfor static analysis - Maintain 85%+ test coverage
- Follow our detailed code standards
# Format code
go fmt ./...
# Check for issues
golangci-lint run
# Run tests with coverage
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out- Unit Tests: Test individual functions/methods
- Integration Tests: Test component interactions
- End-to-End Tests: Test complete workflows
- Security Tests: Test input validation and security
# All tests
go test ./...
# With race detection
go test -race ./...
# With coverage
go test -coverprofile=coverage.out ./...
# Specific package
go test ./internal/services
# Integration tests
go test -tags=integration ./testsFor detailed testing patterns and examples, see Testing Guidelines.
- Input Validation: Validate all user inputs
- SQL Injection Prevention: Use parameterized queries only
- File Upload Security: Validate file types, sizes, and content
- Authentication: Implement proper auth checks
- Secrets Management: Never commit secrets to git
- Input validation for all endpoints
- Proper error handling without information leakage
- Authentication/authorization checks
- Rate limiting implementation
- SQL injection prevention
- XSS protection
- CSRF protection
- Security headers
For detailed security guidelines, see Security Guidelines.
- Check existing issues
- Ensure you're using the latest version
- Test in a clean environment (Docker)
Use our bug report template or include:
**Bug Description**
A clear description of what the bug is.
**Steps to Reproduce**
1. Go to '...'
2. Click on '...'
3. See error
**Expected Behavior**
What you expected to happen.
**Environment**
- OS: [e.g., Ubuntu 22.04]
- Go version: [e.g., 1.23]
- Docker version: [e.g., 24.0.6]
- API version: [e.g., 2.0.0]
**Logs**
Include relevant log output (remove sensitive information).- Check existing discussions
- Review our roadmap
- Consider if this fits the project scope
Use our feature request template or include:
**Feature Description**
A clear description of the feature you'd like to see.
**Problem Statement**
What problem does this solve? Who would benefit?
**Proposed Solution**
How you envision this feature working.
**Alternatives Considered**
Other approaches you've considered.
**Implementation Notes**
Any technical considerations or constraints.- Read our Technical Guidelines
- Ensure your branch is up-to-date with main
- Run all tests locally
- Self-review your changes
- Code follows project style guidelines
- Self-review completed
- Tests added for new functionality
- All tests pass locally
- Documentation updated
- Security considerations addressed
- Breaking changes documented
- Automated Checks: CI/CD pipeline runs tests and security scans
- Code Review: Maintainers review code quality and design
- Testing: Changes are tested in staging environment
- Approval: At least one maintainer approval required
- Merge: Squash and merge to main branch
We follow Semantic Versioning:
- MAJOR (v3.0.0): Breaking changes
- MINOR (v2.1.0): New features (backward compatible)
- PATCH (v2.0.1): Bug fixes (backward compatible)
- 🚀 Major Release: New major version with breaking changes
- ✨ Minor Release: New features and enhancements
- 🐛 Patch Release: Bug fixes and security patches
- 🔥 Hotfix: Critical security or bug fixes
We follow the Contributor Covenant. In summary:
- Be respectful and inclusive
- Welcome newcomers and help them learn
- Focus on constructive feedback
- Respect different viewpoints and experiences
- No harassment, discrimination, or inappropriate behavior
- 🐛 GitHub Issues: Bug reports and feature requests
- 💬 GitHub Discussions: General questions and community chat
- 🔄 Pull Requests: Code contributions and reviews
- 📧 Security: dev@rendiff.dev (security issues only)
- Issues: We aim to respond within 48 hours
- Pull Requests: Initial review within 72 hours
- Security Issues: Response within 24 hours
- Performance optimizations for large file processing
- Additional cloud storage providers (Backblaze, DigitalOcean)
- Enhanced security features (OAuth2, SAML)
- Client libraries (Python, JavaScript, Java)
- Advanced monitoring and alerting
- Web dashboard for analysis management
- Advanced analytics and reporting features
- Webhook integrations for external systems
- Advanced quality metrics (custom algorithms)
- Multi-language support for error messages
- Documentation improvements and examples
- Test coverage enhancements
- Code cleanup and refactoring
- Bug fixes and small improvements
- Docker image optimizations
Look for issues labeled with:
- 📋 Technical Contributor Guidelines - Detailed technical guide
- 📖 API Documentation - Complete API reference
- 🐳 Docker Documentation - Container deployment guide
- 🔒 Security Documentation - Security best practices
- 🚀 Quick Start Examples - Get started quickly
- ⚙️ Configuration Examples - Common configurations
- 🔧 Integration Examples - Third-party integrations
- 🛠️ VS Code Extensions - Recommended extensions
- 🐛 Debugging Guide - Debugging techniques
- 📊 Performance Profiling - Performance optimization
- 📖 Check Documentation: Start with our comprehensive docs
- 🔍 Search Issues: Someone might have had the same problem
- 💬 Browse Discussions: Check community Q&A
- 🧪 Try Examples: Run our example code
- 💬 GitHub Discussions: Ask questions and share ideas
- 🐛 GitHub Issues: Report bugs and request features
- 📧 Email: dev@rendiff.dev (for security issues)
- Be specific: Include error messages, logs, and environment details
- Provide context: What were you trying to achieve?
- Share code: Minimal reproduction examples help a lot
- Use formatting: Use markdown code blocks for logs and code
We appreciate all contributions! Contributors are recognized through:
- 📝 Changelog mentions for significant contributions
- ⭐ GitHub profile highlighting in our README
- 🏆 Annual contributor awards for outstanding contributions
- 📢 Social media shoutouts for major features
By contributing to FFprobe API, you agree that your contributions will be licensed under the MIT License.
🎬 Thank you for contributing to FFprobe API!
⭐ Star the project • 🔄 Share with others • 🤝 Join our community