Thank you for your interest in contributing to V-Streaming! We appreciate your help in making V-Streaming better.
- Code of Conduct
- Getting Started
- Development Setup
- Coding Standards
- Submitting Changes
- Reporting Bugs
- Suggesting Features
We are committed to providing a welcoming and inclusive environment for all contributors.
- Be respectful and inclusive
- Welcome newcomers and help them learn
- Focus on constructive feedback
- Be considerate of different viewpoints and experiences
- Show empathy towards other community members
- Harassment, discrimination, or derogatory language
- Personal attacks or insults
- Public or private harassment
- Publishing others' private information
- Any other unethical or unprofessional conduct
If you witness or experience any unacceptable behavior, please contact us at:
- Email: conduct@v-streaming.com
- Discord: DM @Moderators
Before contributing, ensure you have:
- Rust: 1.70 or later
- Node.js: 20 or later
- npm: 9 or later
- Git: Latest version
- Windows 10/11 (for development)
- IDE: VS Code with Rust and TypeScript extensions
- Browser: Chrome or Firefox for testing
- Terminal: PowerShell or Git Bash
- Go to https://github.com/vantisCorp/V-Streaming
- Click the "Fork" button
- Clone your fork locally
git clone https://github.com/YOUR_USERNAME/V-Streaming.git
cd V-Streaming# Install Rust (if not already installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Install Tauri CLI
cargo install tauri-cli# Install frontend dependencies
npm install# Start development server
npm run tauri devThis will:
- Start the Vite development server
- Launch the Tauri application
- Enable hot-reloading for both frontend and backend
# Build production version
npm run tauri buildThe built application will be in src-tauri/target/release/bundle/
- Modules:
snake_case(e.g.,audio_engine) - Structs:
PascalCase(e.g.,AudioEngine) - Functions:
snake_case(e.g.,start_capture) - Constants:
SCREAMING_SNAKE_CASE(e.g.,MAX_BITRATE) - Types:
PascalCase(e.g.,AudioConfig)
- Use 4 spaces for indentation
- Maximum line length: 100 characters
- Use
rustfmtfor formatting - Use
clippyfor linting
# Format code
cargo fmt
# Run linter
cargo clippy- Document all public functions and structs
- Use
///for documentation comments - Include examples where appropriate
/// Starts audio processing with the given configuration.
///
/// # Arguments
///
/// * `config` - Audio configuration settings
///
/// # Returns
///
/// Result indicating success or failure
///
/// # Examples
///
/// ```
/// let config = AudioConfig::default();
/// start_audio_processing(config)?;
/// ```
pub fn start_audio_processing(config: AudioConfig) -> Result<()> {
// Implementation
}- Components:
PascalCase(e.g.,AudioMixer) - Functions:
camelCase(e.g.,startCapture) - Constants:
UPPER_SNAKE_CASE(e.g.,MAX_BITRATE) - Types/Interfaces:
PascalCase(e.g.,AudioConfig)
- Use 2 spaces for indentation
- Maximum line length: 100 characters
- Use ESLint for linting
- Use Prettier for formatting
# Format code
npm run format
# Run linter
npm run lintimport React, { useState, useEffect } from 'react';
interface Props {
// Props interface
}
const ComponentName: React.FC<Props> = ({ prop1, prop2 }) => {
// State
const [state, setState] = useState(initialValue);
// Effects
useEffect(() => {
// Effect logic
}, [dependencies]);
// Handlers
const handleEvent = () => {
// Handler logic
};
// Render
return (
<div className="component-name">
{/* JSX */}
</div>
);
};
export default ComponentName;Create a new branch for your changes:
git checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bug-fix- Write clean, well-documented code
- Follow coding standards
- Add tests for new features
- Update documentation
# Run tests
npm test
# Run linter
npm run lint
# Build application
npm run tauri buildWrite clear, descriptive commit messages:
git add .
git commit -m "feat: add new feature description"
# or
git commit -m "fix: resolve bug description"git push origin feature/your-feature-name- Go to https://github.com/vantisCorp/V-Streaming
- Click "Pull Requests"
- Click "New Pull Request"
- Select your branch
- Fill out the PR template
- Submit your PR
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Testing
- [ ] Tests added/updated
- [ ] All tests passing
- [ ] Manual testing completed
## Checklist
- [ ] Code follows project style guidelines
- [ ] Self-review completed
- [ ] Documentation updated
- [ ] No new warnings generated
- [ ] Added/updated tests
- [ ] All tests passing
## Screenshots (if applicable)
Add screenshots for UI changes
## Additional Notes
Any additional information- Check existing issues to avoid duplicates
- Search the documentation
- Try the latest version
## Bug Description
Clear and concise description of the bug
## Steps to Reproduce
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
## Expected Behavior
What should happen
## Actual Behavior
What actually happens
## Screenshots
Add screenshots if applicable
## Environment
- OS: [e.g., Windows 11]
- V-Streaming Version: [e.g., 1.0.0]
- GPU: [e.g., NVIDIA RTX 3080]
- RAM: [e.g., 16GB]
## Additional Context
Any other context about the problem- GitHub Issues: https://github.com/vantisCorp/V-Streaming/issues
- Discord: #bug-reports channel
- Email: bugs@v-streaming.com
## Feature Description
Clear and concise description of the feature
## Problem Statement
What problem does this feature solve?
## Proposed Solution
How should this feature work?
## Alternatives
What alternatives have you considered?
## Additional Context
Any other context or screenshots- GitHub Issues: https://github.com/vantisCorp/V-Streaming/issues
- Discord: #feature-requests channel
- Email: features@v-streaming.com
Contributors will be recognized in:
- Contributors section of README
- Release notes
- Credits in the application
- Special Discord role
- Discord: #development channel
- Email: dev@v-streaming.com
- Email: security@v-streaming.com
- PGP Key: [Link to PGP key]
By contributing to V-Streaming, you agree that your contributions will be licensed under the same license as the project.
Thank you for contributing to V-Streaming! 🚀