TMS platform for a freight company
Challenge
A freight company with 10+ dispatchers tracked loads in Excel and Telegram. New loads, status updates, invoicing — all done manually via messengers. No single source of truth: who's carrying what, who to invoice, how much was earned this week. Dispatcher payroll was calculated by hand every week, with inevitable errors.
What was built
A TMS platform built from scratch on Yii2/PHP — 20 modules covering the full operational cycle from load intake to payroll.
Dispatch Board
weekly board with date navigation, grouping by dispatcher and 23 data columns per row. Filters by load type, status and dispatcher. Inline search across the full table.
Load Detail Page
full load card with inline editing of every field, file manager (POD, BOL, invoice uploads), notes and a full change history log.
Billing Board
complete invoicing workflow: unbilled → ready → billed → paid. POD upload automatically moves a load to 'ready' and fires a dual notification (Telegram + in-app bell).
PDF Invoice Generation
automatic PDF invoice generation via dompdf using a branded template with broker details and load breakdown. One-click attach and download.
Accounts Receivable
invoice list with balance per broker, payment recording, 30/60/90-day Aging Report, Customer Statements PDF generation.
Payroll Module
weekly periods with lock/approve, individual rates per dispatcher, adjustments with notes. Payment log: who paid, when and with what comment.
Dispatcher Dashboard
personal dashboard with ApexCharts: KPI cards (week/month), Today (today's pickups and deliveries), Upcoming Pickups (next 3 days), Top Brokers by revenue, Action Items — RC Missing loads.
Finance Dashboard
admin-level analytics: weekly revenue, broker margin, dispatcher activity. Restricted to Admin and Billing roles only.
Owner Drivers
management of owner-operators: CRUD, load assignment, separate payroll calculation. Section access gated by role.
Direct Trip
separate load type (direct haul without cross-dock). Board icons, header filter, dedicated status flow.
Cross-dock Management
transshipment tracking: status history tabs, in/out monitoring, drag-reorder by priority.
Loadboard Integration
autofill carrier and cost by PRO#: the system searches the shared loadboard DB on number entry and offers one-click field population.
User Management
4 roles (Admin, Carrier, Dispatcher, Billing) with role-gated access to every section. User CRUD with dispatcher-to-load assignment.
Carrier & RateCon E-Sign
in-house e-signature engine over PDF (FPDI): carriers sign the Broker-Carrier Agreement and Rate Confirmation via a token link, 3 signing methods, audit trail, branded sign.* domain.
Cross-dock Payments
AP module for paying cross-dock vendors: amount pulled live from load accessorials, separate payment-status tracking, mirrors Carrier Pay.
General Expenses & Net Profit
overhead expense tracking (categories, recurring/one-off, per-month freeze) feeding a Net Profit summary on the Finance dashboard.
Warehouse Planner
consolidates warehouse loads by direction: total pallets and weight against capacity, selection and notes → create CARRIER OUT in one click.
Drive BOL Inbox
Google Drive integration: a BOL folder is polled every 30 min, documents land in an Incoming inbox and are attached to a load as the Original BOL.
Per-User Telegram Notifications
per-user notification preferences (3 scopes: global / own / digest), morning digests for admins and billing, an event catalog.
Delivered via Cross-dock
delivering a load through a cross-dock: a dedicated timeline flag, CD-cost and payroll handling without a duplicate trip.
Result
Excel fully replaced by a single platform. Dispatchers see all loads in real time without switching to Telegram. Billing automatically tracks payment status per load. New dispatcher onboarding reduced from a week to one day.
Tech stack
Have a similar challenge?
Discuss a projectNext case
E-signature
In-house e-signature for a TMS →