Build the pages for "Support tickets". The backend runs on Typestate and answers these web endpoints:
POST /tickets: Your support form posts here. Who may call: anyone.
POST /tickets/answer: A customer answers on a ticket from their own link. Who may call: anyone.
GET /tickets/mine: A customer reads their tickets from their own link. Who may call: anyone.
POST /tickets/reply: Only your team, with your key, answers a ticket. Who may call: you, with your key.
POST /tickets/update: Only your team, with your key, assigns a ticket or changes its state. Who may call: you, with your key.
GET /tickets: Only your team, with your key, reads the tickets. Who may call: you, with your key.
People sign up at POST /auth/signup and sign in at POST /auth/login, which answers a token. Send it as Authorization: Bearer <token>.
A refused call answers a sentence that can be shown to the person as it is.