Thank you for your interest in contributing to StreamVault! This document provides guidelines and information for contributors.
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Submitting Changes
- Code Style
- Testing
- Documentation
By participating in this project, you agree to maintain a respectful and inclusive environment for everyone. Please be kind, considerate, and constructive in all interactions.
- Python 3.12+
- Node.js 18+
- Docker and Docker Compose
- Git
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/yourusername/StreamVault.git
cd StreamVault- Create a virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies:
pip install -r requirements.txt- Set up environment variables:
cp .env.example .env
# Edit .env with your configuration- Start database:
docker-compose up -d db- Run migrations:
python -m app.migrations_init- Start development server:
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000- Navigate to frontend directory:
cd app/frontend- Install dependencies:
npm install- Start development server:
npm run devUse descriptive branch names:
feature/add-youtube-supportbugfix/fix-audio-syncdocs/update-api-referencerefactor/improve-error-handling
Follow conventional commit format:
type(scope): description
[optional body]
[optional footer]
Examples:
feat(api): add YouTube platform supportfix(recording): resolve audio sync issues with proxydocs(readme): update installation instructionsrefactor(frontend): simplify video player component
- Create a feature branch:
git checkout -b feature/your-feature-name-
Make your changes following the code style guidelines
-
Test your changes thoroughly
-
Commit your changes:
git add .
git commit -m "feat: add your feature description"- Push to your fork:
git push origin feature/your-feature-name- Create a Pull Request on GitHub
- Clear Title: Use a descriptive title
- Detailed Description: Explain what changes you made and why
- Link Issues: Reference any related issues
- Screenshots: Include screenshots for UI changes
- Testing: Describe how you tested your changes
- Follow PEP 8 style guidelines
- Use Black for code formatting
- Use isort for import sorting
- Maximum line length: 88 characters
# Format code
black app/
isort app/
# Check style
flake8 app/- Follow ESLint configuration
- Use Prettier for code formatting
- Use TypeScript where possible
# Format code
npm run format
# Check style
npm run lint- Clear variable names: Use descriptive names
- Comments: Add comments for complex logic
- Error handling: Always handle errors gracefully
- Type hints: Use type hints in Python code
- Documentation: Update documentation for new features
# Run all tests
pytest
# Run with coverage
pytest --cov=app
# Run specific test file
pytest tests/test_recording_service.pycd app/frontend
# Run unit tests
npm run test
# Run e2e tests
npm run test:e2e# Start test environment
docker-compose -f docker-compose.test.yml up -d
# Run integration tests
pytest tests/integration/- API documentation is auto-generated from FastAPI schemas
- Update docstrings and type hints for new endpoints
- Test API endpoints in the interactive docs at
/docs
- Update relevant sections in
README.md - Add new configuration options to the documentation
- Include examples for new features
- Add docstrings to all functions and classes
- Include parameter descriptions and return types
- Provide usage examples for complex functions
Include the following information:
- Environment: OS, Python version, Docker version
- Steps to reproduce: Clear step-by-step instructions
- Expected behavior: What should happen
- Actual behavior: What actually happens
- Logs: Relevant log output
- Screenshots: If applicable
Include the following information:
- Use case: Why is this feature needed?
- Proposed solution: How should it work?
- Alternatives: Any alternative solutions considered?
- Additional context: Any other relevant information
We use the following labels for issues and PRs:
bug: Something isn't workingenhancement: New feature or requestdocumentation: Documentation improvementsgood first issue: Good for newcomershelp wanted: Extra attention is neededquestion: Further information is requestedwontfix: This will not be worked on
We welcome contributions in these areas:
- Bug fixes: Always appreciated!
- Documentation: Improve existing docs or add new ones
- Testing: Add tests for uncovered code
- Performance: Optimize slow operations
- Multi-platform support: YouTube, Facebook Gaming, etc.
- Cloud storage: S3, Google Drive integration
- Mobile apps: React Native or Flutter
- Analytics: Recording statistics and insights
- CI/CD: Improve GitHub Actions workflows
- Docker: Optimize container images
- Monitoring: Add health checks and metrics
- Security: Security audits and improvements
If you need help contributing:
- Check existing documentation first
- Search existing issues for similar questions
- Create a new issue with the
questionlabel - Join discussions in GitHub Discussions
Contributors will be recognized in:
README.mdcontributors section- Release notes for significant contributions
- GitHub contributors page
Thank you for contributing to StreamVault!