Logistic
Dispatch and live tracking for a US trucking fleet
A transport-management system for a trucking company. Dispatchers track trucks live on a map and assign loads with routing that respects each truck's size and weight. Drivers get a phone app with their next stop, ETA and an AI assistant they can type or talk to.
logistic.demodomain.site
- Role
- Solo: front end, API, database, deployment
- Platforms
- Dispatcher web app · Driver app (mobile web)
- Tech
- ReactTypeScriptRedux ToolkitMapbox GLNestJSPostgreSQL + PostGISDrizzle ORMRedisSocket.IOTomTom APIClaude APIDocker
5
truck dimensions every route respects
2
apps: dispatcher and driver
11
PostGIS database migrations
2024
first version on Firebase, rebuilt on NestJS in 2026
The problem
A car route can be illegal for a truck
Dispatchers juggle loads, trucks, drivers and traffic in spreadsheets and phone calls. A normal map app happily sends an 80,000 lb truck under a low bridge or over a weight-limited one, and nobody knows a load is running late until the customer calls.
Logistic puts the fleet on one live map, routes every load for the specific truck that carries it, and lets drivers report what's happening on the road by voice, with every change confirmed before it is applied.
01 · Dispatch
Routes calculated for the truck, not the car
Pick a load and the trucks are sorted by distance to the pickup. Choosing a truck routes the load with TomTom's truck mode, using that truck's height, width, length, weight and axles plus live traffic. Switch to a smaller truck and the route and ETA are recalculated.
- A restrictions panel appears only when a restriction can't be avoided
- Several loads can be queued on one truck and are worked in order
- Falls back to Mapbox routing if TomTom is unavailable
02 · Load board
Find the next load for the nearest free truck
A freight exchange view shows each load's rate, rate per mile and the nearest free truck. Loads the company books are imported automatically, and the Live Fleet view suggests next pickups ranked by real truck drive time from where each truck will be free.
03 · Driver app
The driver's day, with a voice assistant
Drivers see the next stop with ETA, contacts with tap-to-call, the route and turn-by-turn directions. They can report delays and road problems, confirm pickup and delivery, or message dispatch, typed or spoken.
- The Claude-powered assistant answers with lookups and proposes changes as cards
- Nothing changes until the driver taps Confirm; dispatch sees the alert immediately
- Road reports from drivers appear on everyone's map
04 · Traffic
Delays spotted before the customer calls
Every active trip is checked against live traffic every five minutes. Growing delays, closures and major incidents raise alerts for dispatchers, alongside any delay the driver reported.
Under the hood
How it's built
- 01
From Firebase to a real backend
Started in 2024 as a React + Firebase dispatch app with Google Maps. In 2026 the backend was replaced with NestJS, PostgreSQL + PostGIS and Drizzle, and the maps moved to Mapbox.
- 02
Live positions
Truck positions arrive through a telematics webhook (or a built-in simulator that drives real truck routes) and are pushed to dispatchers over Socket.IO; Redis shares updates across API instances.
- 03
Routing and geocoding
TomTom truck routing and its matrix API rank drive times with live traffic; Mapbox handles map tiles and US geocoding on the server, so secret tokens never reach the browser.
- 04
AI assistant with confirmation
The assistant uses Claude with tool calls for lookups; any change it proposes is returned as a card and only executed after an explicit confirm from the user.
- 05
Auth and roles
JWT access tokens with refresh tokens and argon2 password hashing; admin, dispatcher and driver roles, with driver app logins created from the Drivers page.
- 06
Deployment and tests
Docker Compose with Caddy on a VPS, a site-wide gate for the demo, GitHub Actions CI, Vitest for the web app and unit plus end-to-end tests for the API.