Contributing to StakeAPI

Help make StakeAPI even better β€” contributions of all kinds are welcome!


πŸ’‘ Don't have a Stake.com account yet? Sign up here to get started and unlock all API features.

How to Contribute

1. Fork & Clone

git clone https://github.com/chipadevteam/StakeAPI.git
cd StakeAPI

2. Set Up Development Environment

# Create virtual environment
python -m venv .venv

# Activate (Windows)
.venv\Scripts\activate

# Activate (macOS/Linux)
source .venv/bin/activate

# Install dev dependencies
pip install -e ".[dev]"

# Install pre-commit hooks
pre-commit install

Or use the setup script (Windows):

.\setup_dev.ps1

3. Create a Branch

git checkout -b feature/your-feature-name

4. Make Your Changes

  • Write clean, well-documented code
  • Follow the existing code style (Black + isort)
  • Add tests for new functionality
  • Update documentation if needed

5. Run Tests

# Run all tests
pytest

# With coverage
pytest --cov=stakeapi

# Run specific test file
pytest tests/test_client.py

6. Format & Lint

# Format code
black stakeapi/ tests/
isort stakeapi/ tests/

# Lint
flake8 stakeapi/ tests/

# Type check
mypy stakeapi/

7. Submit a Pull Request

Push your branch and open a pull request against the main branch.

Contribution Guidelines

Code Style

  • Formatter: Black (line length: 88)
  • Import sorting: isort (profile: black)
  • Linting: flake8
  • Type hints: Required for all public methods
  • Docstrings: Google style

Testing

  • All new features must include tests
  • Maintain or improve code coverage
  • Use pytest-asyncio for async tests
  • Mock external API calls

Commit Messages

Follow conventional commits:

feat: add WebSocket support
fix: handle token expiration correctly
docs: update authentication guide
test: add tests for rate limiter
refactor: simplify GraphQL request handling

What to Contribute

  • Bug fixes β€” Find and fix bugs
  • New features β€” Add API endpoint wrappers
  • Documentation β€” Improve guides, add examples
  • Tests β€” Increase test coverage
  • Performance β€” Optimize request handling
  • Types β€” Add or improve type annotations

Project Structure

StakeAPI/
β”œβ”€β”€ stakeapi/              # Main package
β”‚   β”œβ”€β”€ __init__.py        # Package exports
β”‚   β”œβ”€β”€ _version.py        # Version info
β”‚   β”œβ”€β”€ auth.py            # Authentication
β”‚   β”œβ”€β”€ client.py          # Main client
β”‚   β”œβ”€β”€ endpoints.py       # API endpoints
β”‚   β”œβ”€β”€ exceptions.py      # Custom exceptions
β”‚   β”œβ”€β”€ models.py          # Pydantic models
β”‚   └── utils.py           # Utility functions
β”œβ”€β”€ tests/                 # Test suite
β”‚   β”œβ”€β”€ conftest.py        # Test fixtures
β”‚   β”œβ”€β”€ test_client.py     # Client tests
β”‚   β”œβ”€β”€ test_models.py     # Model tests
β”‚   └── test_utils.py      # Utility tests
β”œβ”€β”€ docs/                  # Documentation (GitHub Pages)
β”œβ”€β”€ examples/              # Example scripts
β”œβ”€β”€ pyproject.toml         # Project configuration
└── Makefile               # Dev commands

Code of Conduct

Be respectful and constructive. We’re all here to build something great together.

🎰 Ready to experience Stake.com?

Create your account and start using StakeAPI with real data today.

Sign Up on Stake.com β†’

πŸ’¬ Join the StakeAPI Community on Discord

Get help, share your projects, discuss strategies, and stay up to date with the latest StakeAPI news.

Join Our Discord Server β†’

Want to test your contributions? You’ll need a Stake.com account for integration testing.