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.
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.
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.
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.
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.
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
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.
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.