- Python 3.8+
gitpipsshbinary (Linux/macOS)- ngrok installed and authed (Windows testing)
git clone https://github.com/AniruthKarthik/qrtunnel.git
cd qrtunnel
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"pytest tests/ -vruff check .
ruff format --check .Auto-fix:
ruff format .
ruff check --fix .qrtunnel/
├── qrtunnel.py # Main entry point (single-file module)
├── tests/ # Pytest test suite
├── pyproject.toml # Project metadata and build config (canonical)
├── requirements.txt # Runtime dependencies
├── .github/
│ ├── ISSUE_TEMPLATE/ # Bug and feature templates
│ └── PULL_REQUEST_TEMPLATE.md
- Fork the repo.
- Create a branch:
git checkout -b fix/port-collisionorfeat/progress-bar. - Make your changes.
- Run tests and linter — both must pass.
- Commit with a conventional commit message (see below).
- Open a PR against
master.
Use Conventional Commits:
<type>(<scope>): <short summary>
Types: feat | fix | docs | refactor | test | ci | chore
Examples:
fix(lan): handle multi-NIC machines by preferring non-loopback IP
feat(cli): add --version flag reading from pyproject.toml
docs(readme): add TUI screenshot and usage GIF
Look for issues tagged good first issue. These are scoped, low-risk, and well-described.
- One concern per PR. Don't bundle unrelated changes.
- PRs without passing CI will not be reviewed.
- Link the relevant issue:
Closes #N. - Add or update tests for any logic change.
- Update
CHANGELOG.mdunder[Unreleased].
Open a Discussion — not an issue.