# Contributing to SteamSelfGifter Thank you for considering contributing to SteamSelfGifter! The maintainer builds this project with [Conclave](https://github.com/kernelcoffee/Conclave), a Claude Code agent team that plans, reviews and tests every change against the project's conventions. You do not need it to contribute: a pull request written by hand is reviewed the same way. ## Getting Started 1. Fork the repository 2. Clone your fork 3. Set up development environment (see README.md) 4. Create a feature branch 5. Make your changes 6. Submit a pull request ## Development Setup ### Backend ```bash cd backend python -m venv .venv source .venv/bin/activate pip install -e ".[dev]" pytest # Verify setup ``` ### Frontend ```bash cd frontend npm install npm test # Verify setup ``` ### Data directory The backend picks its data directory at runtime (`get_data_dir()` in `backend/src/core/config.py`): `/config` if it exists (the Docker volume, mounted from `./config` by the compose file), otherwise `./data` relative to the working directory — i.e. `backend/data/` when running uvicorn from `backend/`. Each holds a `steamselfgifter.db` and `app.log`, and both are gitignored, so a checkout that has seen both local and container runs will have two databases; check which one your process is using before inspecting data. ## Guidelines ### Code Style - **Python**: Follow PEP 8, use type hints - **TypeScript**: Use strict mode, define interfaces ### Pull Requests - One feature/fix per PR - Include tests for new functionality - Update documentation if needed - Keep commits focused and well-described ### Commit Messages Use clear, descriptive commit messages: ``` Add safety check toggle to settings page Fix timezone handling in giveaway end times Update API documentation for new endpoints ``` ## Testing ### Backend ```bash cd backend pytest # All tests pytest --cov=src # With coverage ``` ### Frontend ```bash cd frontend npm test # All tests npm run test:coverage # With coverage ``` ## Reporting Issues - Check existing issues first - Include reproduction steps - Provide environment details (OS, Python/Node version) ## Security If you find a security vulnerability, please email the maintainer directly instead of opening a public issue. ## Questions? Open an issue for questions or discussion.