Butterfly Design Logo Butterfly Design Title
← Natrag na blog Case Study • Flutter • Legacy modernizacija

VB6 ERP → Flutter + Clean Architecture za 4 mjeseca

Butterfly Design • Ivan Rendulić  ·  Svibanj 2026

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.

4 mjeseca razvoja
36 Flutter ekrana
1 developer

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

Stari sustav
  • Visual Basic 6
  • Windows Forms UI
  • Direktan pristup bazi
  • Poslovna logika u UI kodu
  • Nema API-a
  • Lokalna instalacija
Nova platforma
  • 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:

Pretplatnici Pretplate Narudžbe Računi Dostavnice Opomene Bankovna izvoda Knjiženje Fiskalizacija Webshop narudžbe Katalog proizvoda Paketi Chat Korisnički kartoni PDF izvještaji Excel export

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.

1
Forenzika i jezgra

Rekonstrukcija poslovne logike iz VB6 koda. Postavljanje Clean Architecture jezgre u .NET-u. Stari sustav radi normalno.

2
Paralelni razvoj i "Legacy mode"

Nova platforma se razvija uz staru. Repository Pattern omogućuje usporedbu rezultata između sustava. Svako neslaganje se analizira i razrješava.

3
Testna faza (trenutno)

Korisnici rade u novom Flutter sučelju. Stari VB6 sustav još uvijek dostupan kao sigurnosna mreža. Prikupljaju se povratne informacije.

4
Produkcija

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.

Arhitekturni obrasci o kojima pišem na blogu
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