Create CONTRIBUTING.md
This commit is contained in:
+119
@@ -0,0 +1,119 @@
|
||||
# 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](#code-of-conduct)
|
||||
- [How Can I Contribute?](#how-can-i-contribute)
|
||||
- [Getting Started](#getting-started)
|
||||
- [Development Workflow](#development-workflow)
|
||||
- [Commit Message Guidelines](#commit-message-guidelines)
|
||||
- [Pull Request Process](#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
|
||||
|
||||
```bash
|
||||
# 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.
|
||||
Reference in New Issue
Block a user