Skip to content

feat: Story 020 — Check-in with QR scanning and real-time counter#52

Merged
iagocavalcante merged 6 commits intomainfrom
feat/story-020-check-in
Mar 23, 2026
Merged

feat: Story 020 — Check-in with QR scanning and real-time counter#52
iagocavalcante merged 6 commits intomainfrom
feat/story-020-check-in

Conversation

@iagocavalcante
Copy link
Copy Markdown
Contributor

Summary

Implements Story 020: Check-in — QR code scanning and attendee search for event entry validation.

  • QR code scanning via browser camera (html5-qrcode JS hook)
  • Name/email search with debounced input for manual check-in
  • Ticket validation — invalid ticket, wrong event, cancelled order, duplicate check-in
  • Annul check-in with confirmation dialog
  • Real-time attendance counter via PubSub (updates within 2 seconds)
  • QR codes on tickets — rendered on order confirmation page for confirmed orders
  • Concurrent check-in protection via unique partial DB index
  • Admin navigation — check-in card on event show page

Files changed (14 files, ~870 lines)

Area Files
Database Migration: check_ins table + multi_entry on events
Schema CheckIn schema, Event multi_entry field
Context Pretex.CheckIns — check-in, annul, search, count, PubSub
LiveView CheckInLive.Index — scanner + search + live counter
JS QRScanner hook with html5-qrcode
UI QR codes on confirmation page, check-in card on event show
Tests 11 tests covering all check-in scenarios

Closes #12

Test plan

  • All 1487 tests pass (0 failures)
  • Compilation clean with --warnings-as-errors
  • Manual: Navigate to event admin → Check-in card visible
  • Manual: Check-in page loads with counter at 0
  • Manual: Camera scanner detects QR codes
  • Manual: Search finds attendees by name/email
  • Manual: Check-in via search updates counter
  • Manual: Annul reverses check-in
  • Manual: Confirmation page shows QR codes for confirmed tickets

@iagocavalcante iagocavalcante merged commit c830e0b into main Mar 23, 2026
1 check passed
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.

Story 020: Check-in

1 participant