The problem
The client sells across multiple countries through different courier companies, with orders coming in from Shopify and supplier data arriving in whatever format that country uses — CSV, Excel, XML, often with local quirks (Croatian currency formatting, missing images, inconsistent reference data). All of that had to land in one place, linkable, auditable, with warehouses and packages tracked end to end. The manual version of this work didn't scale beyond a few countries.
What we built
Three services over one operational backbone. A React + Material UI dashboard through which the team runs orders, packages, warehouses, products, couriers, archives, and logs. A Node.js backend with the full operational model — orders, order changes, packages, package items, products, warehouses with transactions, couriers, invoices, change-audit log, plus Shopify integration on the input side. And a Python microservice that handles the heavy file-parsing part, with country-aware logic — different code paths for different supplier formats, so the team doesn't get broken data.
Modules & surfaces
- Operational dashboardA React + Material UI surface for the daily team — orders, packages, products, warehouses, archives, logs, with charts on the overview.
- Multi-format ingestCSV, Excel (xls/xlsx/xlsm), and XML — all handled by a dedicated Python service with logic tailored to each country and each supplier format.
- Shopify integrationOrders and items come in from Shopify as a first-class data source, alongside supplier files.
- Warehouses and transactionsWarehouses, packages, package items, and a transaction log over stock — the operational state of inventory at any moment.
- Couriers and invoicesCouriers and invoices are modelled as first-class entities, so multi-country delivery doesn't fragment the data.
- Audit log and archivesEvery change is recorded; old records are archived, not deleted. The team can always answer what changed and when.
- Live updatesChanges are shown in the dashboard live — no page refresh.