Aplikacija za isporuku na više platformi s Flutter
Pregled
QuickDeliver d.o.o., rastući uslugu dostave na zahtjev koja djeluje na tri glavna grada u Hrvatskoj, suočila se s kritičnim izazovom: trebala joj je mobilna aplikacija za iOS i Android platformu, ali je imala ograničen proračun i tesnu vremensku liniju. Njihov poslovni model zahtijevao je praćenje u realnom vremenu, obradu plaćanja i besprijekornu korisničku iskustvo koje bi konkuriralo uspostavljenim igračima na tržištu. Umjesto sljeđenja tradicionalnog pristupa gradnji odvojenih nativnih aplikacija, preporučili smo Flutter — okvir za više platformi koji bi omogućio QuickDeliver-u da ga postavi na obje platforme istovremeno s jednom bazom koda. Tijekom četiri mjeseca, dizajnirali smo i isporučili bogatu aplikaciju za dostavu koja je postala jedna od najbolje ocijenjenih aplikacija za dostavu na hrvatskom tržištu.
Izazov
Poslovni zahtjevi QuickDeliver-a stvaraju višestruke tehničke i organizacijske izazove: **Pokrivanje više platformi**: Tvrtka je trebala simultanu podjelu na iOS i Android kako bi poslužila sve korisnike pametnih telefona. Gradnja odvojenih nativnih aplikacija u Swift-u i Kotlin-u zahtijevala bi dva razvojna tima, dvostrukog troška i vremensku liniju. **Zahtjev za praćenjem u realnom vremenu**: Kupci su očekivali direktno, točno praćenje dostave s minimalnom kašnjenjem. Vozači su trebali ažuriranja navigacije u realnom vremenu i informacije o narudžbama. Sustav je trebao rukovati tisućama istovremenih korisnika koji prate dostave istovremeno. **Složenost integracije plaćanja**: Aplikacija je trebala sigurno obraditi plaćanja koristeći Stripe, rukovati s više metoda plaćanja (kartice, digitalne novčanike), podržati djelomične povrate i održavati PCI sukladnost—sve dok pruža besprijekornu korisničku iskustvo. **Performanse na raznolikim uređajima**: Aplikacija je trebala glatko raditi na brendiranim telefonima visokog kraja i starijim uređajima s ograničenom RAM memorijom i procesorskom snagom. Performanse se nisu mogle značajno degradirati na starijim Android uređajima koji dominiraju njihovom bazom korisnika. **Tešna vremenska linija i proračun**: QuickDeliver je imao projicirani rast, ali nije mogao priuštiti skupan, dugotrajan razvoj. Trebali su se lansirati na tržištu prije nego što su konkurenti objavili bolja rješenja. Proračun za dva odvojena nativna tima nije bio dostupan. **Složeno upravljanje narudžbama**: Backend je trebao rukovati kreiranjem narudžbe, dodijeljivanjem vozača, ažuriranjima statusa u realnom vremenu, obavijestima klijenta i obradom plaćanja—sve usklađeno na web i mobilnim platformama. **Zahtjevi za skalabilnost**: Promet je bio nepredvid. Tijekom vršnih sati u gradskim središtima, sustav je trebao rukovati stotinama istovremenih narudžbi bez degradacije performansi.
Naše Rješenje
Arhitekturirali smo sveobuhvatno mobilno rješenje koristeći Flutter za klijentsku aplikaciju, Firebase za mogućnosti u realnom vremenu i prilagođeni Node.js backend za poslovnu logiku i obradu plaćanja. **Flutter za izvrsnost na više platformi**: Flutter je dao savršen balans performansi, brzine razvoja i konzistencije više platformi. Gradili smo jednu bazu koda koristeći Dart koji se kompajlira u nativne iOS i Android binarne. Ovaj pristup dao je: - Jednu bazu koda s 95% dijeljenja koda između platformi - Nativne performanse na iOS i Android - Hot reload za brzu iteraciju razvoja - Konzistentan UI/UX preko platformi koristeći Material Design **Pregled arhitekture**: Aplikacija slijedi slojni oblik arhitekture: - **Sloj prezentacije**: Flutter UI komponente organizirane po značajci (autentifikacija, praćenje narudžbe, povijest dostave) - **Sloj poslovne logike**: Upravljanje stanjem koristeći Riverpod za predvidivo, testabilno upravljanje stanjem - **Sloj podataka**: Integracija API-ja s našim Node.js backend-om, lokalna SQLite baza za rad bez veze **Praćenje u realnom vremenu s Firebase**: Integrirali smo Firebase Realtime Database za ažuriranja praćenja u realnom vremenu, otklanjajući potrebu za neprekidnim sondiranjem. Kada se lokacija vozača ažuri, svi kupci koji prate tu dostavu primaju ažuriranje u roku od 1-2 sekunde. Firebase-ova ugrađena pravila sigurnosti osiguravaju da kupci mogu vidjeti samo svoju informaciju o dostavi. **Integracija Google Maps**: Ugradili smo Google Maps za vizualizaciju rute, turn-by-turn navigaciju za vozače i odabir lokacije dostave za kupce. Prilagođeni marker mapa prikazuju lokacije vozača u realnom vremenu s indikatorima točnosti. **Obrada plaćanja s Stripe**: Integracija Stripe obrađuje plaćanja sigurno. Aplikacija podržava: - Plaćanja karticom/debitnom karticom (spremljena za jednoklik isplatu) - Plaćanja digitalnim novčanikom (Apple Pay, Google Pay) - Preusmjeravanje promo koda - Djelomična plaćanja i dijeljenje naplata za skupne narudžbe - Automatizirana obrada povrata Svi osjetljivi podaci o plaćanju su tokenizirani—aplikacija nikad direktno ne obrađuje informacije kreditne kartice. **Funkcionalnost bez veze**: Aplikacija cachira povijest narudžbe i podatke karte lokalno koristeći SQLite. Ako je veza privremeno prekinuta, korisnici mogu i dalje vidjeti status svoje trenutne dostave i prethodne narudžbe. Promjene se automatski sinkroniziraju čim se veza vrati. **Push obavijesti**: Implementirali smo Firebase Cloud Messaging za push obavijesti. Kupci primaju obavijesti za potvrdu narudžbe, dodjelu vozača, ažuriranja lokacije i završetak dostave. Vozači primaju obavijesti za nove dodjele narudžbe s optimalnim rutama dostave. **Optimizacija slika**: Fotografije dostave i slike dokaza dostave se automatski kompresiraju i optimiziraju za mobilne mreže. Implementirali smo sofisticirane strategije cachiranja kako bi smanjili konzumiranje propusnog pojasa za 70% u odnosu na naivne implementacije.
Rezultati
“Samioda je isporučila točno ono što nam je trebalo — lijepu, brzu aplikaciju za isporuku koja savršeno funkcionira na iOS i Android. Flutter pristup nam je uštedjela mjesecima razvoja, a performanse aplikacije su nerazlikovne od nativnih.”
Spremni pokrenuti svoj projekt?
Razgovarajmo o tome kako možemo pomoći transformirati vaše poslovanje.