tickethub/README.md

89 lines
2.0 KiB
Markdown

# 🎫 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