Vasil Georgiev
Demo ready2024 – 2026

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.

Open live app

Demo access

Logistic

The demo is behind a site gate. Enter the gate password Asdqwe1231 first, then sign in with an account below.

  • Dispatcher

    Logindispatcher@demo.logistic
    Password•••••••••

    Live Fleet, Dispatch, Load Board and Traffic.

  • Driver app

    Loginj.carter@demo.logistic
    Password•••••••••

    Has assigned loads. Best opened on a phone or in a private window.

Open Logistic

Demo accounts with example data only.

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.

Walkthrough

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.