Solution Blueprint · Logistics & Transportation

Real-Time IoT Fleet Tracking Platform

A logistics operator runs hundreds of vehicles but only sees where they are through a vendor portal that refreshes every few minutes. This blueprint shows how we design a platform that ingests telematics data in real time, raises geofence and safety alerts, and gives dispatchers and drivers the same live view.

This is a solution blueprint: a representative engagement showing how we approach this kind of project. It is not a specific client story.

Real-Time IoT Fleet Tracking Platform illustration
IndustryLogistics & Transportation
Timeline5–7 months to a production MVP
Teamproduct lead, 4–5 engineers, 1 mobile engineer, 1 designer, part-time DevOps

The Challenge

  • Telematics devices from different vendors send data in different formats over unreliable cellular connections.
  • Dispatchers rely on a slow third-party portal and cannot combine vehicle positions with their own orders and routes.
  • Geofence entries, idling and harsh-driving events are discovered hours later from reports instead of as they happen.
  • Drivers get job updates by phone call, and proof of delivery is collected on paper.

What the Solution Delivers

  • Vehicle positions on the dispatcher map within seconds of each device report
  • Geofence, idling and speeding alerts evaluated as events stream in
  • One normalized data model regardless of telematics device vendor
  • Drivers receive jobs and capture proof of delivery in a mobile app that works offline
Architecture

Fleet tracking platform architecture

Fleet tracking platform architectureTelematics devices publish over MQTT to a broker, which forwards messages to Kafka. Stream processors normalize positions, evaluate geofences and write to a time-series store, while a realtime API pushes live updates to the dispatcher dashboard and driver app. Connections: GPS Telematics Units to MQTT Broker (MQTT); Driver Phones to MQTT Broker; GPS Telematics Units to Device Registry (provisioning); MQTT Broker to Stream Processor (raw telemetry); MQTT Broker to Geofence Engine; Device Registry to Stream Processor; Stream Processor to Time-Series Store; Stream Processor to Dispatcher Dashboard; Stream Processor to Driver App; Geofence Engine to Alerting (zone events); Geofence Engine to Dispatcher Dashboard.EDGE DEVICESINGESTIONSTREAM PROCESSINGDATA & APPSGPS TelematicsUnitsposition · CAN bus dataDriver Phonesapp location · eventsMQTT BrokerEMQX · TLS · Kafka bridgeDevice Registryidentity · vendoradaptersStream ProcessorFlink · normalize ·enrichGeofence EnginePostGIS zones · rulesTime-Series StoreTimescaleDB · triphistoryDispatcherDashboardReact · Mapbox ·WebSocketDriver AppReact Native · offlineAlertingpush · SMS · emailMQTTprovisioningraw telemetryzone events
Telematics devices publish over MQTT to a broker, which forwards messages to Kafka. Stream processors normalize positions, evaluate geofences and write to a time-series store, while a realtime API pushes live updates to the dispatcher dashboard and driver app.

The situation

Fleet operators usually start with whatever portal ships with their telematics hardware. It shows dots on a map, but it refreshes slowly, cannot be combined with the company’s own order and routing data, and makes it hard to add a second hardware vendor. Alerts come as daily reports. Drivers and dispatchers coordinate by phone, and proof of delivery is a signature on paper that gets scanned days later.

Teams in this situation want to own their fleet data and build workflows around it, without writing low-level device firmware or managing a fragile ingestion stack.

Our approach

1. Normalize devices at the edge of the platform

We define one canonical telemetry schema: position, speed, heading, ignition, odometer, fuel and diagnostic codes, with device and vehicle IDs. Each hardware vendor gets a small adapter that maps its payload to that schema. Devices publish over MQTT with TLS and per-device credentials, and the broker handles intermittent connections, retained messages and buffered backlogs when a truck leaves coverage and reconnects.

2. Decouple ingestion from processing

The MQTT broker forwards messages to Kafka, partitioned by vehicle so events for one vehicle stay in order. This separates thousands of long-lived device connections from the services that process the data. If a downstream service is slow or being redeployed, messages wait in Kafka instead of being dropped, and we can replay history to rebuild derived data after a bug fix.

3. Process streams, store time series

Apache Flink jobs clean and enrich telemetry: they discard impossible GPS jumps, snap positions to trips, compute idling and harsh-braking events and attach order context. Positions and trip history land in TimescaleDB, which handles large volumes of time-stamped rows with compression and retention policies, while PostGIS stores depots, customer sites and restricted zones.

4. Evaluate geofences and rules in real time

The geofence engine checks each position against the relevant zones and emits entry, exit and dwell events. Business rules, such as “notify the customer when the truck is 15 minutes away” or “alert a supervisor after 10 minutes of idling”, are configured per customer or per depot rather than hard-coded. Alerts go out through push notifications, SMS or email, with deduplication so a vehicle parked on a zone boundary does not trigger a flood.

5. Give dispatchers and drivers the same live view

A realtime API pushes position and status updates to the dispatcher dashboard over WebSockets. The React dashboard uses Mapbox GL JS with clustering and vector tiles so it stays responsive with a large fleet on screen, and adds trip replay, job assignment and exception queues. The React Native driver app receives jobs, shows navigation handoff, captures photos, signatures and barcodes as proof of delivery, and queues actions offline until connectivity returns.

How we deliver it

We start with a hardware and data review: which devices are in the field, what they report and how often, and which workflows matter most to dispatch. The first release usually covers one device vendor, the live map and a small set of geofence alerts, piloted with a single depot. Additional vendors, rules and driver-app features follow in iterations.

The platform runs on Kubernetes with infrastructure as code, autoscaling on ingestion load and dashboards for broker connections, consumer lag and alert latency. We load-test with simulated devices before each expansion; see our cloud services for how we run this kind of workload. Security covers device identity and credential rotation, encrypted transport and role-based access, so a customer or depot sees only its own vehicles.

Is this relevant to you?

If your fleet data is locked in a vendor portal, you run a mix of telematics hardware, or your drivers still work from phone calls and paper, this architecture is a good fit. Explore our web and mobile app development service or talk to us about your fleet.

Building something similar?

We'll walk through your requirements and share how we'd approach architecture, timeline and team for your project.

More Blueprints

Typical Technology Stack

EMQXMQTTApache KafkaApache FlinkTimescaleDBPostGISGoTypeScriptReactMapbox GL JSReact NativeKubernetes
Start Your Digital Evolution

Let’s Build Something Extraordinary Together

Tell us about your software initiative, timeline, or technical challenge. Our principal solutions architect will respond within 4 business hours.

Project Consultation Request

Please enter your full name.
Please enter a valid work email address.
Please select a service domain.
Please select an estimated budget range.
Please describe your project (minimum 15 characters).

We reply by email and never share your details. See our Privacy Policy.

This site is protected by reCAPTCHA and the GooglePrivacy Policy andTerms of Service apply.

Headquarters & Direct Channels

Ahmedabad HeadquartersVandemataram City, Gota, Ahmedabad, Gujarat, India - 382481
Enterprise Inquirieshello@evoxsoft.com
Direct Consultation Line+91 98981 85028
EvoxSoftAhmedabad Headquarters
Get Directions