Skip to content

feat: add admin event detail with attendee show-up predictions - #49

Open
DJCrossman wants to merge 1 commit into
feat/admin-03-events-listfrom
feat/admin-04-event-detail
Open

feat: add admin event detail with attendee show-up predictions#49
DJCrossman wants to merge 1 commit into
feat/admin-03-events-listfrom
feat/admin-04-event-detail

Conversation

@DJCrossman

Copy link
Copy Markdown
Contributor

Stack 4/4 — stacked on #48 (events list). Completes the admin dashboard.

Summary

  • /admin/events/[id]: summary header (event image/name/date/venue + stat tiles: Registered, Checked in, Expected turnout with "based on N past events · base rate B%", Capacity with progress) and the attendee table.
  • Table columns: Name, Email, Ticket, Status badge, live Checked-in column (60s refetchInterval so check-ins appear during the event), and Show-up chance — tiered badge (≥75% green / 50–74% amber / <50% red) plus each person's C/R past events; first-timers get a blue New badge at the base rate; checked-in people show 100%; cancelled/refunded rows are dimmed with no prediction. Client-side name/email filter.
  • Server prefetch via getAttendeeReport under the shared attendeeReportQueryKey; unknown event ids → notFound(); non-404 prefetch failures fall through to the client hook's retry/error state.
  • New components/ui/table.tsx primitives hand-rolled in the existing trimmed shadcn style (components.json is stale, the CLI can't be used).

Test plan

  • bun run lint / bun run build pass
  • Prediction math verified against live Eventbrite data in feat: add Eventbrite admin data layer and show-up prediction API #47 (base rate 61%, spot-checked probabilities)
  • As admin: detail page totals match Eventbrite; regular shows high %; first-timer shows New; check-in on Eventbrite reflects within ~60s
  • Logged out: /admin/events/123 redirects to login; /api/admin/events/123/attendees → 401

🤖 Generated with Claude Code

Adds /admin/events/[id]: event summary header (Regina-zone date, venue,
stat tiles for registered / checked in / expected turnout with the
history basis / capacity progress) and the attendee table with name,
email, ticket type, status, live checked-in column (60s refetch), and a
tiered show-up-chance badge (>=75% green, 50-74% amber, <50% red) with
each person's past checkins/registrations; first-timers get a New badge
at the community base rate. Cancelled/refunded rows are dimmed with no
prediction. Client-side name/email filter.

The page prefetches getAttendeeReport server-side under the shared
query key and 404s unknown event ids. New hand-rolled table primitives
in components/ui/table.tsx follow the existing trimmed shadcn style
(the shadcn CLI is unusable here: components.json points at a
nonexistent tailwind.config.ts).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
website Ready Ready Preview Aug 21, 2026 5:18pm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant