README: add walkthrough GIF, gallery and architecture diagram; add demo seed and capture scripts
Lint / PHP (phpcs PSR-12) (push) Failing after 31s
Lint / JS (eslint) (push) Successful in 8s
Lint / PHP requirements (version + extensions) (push) Successful in 22s
Lint / Deploy (push) Skipped
Security / PHP Security (semgrep) (push) Successful in 1m17s
Lint / Notify on failure (push) Successful in 8s

This commit is contained in:
2026-10-03 01:02:55 -04:00
parent 13a0612f23
commit 051ef6c915
20 changed files with 227 additions and 0 deletions
+56
View File
@@ -8,6 +8,62 @@ A feature-rich PHP-based ticketing system designed for tracking and managing dat
**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
![Tinker Tickets walkthrough: dashboard, kanban, ticket detail with SLA timer, comments, dependencies, activity timeline, command palette and workflow designer](docs/img/demo.gif)
## 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<br/>SMART, Ceph, temps"] -->|Bearer API| tt
gd["GANDALF<br/>network regressions"] -->|Bearer API| tt
mcp["MCP server<br/>Claude Code / agents (OAuth)"] --> tt
ui["Web UI<br/>people"] --> tt
tt{{"Tinker Tickets<br/>PHP + MariaDB"}} -->|webhook| mx["Matrix notifications"]
tt --> audit[("Audit log<br/>timeline per ticket")]
```
## Gallery
**Dashboard**: live stat cards, priority and status breakdowns, team workload and a filterable queue.
![Dashboard](docs/img/dashboard.png)
**Kanban view** with per-column counts and priority-coloured cards:
![Kanban board](docs/img/kanban.png)
**Ticket detail** with a live P1/P2 SLA timer, full metadata and a tabbed workspace:
![Ticket with SLA banner](docs/img/ticket-sla.png)
| Comments (Markdown, @mentions) | Dependencies (blocks / relates to) |
|---|---|
| ![Comments](docs/img/ticket-comments.png) | ![Dependencies](docs/img/ticket-dependencies.png) |
**Activity timeline**, derived from the audit log (creation, assignment, status changes, comments):
![Activity timeline](docs/img/ticket-activity.png)
**Command palette** (`Ctrl+K`) jumps to pages, saved filters and recently viewed tickets:
![Command palette](docs/img/command-palette.png)
**Admin tools:**
| Workflow designer | API keys (scoped, revocable) |
|---|---|
| ![Workflow designer](docs/img/admin-workflow.png) | ![API keys](docs/img/admin-api-keys.png) |
| **Audit log** | **Recurring tickets** |
| ![Audit log](docs/img/admin-audit-log.png) | ![Recurring tickets](docs/img/admin-recurring.png) |
**Light theme** (the whole app follows the [web_template](https://code.lotusguild.org/LotusGuild/web_template) theme toggle):
![Dashboard, light theme](docs/img/dashboard-light.png)
<sub>Screenshots are generated with Playwright against a throwaway local instance seeded with fictional demo data (`scripts/demo/`).</sub>
## Styling & Layout
Tinker Tickets uses the **LotusGuild Terminal Design System**. For all styling, component, and layout documentation see: