Contributing to GlowBack
Thank you for your interest in contributing! This guide covers everything you need to get started.
Code of Conduct
All participants are expected to follow our Code of Conduct.
Getting Started
- Fork the repository and clone your fork.
- Install prerequisites:
- Rust (stable toolchain — see
rust-toolchain.toml) - Python 3.8+ (for the UI and Python bindings)
- Node.js (optional, for the dashboard)
- Build and run the test suite:
cargo test --workspace
- Launch the Streamlit UI locally:
cd ui
pip install -r requirements.txt
streamlit run app.py
Development Workflow
- Create a branch from
main:git checkout -b feat/my-feature main - Make focused, well-scoped changes.
- Write or update tests for any new behavior.
- Update documentation if user-facing behavior changes.
- Run the full test suite before pushing.
- Open a pull request with a clear summary and test notes.
Releases
GlowBack releases are cut manually from a previously built CI artifact so a maintainer can publish a version without rebuilding during the release step. See Releasing GlowBack for the exact workflow and inputs.
Repository Layout
| Directory | Description |
|---|---|
crates/ |
Rust workspace crates |
crates/gb-types/ |
Core types, strategies, and metrics |
crates/gb-engine/ |
Backtest simulation engine |
crates/gb-data/ |
Data ingestion and storage |
crates/gb-python/ |
PyO3 Python bindings |
ui/ |
Streamlit web UI |
docs/ |
MkDocs documentation source |
docker/ |
Dockerfiles for services |
.github/ |
CI workflows and issue templates |
Testing
Rust
# Run all workspace tests
cargo test --workspace
# Run tests for a specific crate
cargo test -p gb-types
cargo test -p gb-engine
Python / UI
cd ui
python -c "import py_compile; py_compile.compile('app.py')"
CI Checks
Every pull request runs:
- Rust CI (
rust.yml) —cargo test --workspaceandcargo clippy - Docs guard (
docs-guard.yml) — ensures documentation builds cleanly - Docs deploy (
docs.yml) — deploys to GitHub Pages on merge tomain
Pull Request Guidelines
- Fill out the PR template (summary, checklist, docs note).
- Keep PRs focused — one logical change per PR.
- Reference related issues (e.g.,
Fixes #14). - Ensure all CI checks pass before requesting review.
- Delete your feature branch after merge.
Reporting Issues
- Bugs: Use the Bug Report template.
- Features: Use the Feature Request template.
- Security: See Security Policy — do not open public issues for vulnerabilities.
Documentation
We use MkDocs Material. To preview docs locally:
pip install mkdocs-material pymdown-extensions
mkdocs serve
The site auto-deploys to GitHub Pages when changes merge to main.
License
By contributing, you agree that your contributions will be licensed under the same license as the project (see LICENSE).