MaxTracks Scanner

Android barcode scanning app for warehouse package management

11
Screens
4
User Roles
12
Carriers Detected
9
Controllers
20+
Dependencies

Technology Stack

LayerTechnologyVersion
FrameworkFlutter (Dart)SDK >=3.4.3
State ManagementGetX4.6.6
DatabaseCloud Firestore5.0.1
AuthFirebase Auth5.1.0
StorageFirebase Storage12.1.0
Barcode Scannermobile_scanner4.0.1
Audioaudioplayers5.2.1

Architecture

📷
Camera Scanner
mobile_scanner
🔎
Carrier Detection
LogisticService
📦
Package Check
Firestore Query
💾
Save / Update
Cloud Firestore

Scan → Identify → Check → Persist

Scan Flow

1
User taps SCAN button on Home Page
2
CustomScanner dialog opens with 1920x1080 camera preview
3
Barcode detected within scan window, sound plays via SoundService
4
LogisticService.identifyCourier() matches carrier via regex
5
PackageCheckService queries Firestore for existing package
6
Navigate to Check-In (new) or Package Exists (duplicate) screen
7
User fills form and saves — package written to Firestore with scan history

Carrier Detection

The LogisticService identifies 12 carriers via regex pattern matching on the raw barcode:

UPS
^1Z\w{16}$
FedEx
12-34 digit patterns
USPS
^9\d{21}(\d{4})?$
OnTrac
^D100\d{11}$
LaserShip
^1LS.*$
SpeedX
^SPXPBI\d{12}$
GOFO Express
^GFUS01\d{12}$
DHL
^\d{10}$
Amazon US
^TBA\w{12}$
Amazon CA
^TBC\w+$
International
^[A-Z]{2}\d{9}[A-Z]{2}$
Max Shipping
contains MAXTRACKS

Screens (11)

01
Intro Page
Splash screen, version check, update dialog
02
Registration
Login with role selection, device enforcement
03
Home Page
Role-adaptive dashboard hub
04
Client Pickup
3-tab pickup management interface
05
Check-In Layout
Wrapper for check-in sub-screens
06
Check-In Form
Full package check-in with consolidation
07
Check-In Exist
Duplicate package handling
08
Check-In Update
Edit existing package data
09
Package Layout
Standard receiving wrapper
10
Package Details
Receiving and unloading form
11
Suggestion Page
Search by tracking, client, or reference

User Roles

CodeRoleAccess
role[0] Administrator Full access to all features
role[1] Check In Package check-in, consolidation, item assignment
role[2] Container Unload Package unloading, search by tracking/client
role[3] Client Pickup Tab-based pickup management, container filtering

Navigation Flow

Check-In Role (role[1])
Home → Instant Scan → Check-In Layout → CheckIn / CheckInExist / CheckInUpdate
Container Unload (role[2])
Home → Suggestion Page → Package Layout → PackageDetails / PackageExists
Client Pickup (role[3])
Home → Client Pickup Page (3 tabs: Unloaded, Pickup, Receiving)
Normal / Receiving
Home → Scan / Manual Entry → Package Layout → PackageDetails

GetX State Management

ControllerResponsibility
IntroPageControllerSplash screen, version check
RegistrationControllerLogin, device validation
HomeControllerDashboard, role switching, tab state
CheckInControllerCheck-in form, consolidation logic
PackageDetailsControllerPackage receiving form
ClientNameControllerClient search (shared widget)
ProblemSectionControllerDamage reporting, photo capture
SuggestionControllerPackage search suggestions
ManualTrackingNumberControllerManual barcode entry

Build & Deploy

Development Build
flutter pub get
flutter build apk
Production Build
flutter build apk --flavor production -t lib/main_production.dart
SettingValue
Min SDK21 (Android 5.0)
Current Version1.4.7+1
Project PathC:\maxtracksapp\maxtracksapp\
APK Outputbuild/app/outputs/flutter-apk/app-release.apk
Detailed docs: Architecture Overview | Screens & Navigation | Scanning & Carrier Detection | Build & Deployment
← Back to MaxShipping