PlatformDriver app

A drayage driver app that assumes the signal drops

Nothing to install today. There is no store listing, no beta build and no way for a driver to change a status from the cab. What exists is the record the app will write to — the driver, the move, the statuses, the documents and the role — built before the screens, on purpose.

Where this standsThe driver app is planned, not built. The dispatch board reads today and does not yet write, so a phone that posted an arrival would have nothing to post it to. That is the dependency, and it is the reason the order is board first, cab second. Ship date: we do not publish dates we cannot keep.

01Already built

The hard part is the record, not the screen

Most driver apps are bolted onto a data model that never expected them, which is why the office ends up re-keying what the driver already typed. These pieces are written today: tables, enums, a permission matrix and one screen.

The driver
Company driver, owner-operator or fleet-owner driver. Active, on leave or terminated. Available, on a move, off duty or unavailable. License and its expiry, medical card expiry, TWIC and its expiry, preferred terminals, home base and the fleet owner they run under — columns, not a notes field.
The move
A driver is assigned to a move, not to a load. The move carries the truck, the chassis, the planned window, the four timestamps a detention claim is argued from — assigned, departed, arrived, completed — the leg miles, the deadhead and the driver pay for that leg, held on the move rather than on the load. Nothing prices detention or that pay today; these are the columns the arithmetic will read.
The vocabulary
Eight move statuses enforced by the database: pending, assigned, enroute, arrived, in progress, departed, completed, cancelled. The app will not be able to invent a ninth, and the board cannot quietly mean something else by arrived.
Where a fact came from
Every event records its source: manual, terminal portal, steamship line, email, EDI, API — or driver app. The day a status arrives from a phone, a dispatcher can tell it apart from one typed at a desk, and so can an audit.
The paperwork
A document hangs off the load, the move, the container, the customer or the driver. POD, BOL, interchange receipt, scale ticket. The row points at object storage rather than holding a public URL, and carries a SHA-256 so a disputed POD can be proven to be the same file nobody swapped.
The role
driver is a role in the permission matrix, and it holds exactly two permissions: see loads, see containers. One auditable table rather than a rule scattered across screens, and the middleware that checks it before a handler runs is written — though no endpoint demands a permission yet, because there is nothing for a driver to sign into. See how tenants are separated.
The front door
Phone-number sign-in is drawn and deliberately switched off: no text-message provider is connected, so the form has no endpoint to post to and says exactly that on screen instead of failing in a driver's hands at 5 a.m.

02The day in the cab

Four moves, in order, and no phone calls

A drayage day is not a route: it is a pull, a delivery, an empty return and whatever the terminal does to that plan by ten in the morning. The app is being designed around the move the dispatcher already assigned, not around a driver building their own list.

Today · driver D-2144 moves
Sketch
1 · PullMSCU 4498120 · 40 HCCompleted06:40
2 · DeliverConsignee · PiscatawayEnroute09:15
3 · Return emptyElizabeth · dual transactionPendingPD 1d
4 · Empty getTGHU 7721048 · 20 GPPending

Sketch of a driver's day — sample moves, not live data. This screen does not exist yet.

The app is a view of the move, not a second system.

Anything the driver sends will land on the same move the dispatcher already has open. There is no second driver database in the schema to reconcile at the end of the week, and no version of the truth that would live only on a phone.

Today, in order PlannedThe moves already assigned to them, in sequence, with the address, the appointment window, the container and the chassis — and nothing that belongs to another driver.
Status without typing PlannedArriving at a terminal should set arrived from the geofence. Buttons are the fallback for when the geofence is wrong, not the design.
Navigation and gate PlannedHand the address to the map app the driver already trusts, and carry the appointment number they will be asked for at the gate.
Say it out loud Planned“They will not take the empty at Elizabeth.” Transcribed into a proposed status and an exception a person confirms — never a state change a model made on its own. See the operating agents.

03Proof

No POD, no invoice

Most carriers do not lose the paperwork; they lose the week between the delivery and the moment somebody types it into a system. Photos on a personal phone, a text thread, a re-key at the office, and an invoice that goes out four days late.

Capture at the dock PlannedPOD, BOL, interchange receipt and scale ticket photographed against the move they belong to, with the signature taken on the same screen — not attached later by someone guessing which load it was.
Where it landsThe document table is built and already accepts a driver, a move, a container and a customer on the same row, points at object storage instead of a public link, and keeps a checksum for the day two versions of the same POD turn up.
Read without typing PlannedThere are columns waiting for OCR text and extracted fields; no OCR runs today. When it does, the delivery number on the paper should match the load without a human comparing them.
Straight to the invoice PlannedA complete document set is what turns a finished move into something billable. The billing side is not built either, and the two are being designed as one path rather than two.

04Offline

Between the stacks there is no signal

A driver waiting under a crane, inside a warehouse dock or in the middle of a container yard has no bars, and that is precisely where the status changes. An app that needs the network at that moment is an app that gets closed.

The queue is the feature

Writes go to a local queue first and sync when there is signal, with retry that does not depend on the driver remembering. Nothing about their day should block on a spinner. Planned

One record, not two

There is no separate driver database to sync: the move, the container and the document row the app will write to are the same rows the office already reads. That part is not a promise — it is how the schema is built.

Stamped, not argued

Each status the app posts carries its source and the position it was sent from, so a detention claim is settled by the record instead of by whoever remembers harder. Planned

Planned means not built. The stack is decided — React Native and Expo, talking to the same API as the board, with no separate driver database — and the build order is on the roadmap.

QuestionsStraight answers

What carriers ask about this one

Can my drivers use it today?

No. There is no app to install, no beta and no text-message sign-in. The driver record, the driver role and the sign-in screen exist; the thing that goes in a pocket does not. If someone shows you a demo of it, it is a mockup.

Do drivers cost extra?

The unit is the tractor that moved at least one load in the month, not the person, so two drivers sharing a truck across shifts is still one unit. Today there is nothing to give a driver access to anyway. The model is on the pricing page; the rate is not set.

What happens to what the driver sends?

It is designed to land on the move itself — the same row the dispatch board reads, tied to the container record that already carries last free day and the per diem and demurrage the board prices from it. A status from a phone will be marked as coming from the app, so nothing looks like it was typed by the office when it was not.

Why build the board before the app?

Because a driver app posting into a system that cannot yet act on it is a demo. The board has to write — assignment, dispatch, status — before a phone has anywhere to write to. That is also why street turns and chassis come off the same record rather than from a driver typing them twice.

The app is the last mile. The record comes first.

More of what is built and what is not: the platform, the dispatch board and the roadmap.