Back
An e-commerce operator across multiple countries · 2021 – active

An operational system for multi-country e-commerce — orders, warehouses, packages, couriers, and data ingest from multiple formats

The operational backbone for an e-commerce operator working across multiple countries. Three services in one product: a dashboard for the team, a backend that holds the state, and a Python service that imports data in any format suppliers and couriers send.

The story

When the supplier sends a CSV one day, an Excel the next, and the courier from another country sends XML — the operational system has to absorb all of it without anyone typing anything.

Worth noting

  • · Three services, one operational backbone: dashboard, backend, Python processor
  • · CSV, Excel, XML, Shopify — all into one system, no retyping
  • · One of the first big production systems in the portfolio, still running

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.

How we approached it

We separated responsibilities by what each part is good at. The Node backend holds the operational model and the API. The Python service does file parsing because Pandas is the right tool for CSV-and-Excel tangles. The dashboard is just a window into the backend, not a parallel source of truth. The Python service is locked to localhost — only the backend can call it, a clean boundary, no surprise inputs.

Outcome

The team runs day-to-day operations across multiple countries from one dashboard, not from a pile of spreadsheets and emails. Supplier and courier data lands in the system automatically regardless of format. One of the first big production systems in the portfolio, still running. Several hundred orders a day go through the system, closer to a thousand than to hundreds.

In use