A whole app, from the ticket to the demo row.

Helpdesk

This is the app in A complete app. One entity, its workflow, a dashboard, the ticket page, and a demo row.

app helpdesk "Helpdesk" {
  tagline  "Tickets from new to resolved."
  category "Support"
  icon     inbox
  tier     free
}

entity Ticket "Ticket" plural "Tickets" {
  subject:  text required label "Subject"
  reporter: text pii
  priority: enum low, normal, high
  owner:    ref User on delete nullify

  workflow {
    initial New
    states New, Triage, InProgress, Resolved
    terminal Resolved

    triage:  New -> Triage
    start:   Triage -> InProgress requires owner
    note:    InProgress -> InProgress
    resolve: InProgress -> Resolved requires resolution
  }
}

query my_open(who: text) = select subject, priority from Ticket where owner == who sort priority desc limit 20

page dashboard "Dashboard" list {
  board Ticket summary [subject, priority, owner] label "Open tickets"
  stat "Unassigned" = count(Ticket where owner == null)
  list from my_open(who: me) columns [subject, priority]
}

page ticket-detail "Ticket" detail Ticket {
  jobs label "Workflow" summary [subject, priority, owner]
  section "Details" {
    field subject
    field reporter
  }
  action "Resolve" event resolve confirm "Resolve this ticket?"
}

nav [dashboard, ticket-detail]

home dashboard

seed demo {
  Ticket acme { subject: "Printer offline", priority: "high" } state Triage
}