projekti/Backend · Integracija
Dvosmjerni sync · WooCommerce konektor

Webshop × Pantheon

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.

Uloga

Backend arhitektura · izrada integracije · isporuka

Tehnologije

NestJS · BullMQ · PostgreSQL

Godina

2026

Status

U nastajanju

arhitektura · dvosmjerna sinkronizacija
IzvorWebshop
webhook / kanonski JSON
Proces 01Receiver
200 · u red
BrokerRedis Queue
posao
Proces 02Worker
stored procs
ERPPantheon
└▶
ERPPantheon
status + JIR
Proces 02Worker
konektor
KanalWebshop
PDF · SMTP
PrimateljKupac
2-wayNarudžbe, statusi i katalog - u oba smjera
0Ručnih prepisivanja između sustava
0%Prodaja do fiskaliziranog računa
Izazov

Što ovo rješava.

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.

Naš pristup

Jezgra je neovisna o platformi. Konektor nije.

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.

Mogućnosti

Što servis radi, neovisno o platformi.

  • Narudžbe unutra. Narudžba se upisuje u Pantheon kroz pohranjene procedure - nikad izravnim zapisom u tablice - uz prethodno osiguranje kupca i numeriranje dokumenata koje ostaje u vlasništvu ERP-a.
  • Status u oba smjera. Trgovina → ERP (plaćeno, otkazano) i ERP → trgovina (potvrđeno, u obradi, poslano, dovršeno), uz idempotentne prijelaze koji ne stvaraju petlje ni duple događaje.
  • Zalihe, cijene i proizvodi - u oba smjera. Bez obzira započinje li promjena u trgovini ili u Pantheonu.
  • Hrvatska fiskalizacija, vlastita izvedba. Generiranje ZKI-ja, digitalno potpisani XML (XML-DSig), razmjena s FINA-inim servisom, JIR i QR kod na računu. Bez posrednika i bez third-party fiskalizacijskog servisa.
  • Račun u inbox. PDF renderiran headless Chromiumom i poslan kupcu e-mailom putem SMTP-a u trenutku kad je prodaja fiskalizirana.
  • Otporno i idempotentno. Trajan red poslova s ponovnim pokušajima i eksponencijalnom odgodom, stanje sigurno na pad procesa, obrada dead-letter poruka i automatsko ponovno spajanje na trgovinu i ERP.
  • Nadzorljivo. Strukturirano JSON bilježenje s korelacijskim ID-jem kroz cijeli životni ciklus događaja, health i readiness provjere za svaku ovisnost, i nadzorna ploča reda poslova.
  • Konfigurabilna poslovna pravila. Mapiranje statusa, skladišta, poreznih stopa, popusta i predložaka računa su postavke po okruženju, ne izmjene koda.
Arhitektura

Jedan servis, dva smjera.

Proces 01

Receiver

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.

Proces 02

Sync Worker

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.

Obje veze - trgovina i Pantheon ERP - automatski se ponovno spajaju nakon prekida. Lokalno stanje, ključevi idempotentnosti i revizijski zapis žive u PostgreSQL-u, uz Redis kao broker. ERP i trgovina su izvori istine; middleware drži samo ono što mu treba da posao ne izgubi i ne ponovi.
Što se sinkronizira

Sve što pokreće prodaju.

Nova narudžbaWebshop PantheonJednosmjerno
Status narudžbeWebshop PantheonDvosmjerno
Zalihe, cijene i proizvodiWebshop PantheonDvosmjerno
FiskalizacijaZKI / JIR · FINA
RačunPDF → e-mail kupcaJednosmjerno
Podržane trgovine

Tri načina spajanja.

  • WooCommerce - potpun konektor, REST API i webhookovi. Integracijski testiran.
  • Bilo koja trgovina, ulazni tijek - narudžbe se šalju kao kanonski JSON na naš objavljeni endpoint, prema OpenAPI/Swagger specifikaciji. Bez konektora.
  • Ostale platforme, puni dvosmjerni tijek - Shopify, Magento, PrestaShop ili vlastita trgovina, kroz implementaciju istog konektorskog sučelja. Jezgra ostaje netaknuta.
Sigurnost i predaja

Najmanje ovlasti, ništa vani.

  • Provjera potpisa dolaznih webhookova i autentikacija tokenom na kanonskom endpointu; odbacuje se sve što ne prođe shemu.
  • Nikakvi izravni zapisi u ERP tablice; namjenski integracijski korisnik umjesto administratorskog računa.
  • Tajne, API ključevi i certifikati isključivo iz okruženja - nikad u repozitoriju ni u slici.
  • Isporuka bez izvornog koda: aplikacija se u sliku pakira prevedena u V8 bytecode, pa čitljiv izvorni kod nikad ne dolazi na tuđu infrastrukturu. Isporučuje se samo slika.
Smještaj

Dvije opcije smještaja.

Servis se isporučuje kao Docker slika, pa se jednako vrti bilo gdje - a trgovac bira gdje.

Opcija 01

Na infrastrukturi trgovca

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.

Opcija 02

Na našoj infrastrukturi, kao upravljana usluga

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.

U oba slučaja isti je kod, dokumentacija i ponašanje - razlika je samo u tome tko drži poslužitelj.
Tehnologije

Odabrano zbog pouzdanosti.

Okruženje / jezikNode.js 20+ · TypeScript 5 (strogi način)
FrameworkNestJS 10
Red poslovaBullMQ + Redis
Pohrana stanjaPostgreSQL + Prisma
Sučelje trgovineKonektor po platformi (WooCommerce REST + Webhooks) · kanonski REST endpoint
Pristup ERP-uMS SQL Server - izravni TDS, pohranjene procedure
FiskalizacijaPotpisani XML (XML-DSig) · node-forge · QR kodovi
PDF računaHeadless Chromium (Puppeteer)
E-mailSMTP (Nodemailer)
Nadzorljivostpino · Swagger / OpenAPI · Bull Board
IsporukaDocker + Docker Compose
Za koga

Middleware, ne jednokratna integracija.

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.

Status

Gdje se nalazi.

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.

u aktivnom razvoju · živi Pantheon + staging trgovina
  • zaprimanje narudžbe (webhook + kanonski endpoint)
  • osiguranje kupca
  • ERP narudžba i račun
  • status zrcaljen u oba smjera
  • sinkronizacija zaliha, cijena i proizvoda
  • fiskalizacija (ZKI / JIR)
  • PDF račun poslan e-mailom
  • kontejnerizirano + nadzorljivo
  • WooCommerce konektor
  • prijelaz na produkcijski certifikat
  • dodatni konektori (Shopify, Magento)
Sljedeći projekt

UKCA

OTVORENI ZA NOVE PROJEKTE

Imaš sličan projekt?

Reci nam što gradiš. Javljamo se u roku od jednog radnog dana s jasnim planom, rokovima i pravom osobom za razgovor.