VB6 ERP → Flutter + Clean Architecture za 4 mjeseca
Naš klijent je jedan od vodećih hrvatskih publishera s desetljećima tradicije. Njihov ERP sustav — upravljanje pretplatnicima, narudžbama, fakturiranjem, dostavom — bio je napisan u Visual Basicu 6. Sustav je godinama rastao organički — bez formalne dokumentacije, s poslovnom logikom rasutom kroz kod. A bio je kritičan za svakodnevno poslovanje.
Zadatak: modernizirati ga. Bez prekida rada, bez gubitka poslovne logike, bez "big bang" migracije koja može završiti katastrofom.
Polazišna točka: softverska forenzika
Čak i kad si ti pisao taj kod — godinama organskog rasta bez dokumentacije znači da je jedini pouzdan izvor istine sam kod. U Butterfly Designu to zovemo softverska forenzika — sustavno čitanje legacy koda kako bi se mapirala sva poslovna logika koja je u njemu zakopana.
VB6 kod sadržavao je desetljeća poslovnih odluka: pravila za obračun pretplata, logiku zatvaranja računa, posebne slučajeve fiskalizacije, uvjete za generiranje opomena. Ništa od toga nije bilo zapisano negdje drugdje — sve je bilo u kodu.
Forenzika je trajala tjedan dana. Rezultat: jasna mapa poslovnih pravila koja je postala temelj za Clean Architecture jezgru.
Arhitektura novog sustava
- Visual Basic 6
- Windows Forms UI
- Direktan pristup bazi
- Poslovna logika u UI kodu
- Nema API-a
- Lokalna instalacija
- Flutter (web + desktop)
- flutter_bloc + Beamer
- ASP.NET Core REST API
- Clean Architecture (.NET)
- SignalR real-time
- Docker + Caddy deploy
Backend je organiziran prema Clean Architecture principima — četiri odvojena projekta koji jasno definiraju granice odgovornosti:
Adrema.Domain — entiteti i poslovna pravila. Ne ovisi ni o čemu.
Adrema.Application — use caseovi i aplikacijska logika. Ovisi samo o Domain sloju.
Adrema.Infrastructure — baza podataka, vanjski servisi, fiskalizacija. Implementira sučelja iz Application sloja.
Adrema.Api — REST API koji orkestrira sve. Flutter frontend komunicira isključivo s ovim slojem.
Što je pokriveno
36 Flutter ekrana pokriva kompletno poslovanje izdavačke kuće:
Migracija bez prekida: Repository Pattern u praksi
Najveći strah kod svake migracije je isti: što ako nova platforma ne pokrije sve poslovne slučajeve koje stara pokriva? Što s podacima koji su u produkciji dok razvoj još traje?
Odgovor je bio Repository Pattern s paralelnim radom — isti pristup opisan u teorijskom članku. U git historiji projekta to je zabilježeno kao "Legacy covering" i "Legacy mode" — faze u kojima su oba sustava radila istovremeno, s mogućnošću usporedbe rezultata.
Rekonstrukcija poslovne logike iz VB6 koda. Postavljanje Clean Architecture jezgre u .NET-u. Stari sustav radi normalno.
Nova platforma se razvija uz staru. Repository Pattern omogućuje usporedbu rezultata između sustava. Svako neslaganje se analizira i razrješava.
Korisnici rade u novom Flutter sučelju. Stari VB6 sustav još uvijek dostupan kao sigurnosna mreža. Prikupljaju se povratne informacije.
Stari sustav se gasi. Nova platforma preuzima potpunu kontrolu. Bez drame, bez gubitka podataka.
Tehnički detalji koji čine razliku
Nekoliko tehničkih odluka obilježilo je ovaj projekt:
SignalR za real-time komunikaciju. Određeni poslovni procesi zahtijevaju trenutnu obavijest — fiskalizacija, potvrde narudžbi, statusne promjene. SignalR je omogućio push notifikacije prema Flutter klijentu bez pollinga.
Flutter web + desktop iz jednog koda. Isti Flutter kod radi kao web aplikacija (Caddy servis) i kao desktop klijent. Nema dupliciranja logike, nema sinkronizacijskih problema između platformi.
PDF i Excel export u klijentu. Generiranje izvještaja i izvoza podataka rješeno je direktno u Flutter aplikaciji — bez serverskog renderiranja, bez čekanja.
Docker deployment. Cijela infrastruktura — API, baza, web server — pakirana u Docker compose konfiguraciju. Deploy je reproducibilan i predvidljiv.
nisu teorija. Ovo je jedan od projekata koji ih dokazuje.
Što sam naučio
Svaki legacy modernizacijski projekt nauči nešto novo. Na ovom projektu potvrda je bila jasna: najveći rizik nije tehnologija — nego nevidljiva poslovna logika. Desetljeća rubnih slučajeva, iznimki i posebnih pravila koja nikad nisu bila dokumentirana, ali su bila vitalna za svakodnevno poslovanje.
Softverska forenzika kao prvi korak nije opcija — to je preduvjet. Bez nje, svaka migracija je igra na sreću.
Imate sličan sustav — star, kritičan za poslovanje, nedokumentiran? Razgovarajmo o tome što je moguće.
Zatraži besplatnu procjenu