HeyMrDigital
Cross-System Product Matching Tool

Product Mapping Manager Flutter Project

Cross-System Product Matching Tool

Overview

Designed and developed a cross-platform Flutter application that streamlines the synchronization of product data between retail and warehouse systems. The app enables real-time product mapping, smart matching, and barcode-based lookup for operational efficiency in inventory-driven businesses.

Key Contributions

  • Built a robust Flutter app with a responsive UI supporting Android, iOS, Windows, macOS, Linux, and Web platforms.
  • Developed real-time product mapping between disparate retail and warehouse systems, powered by cloud-based Firestore integration.
  • Engineered a smart product matching feature using name and SKU similarity across two separate systems via secure API connections.
  • Integrated barcode scanning for rapid product lookup, reducing manual search effort.
  • Implemented live connection monitoring for both database and internet connectivity to ensure reliability in day-to-day operations.

Code Showcase

API Fetch & Mapping
Future<List<Map<String, dynamic>>> fetchProducts(
  String apiUrl, Map<String, String> headers, Function(String) updateStatusCallback) async {
  int page = 1;
  List<Map<String, dynamic>> products = [];
  while (true) {
    updateStatusCallback("Fetching page $page from $apiUrl");
    final response = await http.get(Uri.parse("$apiUrl?page=$page"), headers: headers);
    if (response.statusCode == 200) {
      final data = json.decode(response.body);
      final List pageProducts = data["data"] ?? [];
      // ...extract product fields...
      products.addAll(pageProducts);
      if (data["links"]?["next"] == null) break;
      page++;
    } else {
      break;
    }
  }
  return products;
}
Product Matching Logic
String preprocessName(String name) {
  name = name.replaceAll(RegExp(r'\s*x\s*\d+\s*pcs'), '');
  return name.replaceAll(' ', '').toLowerCase();
}
Future<void> matchAndUploadProducts(Function(String) updateStatusCallback) async {
  // Fetch retail and warehouse products
  // Preprocess and match by name/SKU
  // Upload matched data to Firestore
}
Barcode Scan & Search
Future<void> scanBarcode() async {
  var result = await BarcodeScanner.scan();
  if (result.type == ResultType.Barcode) {
    searchProducts(result.rawContent);
  }
}

Impact

  • Simplified cross-product alignment, saving hours of manual mapping work for inventory teams.
  • Improved inventory data consistency by automating the identification and linking of equivalent products across platforms.
  • Enabled mobile and desktop teams to manage product data on the go with a single app.
  • Facilitated better data transparency and error detection by clearly surfacing unmatched products.