WhatsApp
All projects

Warehouse & Logistics Platform · Mobile

2026

The customer-facing Flutter app — live order tracking, QR receipts and instant invoices, so customers never have to call in for status.

Role

Full-Stack Software Engineer — designed and built the app end to end against the shared Carry Go backend

Year

2026

Status
Production
Stack
  • Flutter
  • Dart
  • Frappe REST API
  • Firebase Cloud Messaging
Carry Go — Customer App — interface preview
01 / 03

Overview

The Customer App is Carry Go's public face: a Flutter app that lets customers request a deposit or delivery, track it live, and receive a proper invoice and QR receipt on completion — without a single phone call to the warehouse.

Problem

Before this app, customers had no visibility into where their package or deposit request stood. Every status question meant a call to the warehouse, pulling a supervisor away from operational work just to read a status off the Warehouse Portal.

Solution

I built a customer experience around the same order/deposit records that power the Warehouse Portal and Courier App: as a courier accepts a pickup, moves it between warehouses, or completes delivery, the customer sees that status change live, with an ETA and the assigned courier's details.

Architecture

The app consumes the same Python/Frappe REST API as the other two Carry Go surfaces, backed by ERPNext v16 on its isolated Bench. Firebase Cloud Messaging pushes status-change notifications; invoice and QR-receipt generation happen server-side in Frappe and are surfaced to the app on delivery completion.

Features

  • Live order tracking with ETA and assigned-courier details.
  • Real-time status updates as a package moves between couriers or warehouses.
  • QR receipt and automatically generated invoice on delivery.
  • Post-delivery courier rating.

Development Process

Because the app reads from the same records the Warehouse Portal and Courier App write to, there was no need to build a separate notification or sync pipeline — a status change made by a courier in the field is visible to the customer within the same request/response cycle that updates ERPNext.

Challenges

The main design challenge was making a live tracking screen feel trustworthy without over-promising precision the underlying data couldn't support — ETA is derived from courier-reported status transitions rather than live GPS, so the UI is explicit about stage (e.g. "courier en route to pickup") rather than implying a moving map it doesn't have.

Results

Customers can now originate and track a deposit or delivery entirely on their own, with a proper invoice and QR receipt at the end — removing a steady stream of status-check calls from warehouse staff.

Future Improvements

Live GPS-based ETA once the courier app exposes location data, and in-app support chat for exceptions.

03Gallery

Select any screen to open it full size.

01Order Tracking02

02Delivery & Receipt01