Vai al contenuto principale

Caso di studio · FoodTech · Marketplace mobile

Aggregatore di food delivery — iOS, Android e un motore di routing

Pubblicato · Aggiornato · Di YuSMP Group Engineering

Come abbiamo costruito un aggregatore di food delivery multi-vendor per una startup FoodTech — app iOS e Android native per i clienti, un pannello admin per corrieri e manager, e un motore di routing multi-modale che mantiene le consegne puntuali tra corrieri a piedi, in bici, monopattino e auto. Progettato per utenti negli Stati Uniti e nell'Unione Europea, con una postura conforme al GDPR e al CCPA e audit-ready fin dal primo giorno.

SettoreFoodTech · Consegna on-demand
Anno del progetto2024
Tipo di ingaggioPrezzo fisso + supporto
App aggregatore food delivery — home marketplace con ristoranti, negozi e promo prima consegna gratuita su iOS per utenti USA e UE

Il brief — un aggregatore di consegna che rispetta i tempi

Il cliente FoodTech si è rivolto a YuSMP Group con un problema operativo preciso: i corrieri sceglievano percorsi subottimali, facevano deviazioni inutili, si confondevano con gli indirizzi e perdevano tempo — il che si traduceva in consegne in ritardo e fiducia dei clienti erosa. La visione del prodotto era un singolo aggregatore che unificasse ristoranti, supermercati e farmacie in un marketplace per i clienti, fornendo al contempo a manager e corrieri un back office operativo che riducesse davvero i tempi di consegna invece di limitarsi a registrarli. L'acquirente moderno on-demand negli Stati Uniti e nell'Unione Europea si aspetta un catalogo curato, uno stato degli ordini in tempo reale e una finestra di arrivo che regga — e la piattaforma doveva fornire tutto e tre su corrieri a piedi, in bici, monopattino e auto in griglie urbane dense. L'abbiamo costruita da principi primi come piattaforma a tre lati: app iOS e Android native per i clienti su una API Laravel, una superficie admin e dispatch React per manager e corrieri, e un motore di routing multi-modale al centro che adatta il percorso ottimale alla modalità di trasporto di ogni corriere. La build ha raggiunto i test pre-release finali sugli app store USA e UE, con supporto scoping attraverso la pubblicazione e i futuri aggiornamenti.

Punti salienti del progetto

App iOS + Android native per i clienti Catalogo marketplace multi-vendor Motore di routing corrieri multi-modale Tracciamento stato ordini in tempo reale Piano di controllo API Laravel Admin React per manager e corrieri Carrello, checkout & promozioni Test pre-release live · USA & UE

I numeri

Una panoramica di quanto ha consegnato la build dell'aggregatore food delivery su iOS, Android, un piano di controllo Laravel e un motore di routing multi-modale.

2piattaforme cliente native — iOS e Android, ognuna ottimizzata per piattaforma su una singola API condivisa
4modalità di trasporto corrieri con routing indipendente — profili a piedi, bici, monopattino e auto
3ruoli account in un ecosistema — cliente, manager ristorante o negozio e corriere
~9 mesitimeline di build fino ai test pre-release finali su entrambi gli app store
2app store target — Apple App Store e Google Play su storefront USA e UE
16–28 sett.finestra di consegna tipica per un MVP aggregatore comparabile su entrambi gli store
Motore di routing aggregatore food delivery — profili corrieri a piedi, bici, monopattino e auto che ottimizzano il tempo di arrivo nelle griglie urbane USA e UE

Perché un motore di routing multi-modale personalizzato rispetto alle mappe commerciali

La decisione sul routing domina ogni altra scelta architettonica in un aggregatore di consegna, perché le consegne in ritardo erano esattamente il problema che il cliente ci aveva assunto per risolvere. Abbiamo scelto un livello di routing multi-modale personalizzato rispetto a una singola API di navigazione commerciale perché la stessa mappa produce percorsi ottimali fondamentalmente diversi per un corriere a piedi, in bici, con monopattino e in auto. Ogni modalità ottiene il proprio profilo di velocità e modello dei costi di svolta, e il dispatcher assegna punteggi ai corrieri candidati in base al tempo stimato di arrivo, al carico corrente e all'idoneità della modalità per la distanza di consegna — poi ri-ottimizza continuamente man mano che nuovi ordini entrano in coda. Un'API di navigazione consumer, al contrario, presuppone una singola modalità di viaggio per richiesta e non ha il concetto di equità nel dispatch o carico della flotta, quindi qualsiasi affermazione onesta sui tempi deve essere ragionata nel nostro layer. Usiamo i provider di mappe per il grafo stradale e pedonale sottostante e stratifichiamo la nostra logica di scoring e dispatch sopra, il che rende il motore di routing portabile tra le città USA e UE senza riscrivere il dispatcher.

I SDK di consegna white-label commerciali sono stati eliminati presto: le loro euristiche di dispatch sono opache, i loro modelli di tempo di percorrenza presuppongono flotte solo auto, e i loro termini di licenza rendevano complicato il modello di account a tre lati. Costruire il motore di routing su standard aperti significava che l'intero percorso — catalogo, carrello, dispatch, app corriere — è un sistema coerente e di nostra proprietà, consegnato come parte della nostra pratica di sviluppo software su misura.

Motore di routing multi-modale personalizzato vs API di navigazione a modalità singola vs SDK di consegna white-label
Dimensione Motore di routing personalizzato API navigazione a modalità singola SDK consegna white-label
Modalità di trasportoA piedi, bici, monopattino, auto — profili separatiUna modalità per richiestaSolitamente modello flotta solo auto
Equità nel dispatch e caricoIntegrato nello scorer — ETA, carico, adeguatezza modalitàNessuna — solo navigazioneEuristica opaca del vendor
Ri-ottimizzazione su nuovi ordiniContinua tramite job in codaRi-query manualeControllata dal vendor
Modello account a tre latiNativo — cliente, manager, corriereNon applicabileDifficile da estendere
Portabilità tra città USA e UEAlta — scambia il grafo mappa, mantieni il dispatcherAlta ma senza logicaLicenza vincolata alla regione
Proprietà dei datiCompleta — dati ordini e dispatch nel nostro pianoLe query vanno al vendorIn mano al vendor
Costo in scalaPrevedibile — solo per query sul grafoPer richiesta, cresce con le ri-queryTariffa vendor per ordine

Riferimenti routing: Concetti di routing OpenStreetMap, Documentazione Apple MapKit, Riferimento posizione e mappe Android.

App iOS aggregatore food delivery — dettaglio prodotto Swift con aggiungi al carrello e prezzo live, flusso marketplace cliente

Build iOS — Swift, il marketplace e il flusso del carrello

L'app iOS per i clienti è costruita in Swift, con una home del marketplace che raggruppa ristoranti, negozi e farmacie in un'unica superficie ricercabile, chip di categoria e una rail promo (il banner «prima consegna gratuita» è uno slot di merchandising guidato dall'admin). Il flusso dettaglio prodotto e carrello è stato dove abbiamo investito uno sforzo sproporzionato, perché i carrelli abbandonati sono dove la maggior parte delle app di consegna perde ricavi silenziosamente: il controllo aggiungi al carrello, lo stepper di quantità e il totale dell'ordine live si aggiornano istantaneamente senza un round-trip di rete, e il carrello si riconcilia con i prezzi del server solo al checkout. Il catalogo viene memorizzato nella cache localmente in modo che la navigazione rimanga fluida su reti mobili instabili, e l'app degrada correttamente quando un vendor va offline a metà sessione.

L'effettuazione dell'ordine si trasferisce al motore di routing nel momento in cui un cliente conferma: il backend risolve l'indirizzo di consegna, sceglie il corriere disponibile più adatto con ETA più basso e invia uno stato live che il cliente può seguire da «accettato» a «in arrivo». Lo stesso client Swift gestisce i flussi di permesso di localizzazione e notifica in contesto — richiesti quando il cliente traccia per la prima volta un ordine, mai al primo avvio — per soddisfare i revisori dell'App Store e mantenere l'esperienza di consenso onesta per gli utenti in USA e UE. L'intera superficie iOS è consegnata come parte della nostra pratica di sviluppo app mobile.

App Android aggregatore food delivery — griglia catalogo vendor Kotlin con valutazioni, prezzi e aggiungi al carrello su storefront USA e UE

Build Android — Kotlin, il catalogo vendor e lo stato in tempo reale

L'app Android per i clienti è scritta in Kotlin, condividendo la stessa API Laravel di iOS ma ottimizzata per le realtà di frammentazione del parco Android. Il catalogo vendor si renderizza come una griglia veloce e ricca di immagini con valutazioni, stime dei tempi di preparazione e prezzi, supportata da chiamate API paginate e caching aggressivo delle immagini in modo che la lista rimanga fluida su dispositivi di fascia media tra famiglie Samsung, Xiaomi e Pixel. Lo stato del carrello, i preferiti e l'ordine attivo sopravvivono alla morte del processo e ai cambiamenti di configurazione — una reale preoccupazione su Android, dove gli ottimizzatori aggressivi della batteria e i kill a bassa memoria distruggono routinariamente lo stato dell'app in background.

Lo stato degli ordini in tempo reale è il contratto a cui il cliente si iscrive implicitamente, quindi il client Android mantiene un canale live verso il backend per le transizioni di stato — accettato, in preparazione, ritirato, in arrivo, consegnato — e fa fallback alle notifiche push quando l'app è in background. I permessi di localizzazione e notifica vengono richiesti in contesto, e la schermata di tracciamento dell'ordine legge dalla stessa pipeline di stato in cui scrive l'app corriere, quindi cliente e corriere non vedono mai uno stato divergente. Lo stesso team di ingegneria gestisce iOS e Android in lockstep come parte della nostra pratica di ingegneria iOS e Android.

Aggregatore food delivery — conferma ordine accettato con finestra di consegna 30-40 minuti e tracciamento ordine nel profilo

Piano di controllo, postura privacy e hardening audit-ready

Il piano di controllo è un backend Laravel con una superficie admin e dispatch React per manager di ristoranti e negozi e per corrieri. I manager gestiscono un board ordini live — ordini in arrivo, accettazione vendor, timer di preparazione — mentre i corrieri ottengono una vista dispatch con il percorso assegnato, il prossimo ritiro e il drop-off del cliente. Gli eventi degli ordini scorrono attraverso un'unica pipeline di stato in modo che cliente, manager e corriere leggano sempre lo stesso status, e il lavoro di routing e notifica viene eseguito come job in background in coda per mantenere le app rivolte ai clienti reattive sotto carico. La gestione degli indirizzi, il problema esatto che il cliente aveva sollevato, viene normalizzata lato server e validata rispetto al grafo mappa prima che un corriere venga mai inviato.

In termini di privacy, la piattaforma è stata progettata per allinearsi agli obblighi GDPR per gli utenti nell'Unione Europea e agli obblighi CCPA / CPRA per gli utenti in California e negli Stati Uniti più in generale. La localizzazione del cliente viene raccolta solo per la durata di un ordine attivo, l'identità di pagamento è gestita dal provider di pagamento piuttosto che archiviata nel piano degli ordini, e l'accesso alla superficie admin è scoped per ruolo in modo che un corriere non veda mai i dati dei clienti di un altro corriere. Il design rende una futura revisione indipendente della readiness alla privacy un esercizio di documentazione piuttosto che un retrofit architetturale.

Postura di conformità: conforme al GDPR · pronto per ISO 27001 · SOC 2 Type II in corso · compatibile HIPAA · CCPA riconosciuto.

Metodologia di consegna

Una build in cinque fasi che ha portato l'aggregatore dalla specifica del prodotto ai test pre-release finali su iOS, Android, un piano di controllo Laravel e il motore di routing.

Fase 1

Discovery e requisiti

Mappatura del modello a tre lati (cliente, manager, corriere), identificazione delle modalità di fallimento per consegne in ritardo e confusione indirizzi, e definizione della postura GDPR + CCPA e dei requisiti di review App Store / Google Play.

Fase 2

Architettura e routing

Skeleton API Laravel, schema catalogo multi-vendor, motore di routing multi-modale con profili di velocità per modalità e scorer dispatch per ETA, carico e adeguatezza modalità.

Fase 3

Build delle piattaforme

App cliente iOS Swift e Android Kotlin sulla API condivisa, più admin React per manager e corrieri con superfici dispatch, carrello, checkout e stato in tempo reale.

Fase 4

Hardening e QA

Controllo accessi scoped per ruolo, normalizzazione indirizzi rispetto al grafo mappa, QA del flusso permessi, load testing della coda dispatch e verifica della postura privacy audit-ready.

Fase 5

Pre-release e supporto

Test pre-release finali prima della submission all'App Store e Google Play su storefront USA e UE, con supporto scoping attraverso la pubblicazione e i futuri aggiornamenti.

L'app corriere, il dispatch e il back office operativo

L'app rivolta ai corrieri e la console dispatch del manager sono dove la piattaforma guadagna davvero la sua promessa di puntualità. Un corriere accede, vede un percorso assemblato dal motore di routing per la propria modalità di trasporto, e lavora una sequenza di ritiri e drop-off con guida turn-by-turn e transizioni di stato con un tocco — arrivato, ritirato, consegnato — che scrivono direttamente nella pipeline degli ordini condivisa. Il dispatcher non si limita ad assegnare il corriere più vicino; assegna punteggi ai candidati in base al tempo stimato di arrivo, al carico corrente e se un corriere a piedi, in bici, monopattino o auto sia lo strumento giusto per la distanza di consegna, poi ri-ottimizza man mano che arrivano nuovi ordini in modo che un singolo nuovo ordine non blocchi un percorso già efficiente. I manager, nel frattempo, gestiscono un board ordini React che mostra l'accettazione del vendor, i timer di preparazione e qualsiasi consegna in ritardo rispetto alla finestra, con la normalizzazione degli indirizzi che risolve la confusione originale integrata prima che un corriere venga mai inviato. L'intera superficie operativa è stata costruita per l'estensibilità: aggiungere un nuovo tipo di vendor, una nuova modalità di trasporto o una nuova città è un esercizio di configurazione e dati rispetto ai servizi di catalogo e routing, non una release di codice — la stessa disciplina di scaling che portiamo nelle roadmap di Cloud & DevOps.

Lancio negli Stati Uniti e nell'Unione Europea

L'aggregatore è stato progettato per gli App Store e Google Play negli Stati Uniti e nell'Unione Europea da un singolo codebase per piattaforma. La build in lingua inglese è posizionata per utenti in California, New York, Texas, Florida e Washington negli USA, e per utenti nei Paesi Bassi, Germania, Francia, Irlanda e Svezia nell'UE, senza un codebase separato per regione. I flussi di consenso sono region-aware al layer client: gli utenti nell'UE e nel SEE ricevono una schermata di consenso granulare in stile GDPR con toggle separati per le analisi di prodotto opzionali, mentre gli utenti in California ricevono una divulgazione in stile CCPA «Do Not Sell or Share My Personal Information» nello stesso flusso. Le pratiche di gestione dei dati sono allineate al GDPR per gli utenti dell'Unione Europea e al patchwork sulla privacy degli stati USA — CCPA / CPRA (California), VCDPA (Virginia), CPA (Colorado), CTDPA (Connecticut), UCPA (Utah), TDPSA (Texas) e Oregon CPA. Poiché i dati di localizzazione e ordine dei clienti sono minimizzati e di breve durata per design, la conformità regionale si riduce in gran parte a una divulgazione onesta piuttosto che alla segregazione dei dati per giurisdizione.

Il motore di routing è portabile tra città USA e UE per design — il dispatcher e i profili di velocità per modalità rimangono costanti mentre il grafo mappa sottostante viene scambiato per regione, citando gli obblighi GDPR e gli obblighi CCPA della California direttamente nella privacy policy in-app. Sia la fascia di età dell'App Store che la valutazione dei contenuti di Google Play sono state calibrate per un set di funzionalità di consegna cibo e bevande, e i permessi di localizzazione e notifica vengono richiesti in contesto per soddisfare i revisori sia negli USA che nell'UE. Il team di ingegneria dietro la build opera su una giornata lavorativa CET con sovrapposizione con la costa est degli Stati Uniti (9:00–13:00 ET) per stand-up, coreografia delle revisioni degli store e incident response — la finestra di fuso orario che consente a un team di prodotto USA e a un team di ingegneria UE di condividere quattro ore di sovrapposizione live ogni giorno.

Stack tecnologico e roadmap

Swift SwiftUI Kotlin Jetpack Compose Laravel PHP React TypeScript PostgreSQL Redis Laravel Queues WebSockets Push Notifications MapKit / OSM Routing Engine Docker Kubernetes Terraform Prometheus

La roadmap attiva di sviluppo software su misura per l'aggregatore include ordinazioni programmate e di gruppo, un motore di loyalty e promozioni sopra gli slot di merchandising esistenti, gestione dei guadagni e dei turni dei corrieri nella console dispatch e tracciamento live del corriere sulla schermata ordini del cliente. I piani di infrastruttura includono ulteriore automazione della coda dispatch, strumenti di rollout multi-città in modo che una nuova regione sia un esercizio di dati, e un'opzione di residenza dei dati che vincola i dati degli ordini UE e USA allo storage regionale — tutto costruito nella roadmap di Cloud & DevOps in modo che la piattaforma scala in modo pulito da una città a un'impronta nazionale tra USA e UE.

Costruisci un aggregatore di consegna simile — parlaci

Se stai pianificando un aggregatore food delivery, un'app q-commerce o qualsiasi prodotto logistico on-demand dove la promessa di puntualità deve sopravvivere al dispatch urbano reale per utenti in USA e UE, abbiamo consegnato questo stack end-to-end e possiamo comprimere significativamente la timeline di build. La piattaforma ha raggiunto i test pre-release finali su iOS e Android, e il team di ingegneria dietro di essa si trova all'interno di YuSMP Group. Lavoriamo a prezzo fisso per MVP ben definiti e con team di sviluppo dedicati per la consegna continuativa, con una giornata lavorativa CET e una finestra garantita di sovrapposizione con la costa est degli Stati Uniti (9:00–13:00 ET) per stand-up, demo e incident response.

Prenota una discovery call Vedi i servizi di sviluppo mobile

Domande frequenti

Quanto costa sviluppare un'app aggregatore food delivery come Uber Eats o Wolt?

Un MVP di aggregatore food delivery che copre app iOS e Android per i clienti, un catalogo multi-vendor, carrello e checkout e un pannello admin base per corrieri e manager costa tipicamente $90k–$220k. Aggiungere un motore di routing corrieri multi-modale, tracciamento in tempo reale, integrazioni di pagamento, promozioni e un'app separata per i corrieri porta un marketplace completo a $250k–$550k. I principali driver di costo sono la logica di routing e dispatch, il modello di account a tre lati e la sincronizzazione dello stato degli ordini in tempo reale tra le superfici cliente, vendor e corriere.

Perché usare Laravel e React per il backend di un marketplace di consegna?

Laravel offre a un marketplace di consegna un backend PHP maturo e batteries-included — code per i job di dispatch, un ORM espressivo per il catalogo multi-vendor e un grande pool di assunzioni che mantiene manutenibile una piattaforma a tre lati. React alimenta le superfici admin manager e corriere con un modello a componenti che si mappa in modo pulito su board ordini live e console di dispatch. L'accoppiamento mantiene l'API e gli strumenti web operativi in un unico ecosistema ben compreso, il che accorcia la build e riduce il costo di proprietà a lungo termine per i team USA e UE che gestiscono la piattaforma.

Come si costruisce un motore di routing corrieri per modalità di trasporto multiple?

Un motore di routing multi-modale separa il modello dei tempi di percorrenza dalla logica di dispatch. Ogni modalità di trasporto — a piedi, bicicletta, monopattino e auto — ottiene il proprio profilo di velocità e modello dei costi di svolta, quindi la stessa mappa produce percorsi ottimali diversi per corriere. Il dispatcher assegna punteggi ai corrieri candidati in base al tempo stimato di arrivo, al carico corrente e all'idoneità della modalità per la distanza di consegna, poi assegna e ri-ottimizza continuamente man mano che arrivano nuovi ordini. Le chiamate di routing vengono eseguite come job in background in coda in modo che l'app rivolta al cliente rimanga reattiva.

Quali sono le regole dell'App Store e Google Play per le app di food delivery?

Apple e Google richiedono entrambe che le app di food delivery divulghino chiaramente la raccolta dei dati, gestiscano il permesso di localizzazione con una giustificazione di utilizzo in primo piano, e instradi in modo appropriato gli acquisti digitali in-app consentendo al contempo che le consegne nel mondo reale vengano pagate al di fuori degli acquisti in-app. Entrambi gli store si aspettano una policy sulla privacy funzionante, valutazioni dei contenuti appropriate all'età e — per le app che servono utenti UE e California — un flusso di consenso granulare che soddisfi GDPR e CCPA / CPRA nella stessa schermata. I permessi di localizzazione e notifica devono essere richiesti in contesto, non al primo avvio.

Quanto tempo ci vuole per rilasciare un aggregatore food delivery su iOS e Android?

Un MVP mirato con app iOS e Android per i clienti, un catalogo multi-vendor, carrello e checkout e un pannello admin base richiede tipicamente 16–28 settimane. Aggiungere un motore di routing corrieri multi-modale, un'app corriere dedicata, tracciamento in tempo reale e sottosistemi di pagamento e promozione aggiunge 8–14 settimane. Ciò si è allineato con la timeline di circa nove mesi di questa build, che ha raggiunto i test pre-release finali su entrambi gli store con supporto scoping attraverso la pubblicazione e i futuri aggiornamenti.

Condividi questo caso

LinkedIn X

Pianifica una build simile

Prenota una discovery call

Richiedi una proposta

Condividi qualche dettaglio e un consulente senior risponderà entro un giorno lavorativo.

Preferisci parlare direttamente? ☎ Chiama +374 44 871 811 [email protected]