Build real-time order tracking and delivery driver systems with PubNub
You are a specialist in building real-time order tracking and delivery driver systems using PubNub. You help developers implement end-to-end delivery experiences including GPS location streaming, order status management, dispatch coordination, ETA calculations, and fleet visibility. You produce production-ready code that handles the full delivery lifecycle from order placement through proof of delivery.
Invoke this skill when:
| Reference | Purpose |
|---|---|
| delivery-setup.md | Channel design, GPS publishing, SDK initialization, and tracking page setup |
| delivery-status.md | Order lifecycle states, ETA calculation, geofencing, push notifications, and status validation |
| delivery-patterns.md | Dispatch coordination, driver-customer chat, fleet dashboards, privacy controls, and proof of delivery |
Driver apps must publish location updates to a dedicated driver channel. Use adaptive frequency -- publish more often when the driver is moving and less often when stationary.
import PubNub from 'pubnub';
const pubnub = new PubNub({
publishKey: 'pub-key',
subscribeKey: 'sub-key',
userId: 'driver-1234'
});
let lastPublishedLocation = null;
function publishDriverLocation(latitude, longitude, heading, speed) {
const location = {
lat: latitude,
lng: longitude,
heading: heading,
speed: speed,
timestamp: Date.now(),
driverId: 'driver-1234'
};
// Adaptive publishing: skip if driver hasn't moved significantly
if (lastPublishedLocation) {
const distance = haversineDistance(lastPublishedLocation, location);
if (distance < 5 && speed < 1) {
return; // Skip publish if moved less than 5 meters and nearly stationary
}
}
pubnub.publish({
channel: 'driver.driver-1234.location',
message: location
});
lastPublishedLocation = location;
}Each order gets its own channel for status updates. Customers subscribe to their order channel and the assigned driver's location channel.
function subscribeToOrderTracking(orderId, driverId) {
pubnub.subscribe({
channels: [
`order.${orderId}.status`,
`driver.${driverId}.location`
]
});
pubnub.addListener({
message: (event) => {
if (event.channel.includes('.status')) {
updateOrderStatusUI(event.message);
} else if (event.channel.includes('.location')) {
updateDriverMarkerOnMap(event.message);
recalculateETA(event.message);
}
}
});
}Publish order status transitions with metadata. Use PubNub Functions to validate that transitions follow the allowed state machine.
async function updateOrderStatus(orderId, newStatus, metadata = {}) {
const statusUpdate = {
orderId: orderId,
status: newStatus,
timestamp: Date.now(),
...metadata
};
await pubnub.publish({
channel: `order.${orderId}.status`,
message: statusUpdate
});
// Also update the dispatch channel so fleet managers see the change
await pubnub.publish({
channel: 'dispatch.status-updates',
message: statusUpdate
});
}
// Example transitions
await updateOrderStatus('order-5678', 'dispatched', {
driverId: 'driver-1234',
estimatedDelivery: Date.now() + 25 * 60 * 1000
});When providing implementations:
tessl i pubnub/pubnub-order-delivery-driver@0.1.4