# Contributing to Webhook Catcher Thanks for your interest in contributing to **Webhook Catcher** ๐ŸŽ‰ All kinds of contributions are welcome โ€” bug reports, documentation improvements, and code changes. --- ## ๐Ÿงญ Getting Started 1. Fork the repository 2. Clone your fork locally 3. Create a new branch from `main`: ```bash git checkout -b feature/my-change ``` --- ## ๐Ÿ›  Development Setup ### Requirements - Python 3.13+ // Changed from 3.9+ - pip - (Optional) Docker ### Local setup ```bash pip install -r requirements.txt uvicorn main:app --reload ``` The app will be available at: ``` http://localhost:8000 ``` --- ## ๐Ÿงช Testing Changes Before opening a PR, please ensure: - The app starts without errors - `/healthz` returns `200 OK` - Webhooks can be received via `/webhook` - UI pages load correctly For Railway-related changes, please test: - Deployment via the Railway template (volume auto-attached) - Application behavior across redeploys (data persistence) --- ## ๐Ÿงฉ Database & Volumes (Important) Webhook Catcher uses SQLite. - The database path is `/app/data/webhooks.db` - When deployed via the **Railway template**, a persistent volume is **automatically attached and mounted** at `/app/data` - Data persists across redeploys without manual setup For local development: - Data is stored on the local filesystem - Data loss on container rebuilds is expected unless you mount a volume manually Please do not introduce hardcoded paths outside `/app/data`. --- ## ๐Ÿ“ฆ Pull Request Guidelines When opening a PR: - Keep changes focused and small - Explain **why** the change is needed - Update documentation if behavior changes - Reference related issues when applicable ### Good PR titles - `Fix: handle empty webhook payloads` - `Docs: clarify Railway volume setup` - `Feature: protect UI with optional password` --- ## ๐Ÿงน Code Style - Follow existing code patterns - Prefer readability over cleverness - Avoid introducing new dependencies unless necessary --- ## ๐Ÿž Reporting Issues If you find a bug: - Include steps to reproduce - Include logs or screenshots if relevant - Mention your platform (local, Railway, Docker) --- ## ๐Ÿค Code of Conduct Be respectful and constructive. Harassment or toxic behavior will not be tolerated. --- Thanks again for contributing โ€” every improvement helps ๐Ÿš€