RailMarket: marketplace for rail freight requests
Logistics marketplace: rail freight requests, wagon search, GU-12, contracts, commission and VAT. WAPP case study.

In rail freight logistics, matching wagons and cargo long meant phone calls, spreadsheets, and personal networks. Shippers could not see available rolling stock in one place. Operators could not browse freight requests by station and dates. Document flow — price, contract, and form GU-12 — was done by hand.
The client needed a marketplace where shippers and rolling-stock operators find each other online, agree on price, and close with signed documents. Early working name was eVagon; the product shipped and was designed as RailMarket — a web service for railway freight in Russia and the CIS.
6 mo.
discovery to release
3
cabinets / roles
5
deal statuses
GU-12
in the deal flow
01. Brief
Build a logistics product for rail cargo where:
- a shipper posts a freight request and searches for wagons;
- an operator manages rolling stock and searches for cargo;
- both sides chat, agree on price and loading windows;
- the system runs industry document flow: contract, invoice, GU-12;
- platform admins see companies, proposals, and conversations in a separate panel.
Timeline: six months. Four WAPP specialists covered discovery, design, frontend, and backend.
02. Three cabinets
Shipper cabinet
Company registration, profile, and freight request list. “Send cargo”: origin/destination stations, cargo type, wagon types, loading dates. Results show matching stock; the shipper can request a quote. Map search (Yandex Maps) and status-based negotiation sit in the same flow.
Sign-up: shipper or operator
Role split at registration drives the whole permission and visibility model.
Operator cabinet
Fleet management, “Find cargo”, filters by stations, dates, cargo type, and status. From a request card the operator sends an offer: loading dates, price ex-VAT, and a message. Deal statuses: new → formalizing → in progress → done (plus canceled).
Rolling stock
Operators maintain wagon inventory — otherwise matching has nothing to match against.
Admin and company staff
Besides shipper and operator cabinets, the product includes company staff management (roles, activation, access). Separately, a platform React Admin app covered companies, proposals, conversations, and wagons for support staff.
03. Product scope
Profile, search, negotiation
Registration splits sender and operator. Search uses cargo/wagon types, dates, stations, and radius. After mutual agreement the parties chat with price and loading windows; admins can join when needed.
Company profile
Requisites feed contracts and invoices — no retyping on every deal.
Document flow: GU-12, contracts, commission and VAT
- Contract PDF from the freight request and counterparty details.
- Invoice with platform commission and VAT calculated in the API.
- Parties download, sign, and upload signed files.
- Shipper enters the GU-12 number on the deal card.
- Both cabinets see document progress online.
Stack (2019 repos)
Client: Next.js 9, React 16.9, Material-UI 4, Redux/Saga, Yandex Maps, GTM
Admin: React Admin 2.x
API: Node.js, Express 4, MongoDB/Mongoose 5, JWT, HTML-to-PDF, Nodemailer, Telegram bot, Swagger
04. Outcome
A working logistics marketplace for railway freight: freight requests, search, negotiation, industry document flow (GU-12, contracts, commission, VAT), and clear deal status across three cabinets.
See also SWAPPZ fleet management, the logistics solutions hub, and electronic waybills / e-TN.
Need a freight marketplace or cabin?
Building a marketplace, TMS, or shipper/carrier portal — we map document flow and matching first.
Discuss the project — also logistics solutions and SWAPPZ.