Technology Research

v1.0 Last updated: December 2025

Technology Selection Rationale

The technology stack for QR Igniter was carefully selected based on the following criteria:

  • Maturity: Proven technologies with large communities and long-term support
  • Performance: Ability to handle high-volume QR code generation and scanning
  • Developer Experience: Productive frameworks with good tooling
  • Enterprise Readiness: Security, scalability, and maintainability
  • Compliance: Support for GS1 standards and data protection requirements

Backend Technology Stack

Laravel 12

Laravel 12 Latest LTS

Laravel was selected as the backend framework for its:

  • Elegant MVC architecture with clear separation of concerns
  • Robust ORM (Eloquent) for database operations
  • Built-in authentication and authorization
  • Comprehensive testing support with PHPUnit and Pest
  • Queue system for batch operations
  • Artisan CLI for development productivity

Key Packages

Package Purpose Version
laravel/sanctum API token authentication ^4.0
simplesoftwareio/simple-qrcode QR code generation ^4.2
geoip2/geoip2 IP geolocation (MaxMind) ^3.0
spatie/laravel-permission Role-based access control ^6.0
darkaonline/l5-swagger OpenAPI documentation ^8.5

Filament v4

Filament v4.3.1

Filament was chosen as the admin panel framework for its:

  • Modern TALL stack (Tailwind, Alpine.js, Livewire, Laravel)
  • Rapid development of complex admin interfaces
  • Built-in form components with validation
  • Table components with filtering and sorting
  • Extensible plugin architecture
  • Multi-tenancy support out of the box

Filament Plugins Used

  • filament/forms - Form builder with rich components
  • filament/tables - Data table management
  • filament/widgets - Dashboard widgets
  • filament/actions - Bulk actions and modals

MySQL 8.x

MySQL 8.0+

MySQL was selected for its:

  • Proven reliability and performance at scale
  • Full-text search capabilities
  • JSON column support for flexible data storage
  • InnoDB engine with ACID compliance
  • Excellent Laravel/Eloquent integration
  • Wide hosting availability

Mobile Technology Stack

Flutter 3.x

Flutter 3.x

Flutter was chosen for the mobile application because:

  • Single codebase for iOS and Android
  • High-performance native compilation
  • Rich widget library for consistent UI
  • Excellent camera and QR scanning support
  • Hot reload for rapid development
  • Strong type safety with Dart

Key Packages

Package Purpose Version
flutter_riverpod State management ^2.4
go_router Declarative routing ^13.0
mobile_scanner QR code scanning ^4.0
dio HTTP client ^5.4
flutter_secure_storage Secure data storage ^9.0

State Management: Riverpod

Riverpod 2.4+

Riverpod was selected over alternatives (Provider, Bloc, GetX) because:

  • Compile-time safety for dependency injection
  • No BuildContext required for state access
  • Excellent testing support with overrides
  • Automatic disposal of resources
  • Async state handling with AsyncValue

QR Code Technology

QR Code Generation

simple-qrcode 4.2+

The SimpleQRCode library was chosen for server-side generation:

  • Support for all error correction levels (L, M, Q, H)
  • SVG and PNG output formats
  • Logo embedding with automatic masking
  • Color customization
  • Laravel facade integration

Error Correction Levels

Level Recovery Use Case
L (Low) 7% Clean environment, high data density
M (Medium) 15% Standard usage (default)
Q (Quartile) 25% Logo embedding
H (High) 30% Heavy logo embedding, harsh conditions

QR Code Scanning

mobile_scanner 4.0+

The mobile_scanner package provides:

  • ML Kit barcode scanning on Android
  • AVFoundation on iOS for optimal performance
  • Support for all common barcode formats
  • Camera preview widget integration
  • Torch/flash control
  • Front/back camera switching

GS1 Standards Implementation

GS1 Digital Link Standard

Reference

Implementation follows the GS1 Digital Link Quick Start Guide (2024).

Supported Application Identifiers

AI Code Name Format Example
01 GTIN 14 digits /01/09506000134352
10 Batch/Lot Up to 20 chars /10/ABC123
21 Serial Number Up to 20 chars /21/XYZ789
17 Expiry Date YYMMDD ?17=251231
11 Production Date YYMMDD ?11=241215
3103 Net Weight (g) 6 digits ?3103=000500
3922 Price Up to 15 digits ?3922=001299

URL Structure

https://[domain]/[primary-key]/[secondary-keys]?[data-attributes]

Example:
https://qr2.ignited.cloud/01/09506000134352/10/ABC123/21/XYZ789?17=251231&3103=000500

GTIN Validation

QR Igniter implements full GTIN validation including:

  • Length validation: GTIN-8, GTIN-12, GTIN-13, GTIN-14
  • Check digit calculation: Modulo 10 algorithm
  • GCP extraction: Company prefix identification
  • Country code parsing: GS1 prefix to country mapping
// GTIN Validation Service
class GtinValidator
{
    public function validate(string $gtin): bool
    {
        // Normalize to 14 digits
        $gtin14 = str_pad($gtin, 14, '0', STR_PAD_LEFT);

        // Calculate check digit
        $sum = 0;
        for ($i = 0; $i < 13; $i++) {
            $multiplier = ($i % 2 === 0) ? 3 : 1;
            $sum += (int)$gtin14[$i] * $multiplier;
        }

        $checkDigit = (10 - ($sum % 10)) % 10;
        return $checkDigit === (int)$gtin14[13];
    }
}

Future Technology Considerations

Planned Enhancements

Technology Purpose Priority
Redis Caching and session management High
Elasticsearch Advanced search and analytics Medium
WebSockets (Pusher/Soketi) Real-time dashboard updates Medium
PWA Support Web-based scanning option Low
GraphQL Alternative API for complex queries Low

Technology Risks & Mitigations

Risk Impact Mitigation
Laravel major version changes Medium Follow LTS releases, maintain test coverage
Flutter breaking changes Medium Pin to stable versions, comprehensive widget tests
QR library deprecation Low Abstraction layer allows library replacement
GS1 standard updates Low Configurable AI mappings, regular standard reviews