Mixbox
Marketplace multi-vendor pentru produse locale, cu un singur coș pentru mai multe magazine, aplicații separate pentru client, comerciant și curier, plăți flexibile și un sistem avansat de import și administrare a cataloagelor furnizorilor.

Stack principal
Provocarea
Adaptarea unei baze multi-vendor generale la operațiunile Mixbox a cerut coordonarea a patru codebase-uri și a unor fluxuri care se influențează reciproc: un coș cu produse din mai multe magazine, calcul separat al livrării, o singură experiență de plată, vizibilitate izolată pentru fiecare comerciant, statusuri sincronizate cu curierul și un catalog alimentat de feed-uri eterogene. La scară de catalog, o abordare naivă cu interogări și salvări pentru fiecare câmp al fiecărui produs ar fi produs timpi mari, consum de memorie și taxonomii inconsistente. În același timp, plata digitală trebuia să poată fi solicitată numai după ce magazinul confirmă procesarea, fără să reseteze progresul comenzii.
Soluția
Laravel 10 și baza de date relațională centralizează identitatea, autorizarea, catalogul, comenzile, plățile, livrarea și regulile comerciale într-un API comun pentru cele trei aplicații Flutter. Checkout-ul multi-store grupează coșul server-side și reutilizează fluxul validat de comandă pentru fiecare magazin, adăugând OrderGroup pentru plata digitală consolidată. Importurile folosesc loturi de 200 de produse, cache warm-up, preîncărcarea produselor și logurilor, buffer-e pentru inserări și relații, progres persistent și reluare, iar produsele dispărute dintr-un feed sunt scoase din stoc fără a afecta produsele introduse manual. Un resolver central păstrează aceeași taxonomie în preview, JSON, CSV/Excel și Feed Category Manager. GetX separă controllerele, serviciile și repository-urile de UI în aplicațiile Flutter; Firebase, hărțile și API-urile geospațiale sincronizează notificările și livrarea, iar GitHub Actions automatizează build-urile și publicarea pe infrastructura web existentă.
Complexitate notabilă
Mixbox coordonează într-un singur produs clienți, magazine, curieri, manageri de livrare și administratori. Clientul folosește o aplicație Flutter disponibilă pe mobil și web pentru localizare, descoperirea magazinelor și produselor, favorite, coș, checkout, plăți, urmărirea comenzilor, istoric, review-uri și suport. Magazinul primește propria aplicație Flutter pentru comenzi, statusuri, catalog, stoc, cupoane, program, facturi, încasări și operațiuni POS, iar curierul are o aplicație separată pentru disponibilitate, cereri de livrare, acceptare, navigare, localizare, dovezi de plată, cash collection, wallet și istoric. Backend-ul Laravel deservește toate aceste experiențe și include API-ul comun, panoul de administrare și interfața dedicată managerului de livrare.
Produsul pornește de la baza comercială SixAMart, dar codul Mixbox adaugă și extinde fluxuri care schimbă substanțial funcționarea standard. Checkout-ul permite produse din mai multe magazine în același coș: backend-ul grupează pozițiile după store, validează separat fiecare magazin și creează comenzi distincte, cu distanță și taxă de livrare calculate per magazin, cupoane distribuite proporțional și bacșiș împărțit controlat între livrări. Pentru plata digitală multi-store este creat un OrderGroup care permite achitarea consolidată a comenzilor rezultate, fără ca fiecare magazin să vadă sau să opereze produsele celorlalți.
O componentă majoră este administrarea cataloagelor provenite de la furnizori. Mixbox acceptă feed-uri JSON, CSV, XLS și XLSX, import manual sau programat, preview, normalizarea coloanelor, procesare în loturi, reluare de la ultimul index procesat, loguri de import și actualizarea produselor existente după SKU. CategoryResolverService centralizează aceeași regulă pentru preview și import: maparea explicită pe SKU are prioritate, urmată de maparea taxonomiei sursă, potrivirea directă și, în lipsa unei rezolvări valide, trimiterea produsului în zona Necategorisite pentru revizuire. Feed Category Manager permite mapări simple sau compuse, crearea de categorii, mutarea produselor existente, ignorarea surselor și sincronizarea imaginilor. SKU Mapping-ul implementat este o regulă de clasificare feed-specifică sau generală; nu este prezentat în portofoliu ca un sistem de consolidare automată a stocurilor între furnizori, deoarece codul actual nu demonstrează acel mecanism.
Comenzile trec prin stări operaționale comune aplicațiilor: pending, confirmed, accepted, processing, handover, picked_up și delivered, cu ramuri pentru anulare, eșec și refund. Backend-ul verifică zona geospațială, programul și disponibilitatea magazinului, limitele de cantitate, variațiile, stocul, cupoanele, taxele, costurile de livrare, vehiculul și restricțiile metodei de plată înainte de salvare. Stocul este actualizat în aceeași tranzacție cu order details pentru o comandă individuală, iar anularea restaurează cantitățile. Curierii pot fi asignați sau pot accepta cereri, își transmit locația, actualizează statusurile, confirmă plata și pot încărca dovezi; clientul și magazinul primesc actualizări prin Firebase și notificări persistente.
Plățile confirmate în cod includ cash on delivery, digital payment, wallet, offline payment, transfer bancar și plată parțială din wallet. Fluxul de plată digitală amânată permite crearea comenzii ca neplătită, afișarea ei imediată magazinului și trimiterea cererii de plată clientului când magazinul mută comanda în processing. După achitare, statusul operațional este păstrat, iar magazinul este notificat. Pentru comenzi digitale din mai multe magazine, OrderGroup centralizează suma și statusul plății.
Pe web, aplicația Flutter setează dinamic title, description, canonical URL, Open Graph și Twitter metadata pentru produse, magazine, categorii și branduri. Backend-ul completează limitările unei aplicații client-rendered cu pagini pre-render pentru crawlere, robots.txt și sitemap dinamic, cache-uit, pentru slug-urile publice. Livrarea tehnică este împărțită pe patru workflow-uri GitHub Actions: deploy SSH al backend-ului la push în main, build și deploy pentru customer web plus APK și build/distribuție APK pentru aplicațiile magazinului și curierului. Workflow-urile actuale automatizează build-ul și distribuția pe server, dar nu sunt prezentate ca publicare automată în App Store sau Google Play și nu includ o suită de teste ori rollback automat.
Rezultate cheie
- 4 codebase-uri coordonate: backend și admin Laravel, aplicație Flutter pentru clienți, aplicație Flutter pentru magazine și aplicație Flutter pentru curieri
- 5 familii operaționale de actori confirmate în cod: client, magazin/vendor, curier, manager de livrare și administrator
- Checkout multi-store care transformă un singur coș în comenzi izolate per magazin, cu distanță, livrare, cupoane și bacșiș calculate sau distribuite explicit
- Plată digitală grupată prin OrderGroup pentru comenzile provenite din mai multe magazine
- 6 mecanisme de plată confirmate: cash on delivery, digital payment, wallet, offline payment, transfer bancar și plată parțială
- Flux de plată digitală amânată, solicitată când magazinul mută comanda în processing, cu păstrarea statusului operațional după confirmare
- 4 formate de catalog procesate: JSON, CSV, XLS și XLSX, prin import manual sau programat
- Importuri procesate în loturi configurate la 200 de produse, cu progres persistent, reluare după ultimul index și marcarea stocului zero pentru SKU-urile dispărute din feed
- Resolver unic de categorii folosit de importurile JSON, CSV/Excel, preview și Feed Category Manager, cu prioritate SKU mapping → category mapping → direct match → Necategorisite
- Feed Category Manager pentru mapări simple și compuse, creare de categorii, actualizarea produselor existente, skip controlat și sincronizarea imaginilor
- 7 stări operaționale principale sincronizate între backend și aplicații, plus anulare, eșec și fluxuri de refund
- SEO web pentru produse, magazine, categorii și branduri: slug-uri, canonical, Open Graph, Twitter metadata, crawler prerender, robots.txt și sitemap dinamic cu cache
- Notificări push prin Firebase, notificări persistente în aplicație și emailuri condiționate de tipul evenimentului
- 4 workflow-uri GitHub Actions pentru deploy backend, customer web și distribuția celor trei APK-uri pe server
Proiecte asemănătoare
- GrileAMGEcosistem de pregătire pentru asistenți medicali: cursuri, grile, simulări, statistici și teste distribuite de profesori, pe web, iOS și Android, cu abonamente, AI și administrare editorială.
- Risa TimeEcosistem digital pentru preluarea mașinii de la client, transportul la o spălătorie parteneră și returnarea în siguranță, coordonat prin aplicații separate pentru client și șofer, panou operațional și tracking în timp real.
- YouSpacePlatformă care ajută familiile să găsească specialiști potriviți pentru copii și adolescenți, iar profesioniștii să își publice profilul, articolele și evenimentele într-un ecosistem cu verificare, abonamente și administrare centralizată.
Vrei ceva similar?
Începe cu wizard-ul de estimare — răspunzi la câteva întrebări și primești un range de preț + timeline realist.