Ticket tracker

July 24, 2026 · View on GitHub

A lightweight ticket tracker: capture work as tickets, group them into categories, tag and cross-link them, and move each ticket through a simple lifecycle from open to closed. This description, the per-status explanations, and the transition help below are surfaced by the generated documentation (rela docs).

This handbook is authored in Markdown; the tables, diagrams, and screenshot below are resolved from the project's metamodel.yaml and acl.yaml by rela-docs build, so they can never drift from the schema. It doubles as a worked example of the rela-docs generator — see the guide.

Tickets

A ticket records a piece of work. Every ticket carries these fields:

FieldTypeRequired
titlestringyes
statusticket_statusyes
prioritypriorityyes
reporterstringyes

Status

A ticket moves through the lifecycle below.

stateDiagram-v2
    state "open" as s0
    state "in-progress" as s1
    state "resolved" as s2
    state "closed" as s3
    [*] --> s0
    s0 --> s1: Start work
    s1 --> s2: Mark resolved
    s2 --> s3: Close
    s2 --> s1: Reopen

Each status means:

ValueMeaning
open (default)A newly filed ticket that no one has started yet.
In progress (in-progress)Someone is actively working on the ticket.
resolvedThe work is done and awaiting confirmation before it is closed.
closedThe ticket is finished; no further work is expected.

How a ticket connects to the rest of the tracker

  • belongs-to → category
  • blocks → ticket
  • tagged → label

The schema neighbourhood, two hops out:

graph LR
    n0["ticket"]
    n1["category"]
    n2["label"]
    n0 -->|"belongs-to"| n1
    n0 -->|"blocks"| n0
    n0 -->|"tagged"| n2

A worked example

ticket-1

  • title: Login page 500s under load
  • status: in-progress

There is 1 seeded ticket in this example.

Who can do what

The access model comes straight from acl.yaml:

TypeVerbeditorviewer
ticketcreate
ticketread
ticketupdate
ticketdelete

The edit form

This is the ticket edit form as an editor sees it, with the two lifecycle-driving fields highlighted:

The ticket edit form, with the status and priority fields highlighted