Middleware servis koji povezuje webshop s Pantheon ERP-om u oba smjera - narudžbe, statusi, zalihe, cijene i proizvodi ostaju usklađeni, a svaka prodaja ide do fiskaliziranog računa poslanog e-mailom. Platformski neovisna jezgra, konektor po platformi. Prvi konektor: WooCommerce.
Backend arhitektura · izrada integracije · isporuka
NestJS · BullMQ · PostgreSQL
2026
U nastajanju
Trgovina se vodi na webshopu, a poslovanje u Pantheon ERP-u - i to su dva odvojena svijeta. Narudžbe se prepisuju ručno, statusi se razilaze, zalihe i cijene se ne slažu, a hrvatska fiskalizacija odvija se - ako uopće - kao zaseban ručni korak.
Nitko to nije naručio jer se pretpostavlja da drukčije ne ide. Mi smo izgradili servis koji ta dva sustava tjera da se ponašaju kao jedan: prodaja se odmah pojavi u Pantheonu, promjene statusa zrcale se u oba smjera, katalog ostaje usklađen, a kupac dobije ispravan fiskalizirani račun - bez ičijeg dodira.
Servis stoji na istim temeljima kao naš jednosmjerni Pantheon middleware - ali je dvosmjeran. Sve što je specifično za pojedinu trgovinu živi u tankom konektoru; sve ispod njega - red poslova, upis u ERP, fiskalizacija, PDF, e-mail, revizijski zapis - zajedničko je i ne mijenja se od platforme do platforme.
Ulazni tijek radi s bilo kojim webshopom. Narudžba dolazi ili preko konektora za platformu, ili izravno kao naš kanonski JSON na objavljeni endpoint. Trgovina koja može poslati HTTP zahtjev može slati narudžbe - bez konektora, bez čekanja na nas.
Povratni tijek traži konektor po platformi. Da bismo gurnuli status, zalihu ili cijenu natrag u trgovinu, moramo govoriti njezinim API-jem. Zato je konektor jasno ograničeno sučelje s malim brojem operacija - dohvati narudžbu, postavi status, ažuriraj zalihu i cijenu, upiši proizvod. Novi konektor znači implementirati to sučelje, a ne graditi novi servis.
WooCommerce je prvi konektor - REST API i webhookovi, potpuno pokriven i integracijski testiran. Isti oblik primjenjuje se na Shopify, Magento, PrestaShop ili vlastitu trgovinu.
Prima događaje iz trgovine - webhook s provjerom potpisa, ili kanonski JSON s autentikacijom tokenom. Validira, stavlja posao u red i odmah vraća 200 OK. Trgovina nikad ne čeka ERP.
Upisuje narudžbe u Pantheon, zrcali statuse, sinkronizira zalihe, cijene i proizvode, fiskalizira i šalje račun e-mailom - gurajući promjene iz ERP-a natrag u trgovinu kroz konektor, uz ponovne pokušaje u svakom koraku.
Servis se isporučuje kao Docker slika, pa se jednako vrti bilo gdje - a trgovac bira gdje.
Servis radi unutar njihove mreže, uz Pantheon, bez izlaganja ERP-a prema van. Dobivaju sliku, docker-compose postavke i runbookove za deploy, backup i rollback. Podaci nikad ne napuštaju njihovo okruženje, a mi ostajemo dostupni za podršku i nadogradnje.
Mi vrtimo, nadziremo i održavamo servis, s odvojenim produkcijskim i test okruženjem. Trgovac dobiva URL i pristupne podatke, i ne brine o poslužitelju, ažuriranjima ni certifikatima. Potreban je jedino siguran mrežni put do njihove Pantheon instance.
Servis je izgrađen kao proizvod, a ne kao izvedba po mjeri jednog trgovca. Jezgra, pristup Pantheonu i fiskalizacijski sloj su općeniti; ono što se razlikuje od trgovine do trgovine - vjerodajnice, certifikat, skladišta, mapiranje statusa, porezne stope, predlošci računa - su postavke okruženja.
Za trgovinu na podržanoj platformi, uvođenje se svodi na konfiguraciju i provjeru na testnom okruženju - ne na novi razvojni ciklus. Za novu platformu, dodaje se konektor; sve ostalo već postoji i već radi u produkciji.
Projekt je u aktivnom razvoju. Cijela petlja je izgrađena i integracijski testirana protiv žive Pantheon instance i staging trgovine: narudžba unutra → osiguranje kupca → ERP narudžba → zrcaljenje statusa → fiskalizacija → PDF → e-mail.
Kontejnerizirano i nadzorljivo. Prijelaz na produkcijski fiskalizacijski certifikat dokumentiran je kao runbook - isti postupak koji je već proveden na našem jednosmjernom Pantheon middlewareu, koji je u produkciji.
Reci nam što gradiš. Javljamo se u roku od jednog radnog dana s jasnim planom, rokovima i pravom osobom za razgovor.