Skip to content

Contributing

Guide for contributing to Subtide development.


  • Node.js 18+
  • Python 3.9+
  • FFmpeg
  • Git
Terminal window
git clone https://github.com/rennerdo30/subtide.git
cd subtide

Terminal window
cd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
pip install -r requirements-dev.txt
# Run development server
./run.sh
Terminal window
# No build step required - extension uses vanilla JS
# Load in Chrome:
# 1. Go to chrome://extensions
# 2. Enable Developer mode
# 3. Load unpacked → select 'extension' folder

subtide/
├── backend/ # Python Flask server
│ ├── app.py # Entry point
│ ├── config.py # Configuration
│ ├── routes/ # API endpoints
│ ├── services/ # Business logic
│ ├── utils/ # Utilities
│ └── tests/ # Test suite
├── extension/ # Chrome Extension
│ ├── manifest.json # Extension manifest
│ ├── src/
│ │ ├── background/ # Service worker
│ │ ├── content/ # Content scripts
│ │ ├── popup/ # Extension popup
│ │ └── lib/ # Shared utilities
│ └── _locales/ # Translations
├── docs/ # Documentation (MkDocs)
└── .github/ # CI/CD workflows

Terminal window
cd backend
# Run all tests
pytest
# With coverage
pytest --cov=. --cov-report=term-missing
# Specific test file
pytest tests/test_translation.py
# Verbose output
pytest -v

We aim for close to 100% test coverage. All new features and bug fixes should include tests.


  • Follow PEP 8
  • Use type hints where practical
  • Maximum line length: 100 characters
  • Use ES6+ features
  • No external dependencies (vanilla JS)
  • Use JSDoc comments for complex functions

Terminal window
git checkout -b feature/your-feature-name
  • Write code
  • Add tests
  • Update documentation if needed
Terminal window
cd backend
pytest
Terminal window
git add .
git commit -m "Add feature: description"
Terminal window
git push origin feature/your-feature-name

Then create a Pull Request on GitHub.


  • All tests pass
  • Code follows style guidelines
  • Documentation updated (if applicable)
  • Commit messages are clear

Include:

  • What the PR does
  • Why the change is needed
  • How to test it
  • Screenshots (for UI changes)

Include:

  • Browser and version
  • Operating system
  • Steps to reproduce
  • Expected vs actual behavior
  • Error messages
  • Screenshots if applicable

Include:

  • Clear description of the feature
  • Use case / why it’s needed
  • Any implementation ideas

  • Manifest V3: Required for modern Chrome extensions
  • Vanilla JS: No build step, easier debugging
  • Content Scripts: Separate scripts per platform (YouTube, Twitch, generic)
  • Flask: Simple, well-documented
  • Gunicorn: Production-ready server
  • Multiple Whisper backends: Support different hardware

  • Documentation improvements
  • Bug fixes
  • Test coverage
  • Localization (new languages)
  • Safari extension support
  • Additional video platforms
  • Performance optimizations
  • UI/UX improvements


By contributing, you agree that your contributions will be licensed under the MIT License.