PortsNY / NJ
Drayage software for Newark and Elizabeth
DrayBase is being built for the New Jersey port market first — Newark, Elizabeth, Port Liberty NY — because that is where the operation we build alongside actually runs. This page is about those lanes specifically: what the software does on them today, and the parts we have not written yet.
The work here01
Six things that decide the day on this harbor
None of these is a feature request. They are the shape of the job between Newark, Elizabeth and Port Liberty NY — and the reason the data model looks the way it does instead of looking like a general freight TMS with a container field bolted on.
- Two clocks
- Free time belongs to the terminal and per diem belongs to the line. Different owners, different daily rates, and the gate out is the handoff between them — the calculation never lets one box accrue both at once. Both clocks live on the container record, and the last free day carries its own source and its own timestamp.
- Chassis
- Whether the box rides your own bogie or a pool unit, whose pool, and what the day costs. Pool names are values in a field, not connections — and a split you discover on an invoice six weeks later usually started as a field nobody filled in on dispatch day.
- Empty returns
- The line moves where it takes empties back, sometimes mid-week, and it is not necessarily the terminal you pulled from. That is why the empty return location is its own field on the container instead of being inferred from the pickup.
- Street turns
- Reusing an import empty on an export is a line-authorization question first and a matching question second. The line record carries whether it authorizes them and the move type exists; the continuous matching does not. Planned
- Dual transactions
- Dropping an empty and pulling a load in one trip to the same terminal. A load can point at the load it was paired with, so the pairing survives in the record; deciding which pairs are worth making is still a dispatcher and a whiteboard. Planned
- Gate rules
- No TWIC, no gate. It sits on the driver record with its expiry date, next to the terminals that driver prefers. Fields today and nothing more: there is no assignment yet for a rule to block, so nothing stops the wrong man being sent to the wrong gate. Planned
The port is the domain model, not a filter on top of one.
Today02
What the board already does on a Newark day
This is the changelog, not the roadmap. Every row below is running code against a real Postgres database — the one your containers, your chassis, your drivers and your customers would live in, one carrier per tenant, isolated in the database itself rather than by a filter somebody could forget to write.
Your terminals03
A terminal is a record you own
The short codes your dispatcher says out loud — APM, PNCT, Maher, GCT Bayonne — are the code field on a location, next to whether that gate needs an appointment and which system issues it. Naming one here means exactly that: it is a value the record can hold. It implies no relationship with the terminal and no connection to its systems.
Illustration of the location record — a sample, not live data. The terminal name and code are made up; the fields are the ones the schema has.
We do not read your terminals. Not yet, and we will say so.
No portal scraping, no appointment system, no steamship line website, no EDI feed. Last free day, holds and availability are numbers a human knows and a human will have to type, and the field that moves the most money is built to admit it: the last free day carries its own source and its own updated-at stamp. Terminal data is deliberately the last thing on the roadmap: it is the piece most likely to break quietly, and a board that is confidently wrong about a last free day is worse than no board at all.
QuestionsStraight answers
What carriers here ask first
Do you pull last free day from the terminals?
No. Nothing in DrayBase reads a terminal portal, an appointment system or a line's website today. Free time, holds and availability are numbers a human has to know and type, and the schema is built to record that: every last free day has a source field and an updated-at stamp, and the board hands both back with the row. Typing them into a screen, and putting that freshness in front of the dispatcher next to the date, are both still to come. Planned
Which terminals do you support?
All of them and none of them, depending on what you mean. A terminal is a location record — code, type, whether the gate needs an appointment, which system issues it, its time zone, its geofence radius — so Newark, Elizabeth, Port Liberty, the rail ramps and your own yard are all the same kind of row, with no per-port build behind any of them. What we do not have is a connection to any of their systems — and, today, not even the screen that creates that row: writes are not built yet. Planned
Does it know per diem is the line and demurrage is the terminal?
Yes, and it counts them separately. Demurrage accrues while the box is still inside the terminal past its last free day; per diem cannot charge a cent until there is a gate out, and stops when the empty is back. Both are counted in calendar days in the port's time zone. The daily rate resolves from the container override first, then from the steamship line record; if neither carries one, the arithmetic falls back to a built-in figure per day — a placeholder standing in for a contract we have not been told, not a rate we are claiming to know. A carrier-wide default you set once, and totals that add up line by line instead of on the fallback, are not built. Planned
Can it find street turns and dual transactions for us?
Not yet. The move types exist, a load can be linked to the load it was paired with, and the line record carries whether it authorizes street turns — the shape is there, the matching is not. When it arrives it will propose pairs on the board with the reason attached and wait for a dispatcher to say yes. Planned
Is anyone in New Jersey running on it today?
No. The operation we are building alongside is a New Jersey carrier running these terminals, and it has not been migrated — it still runs on the drayage TMS it pays for. When that changes we will say what moved, what did not, and what broke, rather than turning it into a case study.
We run both sides of the harbor. Is that two systems?
No. The pickup terminal and the empty return location are two separate fields on the container, and an appointment is its own record pointing at that box — nothing is keyed to a port, so a box crossing from a Newark pull to a Staten Island return is one container record and one row on the board. Whether multi-port ends up affecting what you pay is a pricing question that is not settled.
Go deeper
The same job, one screen at a time
The dispatch board — the rows, the derived status and the KPI tiles that count the whole operation.
Free time and per diem — how the clocks, the holds and the exposure in dollars are modeled.
Pools and splits — ownership, daily cost and who has the unit right now.
Street turns — authorization, compatibility and why the matching is not built yet.
Coming off a legacy drayage TMS: how a move would work. What lands next: the roadmap. What it will cost: pricing.
Early accessNY / NJ first
Put your own Newark lanes on it
We open one port at a time, and this is the one we know. Tell us your terminals, your chassis pools and which lines you carry, and we will run your own week through the board in front of you — including the parts where the honest answer is that it does not help you yet.
Smarter Drayage.
Stronger Connections.