QR Guest Manager — Rafif Sava Adyvka Pratama
2024Real-Time Event Check-In, Dynamic QR Code Engine & Mobile Ticketing System

QR Guest Manager.

A high-throughput cross-platform event ticketing and guest check-in mobile application built with Flutter, Firebase Authentication, and Dio REST API integration. Features real-time camera QR scanning via mobile_scanner, on-the-fly QR code vector generation with qr_flutter, photo gallery barcode analysis, dual-mode light/dark theme engine, and atomic ticket status reconciliation.

Role
Mobile Application Engineer
Platform
Android & iOS
Timeline
2024
Architecture
Service-Oriented Client
QR Engine
MobileScanner & Vector QR
Backend API
Vercel Event Ticketing API
FlutterDartFirebaseMobile ScannerDioQR Flutter

< 80ms

Scan Recognition

Native hardware-accelerated barcode decoding via mobile_scanner

100%

Duplicate Prevention

Atomic scan processing guard prevents duplicate ticket redeems

Dual-Channel

Scanning Ingestion

Camera live viewfinder & photo gallery barcode decoding

0ms

Local State Latency

Instant in-memory ticket status update upon successful API redemption

Vector

QR Generation

Lossless on-the-fly QR generation via qr_flutter with custom sizing

Dual Theme

Light & Dark Mode

System-level theme switching with ValueNotifier and Material 3 design

The Operational Mandate

Context & High-Stakes Constraints

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.

02MOBILE EVENT TICKETING & SCANNER INTERFACES

The QR Guest Manager Experience in Action

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.

🔒app.qrscanner.mobile
Official Mobile Showcase & Multi-Screen Suite
01 / 04Brand Presentation

Official Mobile Showcase & Multi-Screen Suite

Comprehensive application flyer presenting QR Guest Manager's multi-device mobile architecture, live camera viewfinder scanning overlay, guest list administration, and account registration flows.

◆ Flutter 3.x Cross-Platform Client◆ Hardware Camera & Barcode Decoder◆ Fullstack RESTful Ticket API
03CAPABILITIES & WORKFLOW

Core Capabilities & Event Check-In Workflow

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.

Real-Time Hardware Barcode Vision

Integrates mobile_scanner with native camera sensor streams, detecting standard and inverted QR codes in sub-80ms with customized reticle boundary feedback.

Dual Ingestion: Camera & Photo Gallery

Empowers event operators to scan physical QR codes directly through the live camera viewfinder or extract QR payloads from saved smartphone photos via ImagePicker.

On-The-Fly Vector QR Code Generation

Generates high-resolution vector QR graphics instantaneously on-device using qr_flutter, enabling instant ticket sharing and preview without external API dependencies.

Resilient Networking & Duplicate Lock

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.

8 Mission-Critical Modules

Each module is engineered with robust transactional boundaries, modular isolation, and comprehensive audit trails.

MODULE // 01 OF 08Edge Vision & Camera HAL

High-Speed Hardware Camera QR Scanner & Target Reticle

Real-time camera feed scanning QR codes instantly with native hardware acceleration and custom viewfinder overlays.

  • Native MobileScanner Engine: Uses MobileScannerController to stream video buffers directly to underlying C++ barcode detection routines.
  • Custom Target Reticle: High-contrast 200x200 rounded scanning box (#9E3B3B) providing intuitive visual alignment for staff.
  • Flashlight & Camera Flip: Hardware controls allowing operators to toggle the device torch in low-light venues and switch between front and rear lenses.
  • Manual ID Fallback: Built-in text field with send button for attendees with damaged or unreadable physical badges.

Scan Verification & Ticket Redemption Lifecycle

From camera frame acquisition to REST API validation and local state synchronization — every check-in follows a strict anti-fraud verification pipeline.

Stage 01Ingestion & Capture

Barcode Detection & Payload Extraction

MobileScanner captures QR code data from live camera stream, gallery photo analysis, or manual input. Raw barcode value is extracted.

Payload Ingestion & Verification Lock Engaged
Stage 02Registry Verification

Local Ticket Registry & Prior Redemption Check

Ticket ID is checked against the active guest roster. If not registered or already marked REDEEMED, the scan is rejected with an immediate warning.

Status Verification → Pass / Reject Intercept
Stage 03Cloud Handshake

API Status Mutation & Attendance Confirmation

ApiService dispatches POST /scan to the cloud server. Local state updates to REDEEMED with timestamp, and celebration modal is displayed.

POST /scan → 200 OK → UI State Stamped

Strict Single-Redemption Anti-Passback Guarantee

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.

04SYSTEM ANATOMY & ARCHITECTURE

Service-Oriented Client & RESTful Microservices Architecture

Built on a clean modular architecture separating Flutter presentation components, native camera scanner controllers, Dio HTTP networking services, and Firebase cloud authentication.

Pattern: Service-Oriented Flutter Client + RESTful Microservices + Firebase BaaS
Protocol: Native Camera HAL + HTTPS JSON (Dio) + Firebase Secure Token

Presentation Layer (Flutter 3.x)

Dart ^3.8.1 + Material 3

Two-tab event management dashboard (Guest List & Scan/Redeem), custom input fields, theme toggling, and dialog confirmations.

Vision & Scanner Layer

mobile_scanner + image_picker

Native camera barcode scanning engine and static gallery image barcode analyzer delivering sub-80ms decode speed.

Networking & Data Service

Dio 5.9 (ApiService)

HTTP client managing API calls, query serialization, timeout handling, and payload mapping to immutable Ticket models.

Vector Generation Engine

qr_flutter (QrImageView)

Mathematical QR matrix generator creating lossless vector QR graphics with automatic error correction.

Cloud REST API Backend

Vercel Serverless Microservice

Hosted REST API at event-ticketing-ruddy.vercel.app managing /tickets and /scan endpoints.

Identity & Session Guard

Firebase Authentication

Stateless token-based authentication engine handling event staff sign-in, account creation, and session persistence.

Curated Technology Stack

A modern engineering stack combining high-throughput user interfaces, modular backend architecture, and resilient data layers.

Mobile Application & UI

Flutter 3.xCross-Platform Mobile Framework
Dart ^3.8.1Strongly Typed Client Programming Language
Material 3Modern Android & iOS Design System
ValueNotifierReactive Theme State Management
Intl 0.20Date & Timestamp Formatting
Cupertino IconsiOS Style Iconography

Scanner & Computer Vision

mobile_scanner 7.1Native Hardware Camera Barcode ML Engine
qr_flutter 4.1Vector QR Code Generator & Renderer
image_picker 1.2Gallery Photo Selection for Barcode Analysis

Networking & Cloud Services

Dio 5.9High-Performance HTTP Client for REST APIs
Vercel REST APIServerless Event Ticketing Cloud Backend
Firebase Auth 6.1Event Staff Identity & Session Management
Firebase Core 4.4Flutter Firebase Platform Bridge

DevOps & Code Quality

Flutter Lints 5.0Static Code Analysis & Linting Rules
Flutter TestUnit & Widget Testing Framework
Git & GitHubSource Control & Collaborative Versioning

Codebase Structure & Data Models

Clear boundary separation between system components, paired with modular schemas and structured repositories.

📁 lib/views/ (Core Application Screens)
├──home_screen.dart — Two-tab interface (Guest List & Camera Scanner), QR modal, and redeem logic
├──add_guest_screen.dart — Attendee registration form and instant vector QR generator
├──splash_screen.dart — Animated startup splash screen with brand iconography

Database Entities & Schema Models

Data Model: Ticket

Stores ticket records including id (string), name (string), status (UNREDEEMED / REDEEMED), createdAt (DateTime), and redeemedAt (optional DateTime).

REST API Payload: Add Ticket

POST /tickets accepts { name: string } to register a new attendee and generate a unique cloud ticket entry.

REST API Payload: Scan Ticket

POST /scan accepts { qr_data: string } to validate ticket authenticity and mark status as redeemed.

Firebase Auth: User Entity

Stateless identity credentials for event operators including uid, email, and displayName.

05SECURITY, API & PRODUCTION IMPACT

Hardened Perimeter & Ticket Anti-Fraud Governance

Security architecture combining stateless Firebase Authentication tokens, client-side duplicate scan locks, and server-side redemption validation.

API Endpoints & Routing Architecture

Authentication (Firebase Auth)

POSTsignInWithEmailAndPasswordStaff authentication with user-friendly error translation
POSTcreateUserWithEmailAndPasswordStaff registration with displayName update
POSTsignOutSession termination and navigation reset

Event Ticketing API (Vercel REST API via Dio)

GET/ticketsFetches full guest roster with redemption statuses and timestamps
POST/ticketsCreates new ticket record with attendee name
DELETE/tickets?id={id}Removes ticket record from the cloud database
POST/scanValidates and redeems ticket using scanned QR payload

Local Hardware & Barcode Vision

LOCALMobileScanner.onDetectHigh-speed camera barcode capture stream
LOCALMobileScannerController.analyzeImage()Static gallery image barcode decoding
LOCALQrImageView(data: ticket.id)Lossless on-the-fly vector QR rendering

Enterprise Security & Governance Standards

Single-Redemption Anti-Passback Guard

Each ticket can only be redeemed once. The application intercepts scans against tickets already marked REDEEMED, blocking entry and preventing ticket sharing.

Double-Scan Race Condition Prevention

An internal processing lock (_isProcessingScan) prevents rapid-fire duplicate scanning from accidental trigger events or sensor bounce.

Camera Sandboxing & Runtime Permission

Camera hardware drivers are engaged only after explicit OS permission approval, and camera controllers are cleanly disposed of upon screen exit.

Stateless Token Security

Staff sessions are governed by secure Firebase Authentication tokens, isolating ticketing administration from unauthorized access.

Engineering Challenges & Production Results

How critical technical bottlenecks were overcome and verified under real production conditions.

Challenge // 01

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.

Challenge // 02

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.

Challenge // 03

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).

< 80msHardware Barcode Detection
0msLocal UI Mutation Latency
100%Anti-Duplicate Redemption
What's next

Let's build something.

Recruiting, contracting, or just curious — the inbox is open.

Rafif Sava Adyvka Pratama