Repository navigation
feat(check-in): express guest list with one-tap check-in, gated to the event's team - #556
Merged
Merged
Conversation
…o the event's team Check-in is now allowed for the event team's Owner, Admin, Manager and Frontdesk members only. It used to need the site-wide Frontdesk Manager role plus read access, which let a Frontdesk member of one team check in another team's tickets, and kept Managers out. The check-in page lists the event's guests with search and tabs for everyone, checked in and not checked in. A guest opens a dialog with their ticket tier and a check-in button. Scanning still validates the ticket first, then opens the same dialog and returns to the camera. The event picker lists only the events the user can check in for.
Contributor
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
Contributor
|
✅ UI Demo Check — a screenshot or demo is attached. |
Contributor
Backend test coverage: 91%Commit 5d3801e. Test modules are excluded. Coverage by file
91 empty files skipped. |
…hic heading Each guest row carries its own Check in button, so most arrivals take a single tap. Tapping a name opens the guest's ticket: a dialog on desktop, a bottom sheet on phones. A line under the tabs says what each control does. The page opens on a "Check-in" display heading set in League Gothic, now self-hosted beside Inter, with the event's name, date and venue under it. The underline tabs span the full column, and the "All events" link is gone.
Contributor
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
harshtandiya
marked this pull request as draft
October 12, 2026 03:48
A "Check in guests" tile sits above Download CSV and opens the event's check-in page in a new tab, so the desk can run check-in beside the dashboard.
The page and the event picker set their own narrower width and padding inside the layout's, so content sat indented from the navbar. Both now use the layout's column. The event name takes the display type, with "Check-in" as a small label above it. Scan is a size up, the tabs use the subtle variant, and a checked-in row uses a stronger green with a solid check mark that fades in when a guest is checked in.
A mis-tapped check-in can now be reversed. The guest dialog shows a checked-in guest as a green status block with a quiet "Undo check-in" button under it, replacing the disabled button that read too faint. The new undo_checkin endpoint cancels today's Event Check In rather than deleting it, so the record stays. The already-checked-in guard now looks only at submitted check-ins, so a guest whose check-in was undone can be checked in again.
harshtandiya
marked this pull request as ready for review
October 12, 2026 04:29
Contributor
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
…arch - Scan opens the camera inline with a shutter reveal; a grey cover explains permission prompts, camera start-up and blocked cameras. The scanner pauses while a scanned guest is open instead of closing and reopening. - Event header, scanner and search stay pinned on a glass panel while the list scrolls. - Search shows a skeleton on first load, "Searching" from the first keystroke, and keeps the current rows dimmed until results replace them. No-results state offers Clear search. - Guests can be found by ticket ID; the guest list payload carries the event's public route. - Slim site header on the check-in page (logo, theme, account), with links back to the event dashboard and out to the event page. - Guest dialog: ticket type stacks above payment, add-ons get a label and wrap in full, long names and emails wrap. - Rows, header and tabs wrap or scroll at narrow widths and large text; white text on green buttons in dark mode; formatted tab counts. - Button check-ins play the scanner's success beep.
Contributor
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
…icon The guest page's check-in tile becomes a ghost button beside Download CSV, and both it and the check-in page's Scan button use the scan-barcode icon.
Contributor
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
Contributor
|
Did we also refactor the scanner itself? 👀 |
Collaborator
Author
|
@NagariaHussain not the mechanism, just UI
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

What changed
Frontdesk Managerrole plus team read access. A Frontdesk member of one team could check in another team's tickets, and Managers couldn't check in at all./check-in/<event>is rebuilt:Event Check Inrather than deleting it, and the guest can be checked in again.get_checkin_events,get_checkin_guestsandundo_checkin(POST).get_checkin_guestsreusesevent_guests, which now also returnschecked_in_atper guest and achecked_incount.checkin_ticketis POST-only.Demo
Testing
test_checkin.pycover: