Web app

Majerski Transport

A company website and an internal order system in one. The client's file loads in a single upload, drivers report mileage from their phones, and settlement is calculated from tiered rates instead of a spreadsheet.

majerskitransport.pl
Client
Majerski Transport Piotr Majerski
Industry
Transport i spedycja
Year
2026
Scope
Company website · Order system · Driver app · XLSX import · Mileage settlement
majerskitransport.pl
Majerski Transport - desktop view
Majerski Transport - mobile view
962
orders from a single uploaded file
3 in 1
website, office panel and driver app
0
orders retyped by hand

01/

The challenge

Orders arrive as a file from the client's system - nine columns, the pickup address squeezed into one field, driver names written inconsistently: a trailing space here, a digit there, a company suffix somewhere else. Drivers reported mileage by phone or text, and settlements were built in a spreadsheet. At several hundred orders a month that meant retyping everything by hand, arguments over distances, and no record of who approved which amount.

02/

The solution

I built three parts into one application: a public website tuned for search, an office panel, and a driver panel designed for phones. The import takes the file exactly as it arrives. Pickup addresses are split into street, postcode and town, and ALL-CAPS names are normalised so filters stay consistent. Drivers are matched by a name comparison that ignores diacritics, spacing and word order - and when the spelling is too mangled, you point at the right person once and the system remembers it for future imports. An unrecognised driver is never guessed: the row waits for a human decision. Duplicates are caught by order number before anything is saved, so re-uploading the same file breaks nothing. Drivers see their own jobs on their phones and enter mileage there. The dispatcher approves it or sends it back. One decision mattered most here: transport status and settlement status are separate things. Sending mileage back for correction does not reopen a finished job - it only changes the settlement state, so the delivery history stays intact. Settlement uses tiered rates, one below two hundred kilometres and another above. The rate and amount are frozen at approval, so changing the price list later never rewrites last month's settlements.

03/

The outcome

The firm uploads a file instead of retyping orders - a single import covers close to a thousand rows. Drivers report mileage themselves, and the dashboard shows at a glance how many jobs await verification and how much is approved for payout. Every settlement records its rate and who approved it.

Tech stack

  • Next.js
  • React
  • TypeScript
  • PostgreSQL
  • Prisma
  • Tailwind CSS
  • ExcelJS
  • React PDF
Majerski Transport - view 1
Majerski Transport - view 2
Majerski Transport - view 3
Majerski Transport - view 4

Have a similar project? Let's talk.

Describe briefly what you want to achieve. You get a quote and a proposed scope back, usually within a day.

Get a quote
CallFree quote