Files
2026-05-21 18:15:28 +03:00

3.5 KiB

Contributing to QuantumTerminal

Thank you for your interest in contributing to QuantumTerminal! This is a free, open-source project and we welcome contributions from developers of all experience levels.


Table of Contents


Code of Conduct

Be respectful, constructive, and collaborative. We are here to build something useful together.


How Can I Contribute?

There are many ways to contribute, regardless of your skill level:

High Priority Areas

Area Description Skills Needed
MT5 Thread Safety Fix concurrency issues in backend/data_server.py Python, Threading
New Broker Providers Add Interactive Brokers, Alpaca, or other providers Python, REST/WebSocket APIs
Open-Source React UI Rebuild the frontend as open-source JSX/React source React, TypeScript
Backend Architecture Refactor and improve the FastAPI backend structure Python, FastAPI
Documentation Improve setup guides, add inline comments, write wiki pages Markdown, Python
Testing Add unit and integration tests for backend modules Python, pytest

Other Ways to Help

  • Report bugs by opening an Issue
  • Suggest new features or overlays
  • Review open Pull Requests
  • Improve the README or this CONTRIBUTING guide
  • Share the project with others who might be interested

Getting Started

Prerequisites

  • Python 3.10+
  • Node.js (optional, for Electron packaging)
  • Git
  • A broker account for live data (MT5, Rithmic, or Tradovate) — optional for backend-only work

Local Setup

# 1. Fork the repository on GitHub
# 2. Clone your fork
git clone https://github.com/YOUR_USERNAME/QuantumTerminal.git
cd QuantumTerminal

# 3. Install Python dependencies
cd backend
pip install fastapi uvicorn websockets watchfiles yfinance MetaTrader5

# 4. Run the backend server
python launcher.py

# 5. Open the UI
# Navigate to http://127.0.0.1:8502 in your browser

Development Workflow

  1. Fork the repository and create your branch from main
  2. Name your branch descriptively: feature/add-ibkr-provider or fix/mt5-thread-safety
  3. Make your changes with clear, focused commits
  4. Test your changes before submitting
  5. Open a Pull Request with a clear description of what you changed and why

Commit Message Guidelines

Use clear, descriptive commit messages:

feat: add Interactive Brokers provider
fix: resolve MT5 thread-safety issue in data_server.py
docs: update installation instructions
refactor: reorganize backend provider structure
test: add unit tests for websocket broadcaster

Prefixes: feat, fix, docs, refactor, test, chore


Pull Request Process

  1. Ensure your PR description clearly explains what changed and why
  2. Reference any related Issues using Closes #issue_number
  3. Keep PRs focused — one feature or fix per PR is preferred
  4. Be responsive to review feedback
  5. PRs are merged by the maintainer after review

Questions?

Feel free to open an Issue with the question label if you need help getting started or have any questions about the codebase.

We appreciate every contribution, no matter how small.