All projects

Noodo Driver

Order Delivery App

Driver app for Noodo Bakers deliveries: accept orders, navigate live, stream GPS in the background, and complete handoffs with QR verification, Flutter + Socket.IO on the shared delivery API.

Role
Full-stack developer
Timeline
Jun 2026 — Sep 2026
Status
Completed
Noodo Driver cover

Overview

Noodo Ride is the driver-facing half of the Noodo Bakers delivery platform. While the customer app handles ordering and payment, this app owns acceptance, navigation, live location, and proof of pickup/delivery.

Built in Flutter with clean architecture (domain / data / presentation), Riverpod, GoRouter, and Dio + Retrofit against the same Node API. Drivers see ready orders, accept or decline, start delivery on a Gebeta map with route and ETA, and complete the run with QR scanning and status updates. During an active delivery, a foreground location service keeps GPS flowing over Socket.IO so the customer side can track the driver even when the app is backgrounded.

Shows production delivery-ops work: realtime sockets, background location, map routing, and a tight order state machine, not just list/detail screens.

Problem

  • Drivers needed a focused ops app, not the customer UI, to accept, navigate, and close deliveries reliably.
  • Customer live-tracking only works if the driver’s GPS stays online while the phone is locked or backgrounded.
  • Pickup/handoff needed a clear verification step so wrong bags and disputed completions drop.

Approach

  • Shipped a Flutter driver app on the shared delivery API with a clean accept → navigate → complete flow.
  • Ran foreground location + Socket.IO so driver position streams during active deliveries.
  • Added QR scanning and explicit status transitions (accept, start, complete) tied to order state on the backend.

Challenges

  • Keeping location and socket state healthy across app backgrounding, permission denials, and reconnects.
  • Aligning driver actions with customer-visible order status without double-updates or stuck “out for delivery” jobs.
  • Making map + bottom-sheet delivery UX usable one-handed on the road.

Results

  • A production driver client that closes the loop with the Noodo customer app and API.
  • Realtime tracking and verified handoffs, the hard parts of delivery ops, not just order lists.
  • Clear evidence of systems thinking across a multi-app product (customer + driver + API).

Architecture

Key features

  • Driver auth and secure session (token refresh, secure storage)
  • Home: stats, ready orders, active delivery card
  • Order list with filters and status tracking
  • Accept / cancel delivery assignment
  • Start delivery → out-for-delivery flow
  • Live map: restaurant + customer route, ETA, markers (Gebeta)
  • Foreground GPS tracking while delivering (Socket.IO location stream)
  • QR scanner for pickup / handoff verification
  • Call customer / need-help actions from order detail
  • Push notifications (FCM) for new assignments
  • Profile: edit details, change password, delivery stats
  • Delivery success confirmation screen

Mobile

  • Flutter driver app (Android / iOS)
  • Feature-first clean architecture: domain, data, presentation
  • Riverpod + GetIt for state and DI
  • GoRouter for auth-aware navigation

Networking & realtime

  • Dio + Retrofit + Freezed against yamfoods-mobile-api
  • Auth / retry / logging interceptors; secure token storage
  • Socket.IO for order assignment events and live driver location

Delivery ops

  • Order state machine: ready → accepted → out for delivery → delivered
  • Foreground location service bound to active delivery
  • Gebeta map routing, ETA, and delivery bottom sheet
  • QR scan dialog for handoff verification

Platform services

  • FCM + local notifications for new jobs
  • Permission flows for location and notifications
  • Profile and session management

Built at

  • MALTT Enterprise PLCBackend and Mobile Application Developer

Have something similar to build?