# 🎫 TicketHub Lightweight open-source ticket/issue tracking system with webhook support. ## Features - **Projects** - Organize tickets by project with unique keys (e.g., PROJ-123) - **Tickets** - Create, update, and track issues with status and priority - **Comments** - Add comments to tickets for collaboration - **Webhooks** - Trigger external systems on ticket events - **Simple** - SQLite database, no complex setup required ## Quick Start ### Docker ```bash docker-compose up -d ``` Access at http://localhost:8080 ### Manual ```bash cd backend pip install -r requirements.txt uvicorn app.main:app --host 0.0.0.0 --port 8000 ``` ## API Endpoints ### Projects - `GET /api/projects` - List all projects - `POST /api/projects` - Create project - `GET /api/projects/{id}` - Get project - `DELETE /api/projects/{id}` - Delete project ### Tickets - `GET /api/tickets` - List tickets (filter by `project_id`, `status`) - `POST /api/tickets` - Create ticket - `GET /api/tickets/{id}` - Get ticket - `GET /api/tickets/key/{key}` - Get ticket by key (e.g., PROJ-123) - `PATCH /api/tickets/{id}` - Update ticket - `DELETE /api/tickets/{id}` - Delete ticket ### Comments - `GET /api/tickets/{id}/comments` - List comments - `POST /api/tickets/{id}/comments` - Add comment ### Webhooks - `GET /api/webhooks` - List webhooks - `POST /api/webhooks` - Create webhook - `DELETE /api/webhooks/{id}` - Delete webhook - `PATCH /api/webhooks/{id}/toggle` - Enable/disable webhook ## Webhook Events When configured, TicketHub sends POST requests to your webhook URL: ```json { "event": "ticket.created", "timestamp": "2026-02-18T12:00:00Z", "data": { "id": 1, "key": "PROJ-1", "title": "Issue title", "description": "...", "status": "open", "priority": "medium" } } ``` Events: `ticket.created`, `ticket.updated`, `comment.added` ## Integration with JIRA AI Fixer Configure webhook URL in your project pointing to JIRA AI Fixer: ``` https://jira-fixer.example.com/api/webhook/tickethub ``` ## License MIT