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


- 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




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