# Tinker Tickets
[](https://code.lotusguild.org/LotusGuild/tinker_tickets/actions?workflow=lint.yml)
[](https://code.lotusguild.org/LotusGuild/tinker_tickets/actions?workflow=security.yml)
A feature-rich PHP-based ticketing system designed for tracking and managing data center infrastructure issues with enterprise-grade workflow management and a retro terminal aesthetic.
**Documentation**: [Wiki](https://wiki.lotusguild.org/en/Services/service-tinker-tickets)
**Design System**: [web_template](https://code.lotusguild.org/LotusGuild/web_template) — shared CSS, JS, and layout patterns for all LotusGuild apps

## Why this exists
Running a six-node Proxmox/Ceph cluster generates a steady stream of small problems: a drive with SMART warnings, a link that flaps, a certificate about to expire. Off-the-shelf helpdesks are heavyweight for that, and a plain todo list loses the history. Tinker Tickets is a small, opinionated ticketing system built for exactly this: tickets are created **automatically by monitoring** (and by hand), deduplicated so a repeating alert updates one ticket instead of flooding the queue, and every change is audited.
```mermaid
flowchart LR
hw["hwmonDaemon
SMART, Ceph, temps"] -->|Bearer API| tt
gd["GANDALF
network regressions"] -->|Bearer API| tt
mcp["MCP server
Claude Code / agents (OAuth)"] --> tt
ui["Web UI
people"] --> tt
tt{{"Tinker Tickets
PHP + MariaDB"}} -->|webhook| mx["Matrix notifications"]
tt --> audit[("Audit log
timeline per ticket")]
```
## Gallery
**Dashboard**: live stat cards, priority and status breakdowns, team workload and a filterable queue.

**Kanban view** with per-column counts and priority-coloured cards:

**Ticket detail** with a live P1/P2 SLA timer, full metadata and a tabbed workspace:

| Comments (Markdown, @mentions) | Dependencies (blocks / relates to) |
|---|---|
|  |  |
**Activity timeline**, derived from the audit log (creation, assignment, status changes, comments):

**Command palette** (`Ctrl+K`) jumps to pages, saved filters and recently viewed tickets:

**Admin tools:**
| Workflow designer | API keys (scoped, revocable) |
|---|---|
|  |  |
| **Audit log** | **Recurring tickets** |
|  |  |
**Light theme** (the whole app follows the [web_template](https://code.lotusguild.org/LotusGuild/web_template) theme toggle):

Screenshots are generated with Playwright against a throwaway local instance seeded with fictional demo data (`scripts/demo/`).
## Styling & Layout
Tinker Tickets uses the **LotusGuild Terminal Design System**. For all styling, component, and layout documentation see:
- [`web_template/README.md`](https://code.lotusguild.org/LotusGuild/web_template/src/branch/main/README.md) — full component reference, CSS variables, JS API
- [`web_template/base.css`](https://code.lotusguild.org/LotusGuild/web_template/src/branch/main/base.css) — unified CSS (`.lt-*` classes)
- [`web_template/base.js`](https://code.lotusguild.org/LotusGuild/web_template/src/branch/main/base.js) — `window.lt` utilities (toast, modal, CSRF, fetch helpers)
- [`web_template/php/layout.php`](https://code.lotusguild.org/LotusGuild/web_template/src/branch/main/php/layout.php) — PHP base layout template
**Key conventions:**
- All `.lt-*` CSS classes come from `base.css` — do not duplicate them in `assets/css/`
- All `lt.*` JS utilities come from `base.js` — use `lt.toast`, `lt.modal`, `lt.api`, etc.
- CSP nonces: every `