
Problem
Freight forwarding involves many parties at once: consignees, shippers, forwarders, and overseas agents, each needing different information at different times. Keeping job records, vessel schedules, documents, and invoices consistent across all of them is where delays and errors creep in.
Approach
- Modelled the import job as one record moving through five stages, so operations, accounts, and partners all read from the same source.
- Fixed every job to a company, department, and branch at creation, and built access on configurable role permissions.
- Gave each audience its own surface: a staff workspace, a partner portal, and public tracking and vessel planning.
Technology
- React · Vite
- Node.js · Express
- MongoDB · Mongoose
- JWT sessions · role permissions
- Zod validation · Helmet · rate limiting
Result
Live at freightofy.com: a five-stage job workflow, branch-scoped records with full status history and an audit log, and a portal for four kinds of partners.