Problem
Klijent prodaje u više zemalja kroz različite kurirske kompanije, sa porudžbinama koje dolaze iz Shopify-a i podacima dobavljača koji stižu u bilo kom formatu koji ta zemlja koristi — CSV, Excel, XML, često sa lokalnim specifičnostima (hrvatsko formatiranje valute, slike koje fale, neusklađeni šifarnici). Sve to je moralo da sleti na jedno mesto, povezivo, revizibilno, sa magacinima i paketima praćenim od početka do kraja. Ručna verzija ovog posla nije skalirala preko nekoliko zemalja.
Šta smo napravili
Tri servisa nad jednom operativnom kičmom. React + Material UI dashboard kroz koji tim vodi porudžbine, pakete, magacine, proizvode, kurire, arhive i logove. Node.js backend sa punim operativnim modelom — porudžbine, izmene porudžbina, paketi, stavke paketa, proizvodi, magacini sa transakcijama, kuriri, fakture, audit log izmena, plus Shopify integracija na strani ulaza. I Python mikroservis koji obavlja teški deo parsiranja fajlova, sa logikom svesnom zemlje — različite putanje koda za različite formate dobavljača, tako da tim ne dobija pokvarene podatke.
Moduli i celine
- Operativni dashboardReact + Material UI površina za dnevni tim — porudžbine, paketi, proizvodi, magacini, arhive, logovi, sa graficima na pregledu.
- Uvoz iz različitih formataCSV, Excel (xls/xlsx/xlsm) i XML — sve obrađuje poseban Python servis sa logikom prilagođenom svakoj zemlji i svakom formatu dobavljača.
- Shopify integracijaPorudžbine i stavke ulaze iz Shopify-a kao prvoklasan izvor podataka, paralelno sa fajlovima dobavljača.
- Magacini i transakcijeMagacini, paketi, stavke paketa i transakcioni log nad zalihama — operativno stanje stoka u svakom trenutku.
- Kuriri i faktureKuriri i fakture su modelovani kao prvoklasni entiteti, pa multinacionalna isporuka ne razbija podatke.
- Audit log i arhiveSvaka izmena se zapisuje; stari zapisi se arhiviraju, ne nestaju. Tim uvek može da odgovori šta se promenilo i kada.
- Ažuriranja uživoPromene se prikazuju u dashboard-u uživo — bez osvežavanja stranice.
Kako smo pristupili
Razdvojili smo odgovornosti po onome u čemu je svaki deo dobar. Node backend drži operativni model i API. Python servis radi parsiranje fajlova jer je Pandas pravi alat za CSV-i-Excel zavrzlame. Dashboard je samo prozor u backend, ne paralelni izvor istine. Python servis je zaključan na localhost — samo backend može da ga zove, čista granica, bez iznenadnih ulaza.
Rezultat
Tim vodi dnevno poslovanje kroz više zemalja iz jednog dashboard-a, ne iz gomile tabela i email-ova. Podaci dobavljača i kurira automatski sleću u sistem bez obzira na format. Jedan od prvih velikih produkcijskih sistema u portfoliu, i dalje radi. Kroz sistem prolazi više stotina porudžbina dnevno, bliže hiljadu nego stotinama.