Skip to content

Latest commit

 

History

History
82 lines (61 loc) · 3.07 KB

File metadata and controls

82 lines (61 loc) · 3.07 KB

Contributing to TorBox Media Server

Thank you for your interest in contributing! This is a community project and all contributions are welcome — from bug reports and documentation fixes to new features.

How to Contribute

Reporting Bugs

Before opening an issue, please:

  1. Check the Troubleshooting section in the README
  2. Search existing issues to avoid duplicates

When opening a bug report, please include:

  • Your Linux distro and version
  • Docker and Docker Compose versions (docker --version, docker compose version)
  • The output of ./manage.sh status
  • Relevant logs from ./manage.sh logs <service>
  • Steps to reproduce the issue

Suggesting Features

Open a GitHub Issue with the label enhancement and describe:

  • What problem the feature solves
  • How you'd expect it to work
  • Any alternatives you've considered

Submitting Pull Requests

  1. Fork the repository
  2. Create a branch from main:
    git checkout -b feature/your-feature-name
  3. Make your changes — keep them focused and well-commented
  4. Test your changes:
    • Run the unit tests: bash tests/test_setup_functions.sh
    • Run the API key tests: bash tests/test_api_key.sh
    • Run the E2E test suite: bash tests/test_e2e.sh
    • Run ShellCheck on any modified scripts: shellcheck setup.sh uninstall.sh
    • Manually test setup on a clean environment if possible
  5. Commit with a clear message:
    git commit -m "fix: describe what was fixed"
  6. Push and open a Pull Request against main

Commit Message Style

Use conventional commits:

Prefix When to use
feat: New feature
fix: Bug fix
docs: Documentation changes only
chore: Maintenance tasks (dependency bumps, CI changes)
refactor: Code restructuring without functional change

Code Style

  • All shell scripts must pass ShellCheck (CI enforces this)
  • Follow the existing code style in setup.sh — functions are named with underscores, long sections are separated by visual dividers
  • Keep user-facing messages clear and consistent with existing log formatting
  • New interactive prompts should respect the --yes / TORBOX_* env var patterns for unattended installs

Project Structure

File Purpose
setup.sh Main installation script — interactive and --yes mode
uninstall.sh Clean removal script
docker-compose.yml Reference Docker Compose (regenerated by setup.sh)
.env.example Environment variable template (used by non-interactive installs)
tests/ Shell-based unit tests for setup functions
.github/workflows/lint.yml CI workflow: shfmt formatting, ShellCheck, unit tests, manage.sh validation, compose validation

Questions?

Open a GitHub Discussion or an Issue if you're unsure where to start.