3.5 KiB
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
- How Can I Contribute?
- Getting Started
- Development Workflow
- Commit Message Guidelines
- Pull Request Process
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
- Fork the repository and create your branch from
main - Name your branch descriptively:
feature/add-ibkr-providerorfix/mt5-thread-safety - Make your changes with clear, focused commits
- Test your changes before submitting
- 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
- Ensure your PR description clearly explains what changed and why
- Reference any related Issues using
Closes #issue_number - Keep PRs focused — one feature or fix per PR is preferred
- Be responsive to review feedback
- 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.