< 80ms
Scan RecognitionNative hardware-accelerated barcode decoding via mobile_scanner
Native hardware-accelerated barcode decoding via mobile_scanner
Atomic scan processing guard prevents duplicate ticket redeems
Camera live viewfinder & photo gallery barcode decoding
Instant in-memory ticket status update upon successful API redemption
Lossless on-the-fly QR generation via qr_flutter with custom sizing
System-level theme switching with ValueNotifier and Material 3 design
Manual guest list checking at conferences, expos, and private events causes bottleneck queues, human check-in errors, and paper ticket fraud. The goal of QR Guest Manager was to develop a fast, reliable, and user-friendly mobile application built in Flutter to digitize the entire event check-in lifecycle.
Core Mandate: Build a responsive mobile client combining high-speed camera QR code scanning, instant gallery photo barcode extraction, on-the-fly vector QR generation, and real-time cloud ticket redemption status tracking.
Explore the high-performance event check-in experience — featuring live hardware camera barcode detection, gallery image barcode decoding, dynamic QR vector rendering, and real-time ticket redemption status reconciliation.
Comprehensive application flyer presenting QR Guest Manager's multi-device mobile architecture, live camera viewfinder scanning overlay, guest list administration, and account registration flows.
Engineered for rapid, fraud-proof attendee processing — uniting native camera hardware drivers, computer vision barcode parsing, vector QR code rendering, and secure cloud identity governance.
Integrates mobile_scanner with native camera sensor streams, detecting standard and inverted QR codes in sub-80ms with customized reticle boundary feedback.
Empowers event operators to scan physical QR codes directly through the live camera viewfinder or extract QR payloads from saved smartphone photos via ImagePicker.
Generates high-resolution vector QR graphics instantaneously on-device using qr_flutter, enabling instant ticket sharing and preview without external API dependencies.
Backed by Dio HTTP client connecting to a Vercel-hosted REST API with automated double-scan prevention, humanized error mapping, and optimistic local state updates.
Each module is engineered with robust transactional boundaries, modular isolation, and comprehensive audit trails.
Real-time camera feed scanning QR codes instantly with native hardware acceleration and custom viewfinder overlays.
From camera frame acquisition to REST API validation and local state synchronization — every check-in follows a strict anti-fraud verification pipeline.
MobileScanner captures QR code data from live camera stream, gallery photo analysis, or manual input. Raw barcode value is extracted.
Ticket ID is checked against the active guest roster. If not registered or already marked REDEEMED, the scan is rejected with an immediate warning.
ApiService dispatches POST /scan to the cloud server. Local state updates to REDEEMED with timestamp, and celebration modal is displayed.
Once a ticket is redeemed, its status is immediately locked in memory and recorded on the cloud server. Any subsequent scan of the same barcode displays a warning modal identifying the attendee and preventing duplicate entry.
Built on a clean modular architecture separating Flutter presentation components, native camera scanner controllers, Dio HTTP networking services, and Firebase cloud authentication.
Two-tab event management dashboard (Guest List & Scan/Redeem), custom input fields, theme toggling, and dialog confirmations.
Native camera barcode scanning engine and static gallery image barcode analyzer delivering sub-80ms decode speed.
HTTP client managing API calls, query serialization, timeout handling, and payload mapping to immutable Ticket models.
Mathematical QR matrix generator creating lossless vector QR graphics with automatic error correction.
Hosted REST API at event-ticketing-ruddy.vercel.app managing /tickets and /scan endpoints.
Stateless token-based authentication engine handling event staff sign-in, account creation, and session persistence.
A modern engineering stack combining high-throughput user interfaces, modular backend architecture, and resilient data layers.
Clear boundary separation between system components, paired with modular schemas and structured repositories.
Stores ticket records including id (string), name (string), status (UNREDEEMED / REDEEMED), createdAt (DateTime), and redeemedAt (optional DateTime).
POST /tickets accepts { name: string } to register a new attendee and generate a unique cloud ticket entry.
POST /scan accepts { qr_data: string } to validate ticket authenticity and mark status as redeemed.
Stateless identity credentials for event operators including uid, email, and displayName.
Security architecture combining stateless Firebase Authentication tokens, client-side duplicate scan locks, and server-side redemption validation.
Each ticket can only be redeemed once. The application intercepts scans against tickets already marked REDEEMED, blocking entry and preventing ticket sharing.
An internal processing lock (_isProcessingScan) prevents rapid-fire duplicate scanning from accidental trigger events or sensor bounce.
Camera hardware drivers are engaged only after explicit OS permission approval, and camera controllers are cleanly disposed of upon screen exit.
Staff sessions are governed by secure Firebase Authentication tokens, isolating ticketing administration from unauthorized access.
How critical technical bottlenecks were overcome and verified under real production conditions.
Preventing accidental double-scans and race conditions when a camera sensor detects the same QR barcode in multiple consecutive frames. Solved by implementing an atomic boolean processing lock (_isProcessingScan) combined with a mandatory cooldown delay.
Balancing real-time camera viewfinder performance while rendering high-density attendee lists. Solved by separating scanner and list logic into dedicated TabBarView panels and disposing of camera controllers cleanly when not in focus.
Providing seamless dark mode support for nighttime event environments. Built a system-wide theme switching engine using ValueNotifier<ThemeMode> and custom Material 3 color schemes (Crimson #9E3B3B with pitch-black #121212 surfaces).