Add /crush33 comp-ticket portal + ticket-type badge on scan
Some checks failed
Build Android APK / build-apk (push) Failing after 1h11m4s

Portal (/crush33): password-gated page (PORTAL_PASSWORD) for admins to create
entry-only tickets from just name + email, with a category
(Guest/Worker/Performer/Volunteer/Speaker). Creates a 1-admission ticket, emails
the QR, and shows the QR on-screen. New Ticket Type column.

Scanner: shows a prominent TYPE badge (🎭 PERFORMER, 🛠️ WORKER, …) on the
confirm + success screens and in admin, so staff can see it's a special ticket.
Added Worker + Performer personas to /test.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Hank 2026-07-13 03:30:08 +00:00
parent b7c77afe02
commit 4b78c82b35
9 changed files with 230 additions and 0 deletions

View file

@ -24,6 +24,7 @@ export const COL = {
utv: "UTV",
iceAccess: "Ice Access",
paymentMethod: "Payment Method",
ticketType: "Ticket Type", // "" for regular; Guest/Worker/Performer/Volunteer/Speaker for portal comps
// Columns this system manages:
code: "Ticket Code",
@ -94,6 +95,7 @@ export interface TicketView {
code: string;
name: string;
email: string;
ticketType: string; // "" for regular; Guest/Worker/... for special tickets
total: number;
redeemed: number;
remaining: number;
@ -121,6 +123,7 @@ export function toView(rec: NocoRecord): TicketView {
code: String(rec[COL.code] ?? ""),
name: String(rec[COL.name] ?? ""),
email: String(rec[COL.email] ?? ""),
ticketType: String(rec[COL.ticketType] ?? ""),
total,
redeemed,
remaining: Math.max(0, total - redeemed),