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. |
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 |
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:
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).
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.
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).
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.
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
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.