Overview
GatePass provides a secure, blockchain-powered check-in system that validates tickets via QR codes and automatically mints Proof of Attendance (POA) NFTs to attendees. This guide covers the complete check-in process for event organizers.Check-In Methods
Mobile Scanner App
Scan QR codes using the GatePass mobile scanner (recommended)
Smart Contract
Self-check-in via blockchain interaction
Manual Entry
Manually enter ticket IDs for offline validation
Assisted Check-In
Staff can check in attendees using organizer permissions
Mobile Scanner Setup
Access Scanner Interface
Navigate to Ticket Scanner from your organizer dashboard or go directly to
/scanner.Enable Camera
Click Start Scanning to activate your device camera. Grant camera permissions if prompted.
The scanner uses the
html5-qrcode library for reliable QR code detection.QR Code Validation
Ticket QR codes contain encrypted data validated through multiple security layers:QR Code Format
QR Code Structure
Validation Process
Ticket Verification
Security Features
Cryptographic Signature
Cryptographic Signature
Each QR code includes an HMAC-SHA256 signature that validates:
- Ticket authenticity
- Data integrity
- Preventing ticket forgery
Signature Generation
Blockchain Verification
Blockchain Verification
For NFT tickets, the system verifies:
- Token ownership via
ownerOf(tokenId) - Ticket validity via
isTicketValid(tokenId) - Token existence on the blockchain
Anti-Replay Protection
Anti-Replay Protection
Used tickets are tracked to prevent reuse:
- In-memory cache during event
- Database persistence
- Blockchain state (
ticketUsedmapping)
Time-Based Validation
Time-Based Validation
Tickets are validated against event timing:
- Can’t check in before event start
- Optional check-in window restrictions
- Timezone-aware validation
Check-In via Smart Contract
Attendees can self-check-in by calling the contract:Self Check-In
checkIn() Function
Organizer-Assisted Check-In
Organizers can check in attendees on their behalf:organizerCheckIn() Function
Proof of Attendance (POA) Minting
After successful check-in, a POA NFT is automatically minted:POA Contract
ProofOfAttendance.sol
POA Properties
POAs are non-transferable (soulbound) - they stay with the attendee forever
POAs cannot be burned or deleted once minted
One POA per ticket - duplicate minting is prevented
Includes event name, date, venue, and attendee information
POA Metadata Example
POA Metadata
Check-In Dashboard
Monitor real-time check-in statistics:Live Metrics
Check-In Stats
Recent Scans Display
Scan Result
Offline Mode
The scanner supports offline check-ins with queue-based syncing:Offline Capabilities
Pre-Download Database
Before the event, download the ticket database for offline validation:
Pre-Download
Offline Validation
When offline, validate tickets using:
- Cryptographic signature verification (no internet required)
- Local ticket database
- In-memory used ticket tracking
Signature verification works offline. Blockchain checks happen during sync.
Database Check-In Tracking
Check-ins are recorded in the database:CheckIn Model
Create Check-In Record
API Call
Export Check-In Data
Export check-in records for reporting:CSV Export
Best Practices
Test Scanner Early
Test the scanner before your event starts. Verify camera works and QR codes scan correctly.
Multiple Check-In Points
For large events, set up multiple check-in stations to reduce wait times.
Offline Backup
Pre-download ticket data before the event in case of connectivity issues.
Staff Training
Train your staff on using the scanner and handling edge cases (lost tickets, transfer issues, etc.).
Troubleshooting
QR code won't scan
QR code won't scan
Common solutions:
- Ensure good lighting (use flashlight if needed)
- Increase brightness on attendee’s phone
- Make sure QR code is not blurry or damaged
- Try manual entry if QR fails repeatedly
'Already Used' error for valid ticket
'Already Used' error for valid ticket
This could indicate:
- Ticket was previously checked in (check scan history)
- Duplicate check-in attempt
- Possible ticket duplication fraud
POA minting fails
POA minting fails
POA minting can fail if:
- Insufficient gas (ensure organizer wallet has MATIC)
- Contract not authorized as minter
- Blockchain congestion (wait and retry)
Offline mode not working
Offline mode not working
Ensure:
- Ticket database was pre-downloaded
- Browser has local storage enabled
- Service worker is registered (for PWA)
Next Steps
Analytics Dashboard
View detailed check-in analytics and attendance reports
Creating Events
Learn how to create your own ticketed events