peregrine/CONTRIBUTING.md
pyr0ball 3458122537
Some checks failed
CI / test (push) Failing after 21s
fix: rename setup.sh → install.sh; four installer gaps from #71
- Rename setup.sh to install.sh (standardise with cf-orch installer pattern)
- Remove hardcoded dev-machine path from activate_git_hooks(); go straight
  to .githooks/ core.hooksPath fallback — the absolute path was only valid
  on the author's machine and surprised self-hosters
- Add capture_license_key(): optional CFG-XXXX-… prompt after setup_env(),
  writes CF_LICENSE_KEY + HEIMDALL_URL into .env when a valid key is entered
- Fix next-steps port: read STREAMLIT_PORT from .env instead of hardcoding
  8501 (Docker default is 8502; users who customise the port saw a wrong URL)
- Update .env.example: STREAMLIT_PORT=8502 (Docker default, not bare-metal 8501)
- Fix stale git clone URL in docs/getting-started/installation.md:
  git.circuitforge.io → git.opensourcesolarpunk.com/Circuit-Forge/peregrine
- Update all setup.sh references across manage.sh, Makefile, CONTRIBUTING.md,
  README.md, and docs/ to install.sh

Closes #71
2026-04-05 23:33:51 -07:00

2.2 KiB

Contributing to Peregrine

Thanks for your interest. Peregrine is developed primarily at git.opensourcesolarpunk.com. GitHub and Codeberg are push mirrors — issues and PRs are welcome on either platform.


License

Peregrine is licensed under BSL 1.1 — Business Source License.

What this means for you:

Use case Allowed?
Personal self-hosting, non-commercial Free
Contributing code, fixing bugs, writing docs Free
Commercial SaaS / hosted service 🔒 Requires a paid license
After 4 years from each release date Converts to MIT

By submitting a pull request you agree that your contribution is licensed under the project's BSL 1.1 terms. The PR template includes this as a checkbox.


Dev Setup

See docs/getting-started/installation.md for full instructions.

Quick start (Docker — recommended):

git clone https://git.opensourcesolarpunk.com/pyr0ball/peregrine.git
cd peregrine
./install.sh        # installs deps, activates git hooks
./manage.sh start

Conda (no Docker):

conda run -n job-seeker pip install -r requirements.txt
streamlit run app/app.py

Commit Format

Hooks enforce Conventional Commits:

type: short description
type(scope): short description

Valid types: feat fix docs chore test refactor perf ci build

The hook will tell you exactly what went wrong if your message is rejected.


Pull Request Process

  1. Fork and branch from main
  2. Write tests first (we use pytest)
  3. Run pytest tests/ -v — all tests must pass
  4. Open a PR on GitHub or Codeberg
  5. PRs are reviewed and cherry-picked to Forgejo (the canonical repo) — you don't need a Forgejo account

Reporting Issues

Use the issue templates:

  • Bug — steps to reproduce, version, OS, Docker or conda, logs
  • Feature — problem statement, proposed solution, which tier it belongs to

Security issues: Do not open a public issue. Email security@circuitforge.tech. See SECURITY.md.