Core concepts
Your data
Where your company's data lives, how it is kept apart from every other company, the audit trail, money and dates, files, backups, export and deletion.
Your company is sealed off
Every brokerage on Harbor is its own org. Every row in the database carries the org it belongs to, and two independent locks keep orgs apart:
- In the software. Every query is automatically limited to your org. There is one door to company data in the code, and it always adds your org.
- In the database. PostgreSQL row-level security refuses to return another org's rows, even if the software above it had a bug.
An automated test proves that org A can never read org B's rows, and that every table holding company data has the database lock.
Everything is recorded
Every save writes an audit event: who, what, which record, when, and what changed. No exceptions: creating a load, changing a rate, approving a carrier, exporting a report, changing a permission.
- The audit log is append-only. The application cannot edit or delete an entry, and the database itself blocks changes to past entries for everyone.
- Refused access is recorded too (
security.access_denied), so attempts to open something you should not show up on Security. - Read and search it on the Audit log.
Money is exact
All money is stored as whole cents, never as decimals that can round. $1,234.56 is stored as
123456. Margins, commissions, fees and totals are calculated in cents and only formatted for
display. Amounts are US dollars.
Dates are business dates
Dates that mean a day (last free day, pickup date, invoice date) are stored as dates, without a time, so a load delivered "on the 8th" is the 8th in every time zone. Events (a sign-in, a check call) are stored with an exact time and shown in your company's time zone, set on Company profile.
Files
Uploaded files (PODs, insurance certificates, W-9s, BOLs) and generated PDFs are kept in private file storage under your org's own folder, with generated names. Uploads are:
- judged by their actual content, not by the file name, so a renamed program is refused,
- size-capped,
- downloadable only by people who can see the record they belong to.
Secrets stay on the server
Passwords are hashed with argon2id. Integration keys (FMCSA, Stripe and others) are stored on the server and never sent to the browser. Two-factor secrets are never shown again after setup.
Backups
The server makes a nightly backup of the database and the file store and copies it off the machine; a backup that only exists on the same disk does not count. Each company can also export its own data at any time.
| You want | Where |
|---|---|
| A copy of everything, to keep or move | Backup & restore and Export & close the account |
| To restore a company's data from an export | Backup & restore |
Closing an account
The owner can close the company's account. The team loses access straight away, the subscription is cancelled, and for 30 days the owner can change their mind and reopen it. After 30 days the data is permanently erased from the live service; backups age out on their normal schedule. See Export & close the account.