Join Our Educational Programming Community!
🎓 LEARNING OPPORTUNITY: Contributing to this project is an excellent way to learn modern Python development, GUI frameworks, and software engineering best practices.
🚫 NOT FOR TRADING: This is an educational project only. All contributions should focus on learning programming concepts, not trading functionality.
We welcome contributions from learners at all levels! Whether you're a student, self-taught developer, or experienced programmer looking to learn new frameworks, this project offers valuable learning opportunities.
- Python Programming: Object-oriented design, error handling, and best practices
- GUI Development: tkinter desktop applications and event-driven programming
- Web Frameworks: Streamlit for rapid web application development
- Data Visualization: Interactive charting with Plotly and data presentation
- Software Engineering: Version control, testing, documentation, and project structure
- Open Source Collaboration: Working with Git, GitHub, and community development
- Code of Conduct
- Getting Started as a Learner
- Types of Learning Contributions
- Educational Development Setup
- Coding Guidelines for Learners
- Submitting Learning Projects
- Learning Community
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
Examples of behavior that contributes to a positive environment:
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior:
- Trolling, insulting/derogatory comments, and personal attacks
- Public or private harassment
- Publishing others' private information without explicit permission
- Other conduct which could reasonably be considered inappropriate
New to open source? Check out these resources:
- Browse Issues: Look for issues labeled
good first issueorhelp wanted - Check Discussions: Join conversations about features and improvements
- Review Documentation: Help improve guides and examples
- Test Features: Try new features and report bugs
Before submitting a bug report:
- Check if the issue already exists
- Try the latest version
- Read the TROUBLESHOOTING.md guide
When submitting a bug report, include:
- Clear, descriptive title
- Steps to reproduce the issue
- Expected vs actual behavior
- System information (OS, Python version, package versions)
- Screenshots if applicable
- Error messages (complete stack trace)
Bug Report Template:
**Bug Description**
A clear description of what the bug is.
**Steps to Reproduce**
1. Go to '...'
2. Click on '...'
3. See error
**Expected Behavior**
What you expected to happen.
**Screenshots**
If applicable, add screenshots.
**System Information**
- OS: [e.g., Windows 10, macOS 12.0, Ubuntu 20.04]
- Python Version: [e.g., 3.9.7]
- Package Versions: [run `pip list` and paste relevant packages]
**Additional Context**
Any other context about the problem.Before suggesting a feature:
- Check if it already exists or is planned
- Consider if it fits the project's scope
- Think about how it benefits users
When suggesting a feature, include:
- Clear use case and benefits
- Detailed description of the feature
- Examples of how it would work
- Consider implementation complexity
Documentation contributions are highly valued!
- Fix typos and grammatical errors
- Improve clarity and examples
- Add missing documentation
- Create tutorials and guides
- Update outdated information
Areas where code contributions are welcome:
- New technical indicators
- UI/UX improvements
- Performance optimizations
- Mobile interface enhancements
- Testing and quality assurance
- Bug fixes and stability improvements
- Python 3.8 or higher
- Git
- Text editor or IDE (VS Code recommended)
-
Fork the Repository
# Click "Fork" on GitHub, then clone your fork git clone https://github.com/YOUR-USERNAME/pandas-ta-gui-suite.git cd pandas-ta-gui-suite
-
Create Virtual Environment
python -m venv venv # Activate virtual environment # Windows: venv\Scripts\activate # Mac/Linux: source venv/bin/activate
-
Install Dependencies
# Install main dependencies pip install -r requirements.txt # Install development dependencies pip install pytest pytest-cov black flake8
-
Verify Installation
# Test desktop GUI python pandas_ta_gui.py # Test web demo streamlit run web_demo.py
Recommended VS Code Extensions:
- Python
- Pylance
- Black Formatter
- GitLens
- Markdown Preview Enhanced
VS Code Settings (.vscode/settings.json):
{
"python.formatting.provider": "black",
"python.linting.enabled": true,
"python.linting.flake8Enabled": true,
"python.testing.pytestEnabled": true
}Follow PEP 8 with these specifics:
- Line length: 88 characters (Black default)
- Use Black for automatic formatting
- Use meaningful variable names
- Add type hints where helpful
- Write docstrings for functions and classes
Example Function:
def calculate_rsi(data: pd.DataFrame, period: int = 14) -> pd.Series:
"""
Calculate Relative Strength Index (RSI).
Args:
data: DataFrame with OHLCV data
period: Number of periods for RSI calculation
Returns:
Series containing RSI values
Raises:
ValueError: If period is less than 1
"""
if period < 1:
raise ValueError("Period must be at least 1")
# Implementation here
return rsi_seriesDesktop GUI (tkinter):
- Follow VS Code theme color scheme
- Use consistent spacing and padding
- Implement proper error handling
- Add status updates for long operations
- Ensure responsive design
Mobile Web (Streamlit):
- Mobile-first design approach
- Touch-friendly interface elements
- Minimal sidebar usage
- Fast loading and performance
- Cross-browser compatibility
Write tests for:
- New functions and methods
- Bug fixes
- Critical functionality
- Edge cases and error conditions
Test Structure:
import pytest
import pandas as pd
from pandas_ta_gui import PandasTAGUI
class TestPandasTAGUI:
def test_sample_data_generation(self):
"""Test sample data generation functionality."""
gui = PandasTAGUI()
data = gui.generate_sample_data(days=100, start_price=100.0)
assert len(data) == 100
assert 'Close' in data.columns
assert data['Close'].iloc[0] == 100.0
def test_indicator_calculation(self):
"""Test technical indicator calculations."""
# Test implementation
passDocstring Style (Google format):
def function_name(param1: type, param2: type) -> return_type:
"""Brief description of function.
Longer description if needed. Explain the purpose,
behavior, and any important details.
Args:
param1: Description of first parameter.
param2: Description of second parameter.
Returns:
Description of return value.
Raises:
ExceptionType: Description of when this exception is raised.
Example:
>>> result = function_name("example", 42)
>>> print(result)
"expected output"
"""-
Create Feature Branch
git checkout -b feature/your-feature-name # or git checkout -b bugfix/issue-number -
Make Changes
- Write code following our guidelines
- Add tests for new functionality
- Update documentation as needed
- Test your changes thoroughly
-
Format and Lint
# Format code with Black black . # Check with flake8 flake8 . # Run tests pytest
-
Commit Changes
git add . git commit -m "Add feature: brief description - Detailed description of changes - List specific improvements - Reference issue numbers if applicable"
-
Push and Create PR
git push origin feature/your-feature-name
Then create a Pull Request on GitHub.
PR Title Format:
Add: New feature descriptionFix: Bug descriptionUpdate: Documentation/improvement descriptionRefactor: Code improvement description
PR Description Template:
## Summary
Brief description of changes.
## Changes Made
- List of specific changes
- Include any breaking changes
- Note any new dependencies
## Testing
- [ ] Tested on Windows
- [ ] Tested on Mac/Linux
- [ ] Added/updated tests
- [ ] Manual testing completed
## Screenshots
Include screenshots for UI changes.
## Checklist
- [ ] Code follows project style guidelines
- [ ] Documentation updated
- [ ] Tests added/updated
- [ ] No breaking changes (or clearly documented)
Fixes #issue-number- Automated Checks: PRs run automated tests
- Code Review: Maintainers review code and provide feedback
- Discussion: Address any questions or requested changes
- Approval: Once approved, PR will be merged
- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: Questions, ideas, and general discussion
- Pull Requests: Code review and collaboration
For Contributors:
- Ask questions in GitHub Discussions
- Reference existing issues and PRs
- Read documentation thoroughly
- Start with small contributions
For Users:
- Check TROUBLESHOOTING.md first
- Search existing issues
- Create detailed bug reports
- Be patient and respectful
Contributors will be:
- Listed in project contributors
- Mentioned in release notes
- Credited for significant contributions
- Invited to join maintainer team for ongoing contributors
Python Development:
GUI Development:
Technical Analysis:
pandas-ta-gui-suite/
├── pandas_ta_gui.py # Main desktop application
├── web_demo.py # Mobile web interface
├── stable_web_launcher.py # Web server launcher
├── requirements.txt # Dependencies
├── setup_gui.py # Package setup
├── tests/ # Test suite
├── docs/ # Documentation
├── examples/ # Usage examples
└── data/ # Sample data
Thank you for contributing to the Pandas-TA GUI Suite!
Your contributions help make technical analysis more accessible to everyone. Whether you're fixing a typo or adding a major feature, every contribution matters.
🌟 Don't forget to star the repository if you find it useful!