Deliverty Driver App

The mobile application for delivery agents — built with Expo 54 and React Native for iOS and Android.

Overview

The Deliverty Driver App is the mobile companion to the Deliverty Hub platform. It is used by delivery agents to receive task assignments, navigate to pickup and drop-off locations, update task statuses in real time, and report their GPS position to the platform.

The app is built with Expo 54 and React Native, enabling cross-platform deployment to both iOS and Android from a single TypeScript codebase. It connects to the Deliverty Hub backend via REST API for data operations and Socket.IO for real-time communication.

App Layout

The app uses a 5-tab bottom navigation layout that gives agents quick access to all essential functions:

Tab Description
Home Dashboard overview showing active tasks, today's statistics (completed deliveries, earnings), and availability toggle. The agent can quickly see their current workload at a glance.
Tasks Full list of assigned tasks with filtering and sorting. Each task shows pickup/delivery addresses, customer info, package details, and payment information. Agents can tap a task to view full details, navigate to the location, or update the status.
Requests Incoming task assignment requests that the agent can accept or decline. When the assignment engine selects an agent, the request appears here with a time window for the agent to respond.
Profile Agent profile settings, account information, and availability management. Agents can view their performance statistics and update their profile details.
Notifications In-app notification center showing all notifications received from the platform — new assignments, status updates, system announcements, and more. Powered by Novu.

GPS Tracking

One of the most critical features of the Driver App is continuous GPS location reporting. The app tracks the agent's position and sends updates to the Deliverty Hub backend, enabling the live tracking map and distance-based assignment algorithms.

Tracking Parameters

Parameter Value Description
Update Interval 15 seconds The app attempts to send a location update every 15 seconds while the agent is available.
Minimum Distance 10 meters A location update is only sent if the agent has moved at least 10 meters since the last update. This reduces unnecessary network traffic when the agent is stationary.
Transport Protocol Socket.IO Location updates are sent over a persistent WebSocket connection via the /tracking namespace for minimal latency.
Battery Optimization

The 15-second interval with a 10-meter minimum distance threshold is designed to balance tracking accuracy with battery life. Agents should ensure that location permissions are set to "Always Allow" on their device for uninterrupted tracking, especially when the app is in the background.

The /tracking Namespace

All real-time location communication happens over the Socket.IO /tracking namespace. This dedicated namespace handles:

  • Location emission: The mobile app emits location events containing latitude, longitude, and timestamp.
  • Location reception: The dashboard subscribes to agent location events to render live positions on the tracking map.
  • Connection management: The namespace handles agent connect/disconnect events to update availability status.

Real-Time Updates

Beyond GPS tracking, the app uses Socket.IO for bidirectional real-time communication:

  • New task assignments: When the assignment engine selects this agent for a task, the app receives an instant notification via Socket.IO (in addition to a push notification).
  • Task status changes: If a dispatcher updates a task from the dashboard (e.g., cancels it), the agent's app reflects the change immediately.
  • Chat messages: Real-time communication between agents and dispatchers (if enabled).

Push Notifications

The app receives push notifications powered by Novu for important events, even when the app is not in the foreground:

Event Notification
Task assigned to agent Push notification with task summary — tapping opens the task detail screen
Task completed Confirmation push notification
Task cancelled Push notification informing the agent the task has been cancelled
Subscriber ID Format

The mobile app registers with Novu using the subscriber ID format user_{userId} (e.g., user_238). This must match the backend's subscriber ID generation to ensure notifications are delivered correctly.

Task Workflow in the App

Agents interact with tasks through a clear status-driven workflow:

1

Receive Assignment

A new task appears in the Requests tab. The agent receives a push notification and can review the task details (pickup/delivery locations, packages, payment info).

2

Accept or Decline

The agent taps Accept to take on the task or Decline to pass. Accepted tasks move to the Tasks tab; declined tasks are returned to the assignment engine for reassignment.

3

Navigate to Pickup

The agent taps the navigation button to open directions to the pickup location in their preferred maps app (Google Maps, Apple Maps, or Waze).

4

Mark as In Transit

After picking up the package, the agent updates the status to IN_TRANSIT. The customer is notified that their delivery is on its way.

5

Complete Delivery

At the drop-off location, the agent marks the task as COMPLETED. If the task involves cash on delivery, the app prompts the agent to confirm the payment collection.

Technical Stack

Technology Purpose
Expo 54 Build framework — managed workflow for iOS and Android
React Native Cross-platform UI framework
TypeScript Type-safe application code
Socket.IO Client Real-time communication with the backend (/tracking namespace)
Novu React Native SDK Push notifications and in-app notification center (@novu/react-native)
Expo Location GPS tracking with foreground and background location services

Device Requirements

  • iOS: iPhone running iOS 15.0 or later
  • Android: Device running Android 10 (API 29) or later
  • Permissions required: Location (always), Camera (for proof of delivery), Push Notifications
  • Network: Active internet connection (Wi-Fi or mobile data) required for all operations
Background Location Access

For accurate GPS tracking, agents must grant "Always Allow" location permission. If the permission is set to "While Using the App" only, location updates will stop when the app is minimized, causing stale position data on the dashboard's live map.