Vai al contenuto

Piattaforme e App

Zygo

Piattaforma di prenotazione e assegnazione taxi in tempo reale per Roma: back end Node.js, app per passeggeri, autisti e tablet in auto, e tariffe fisse.

TipologiaPiattaforme e App

Il problema

Un servizio taxi che riceve prenotazioni da un’app ha bisogno di molto più di un modulo di prenotazione. Deve trovare un autista libero nelle vicinanze, proporgli la corsa, attendere la risposta e passare oltre se nessuno accetta, il tutto in pochi secondi. Roma aggiunge le sue regole: tariffe fisse approvate dal Comune per le corse da e verso gli aeroporti e il porto. Al cliente serviva l’intera catena, dall’assegnazione delle corse al pagamento.

Cosa ho costruito

Ho realizzato una piattaforma di prenotazione e assegnazione delle corse in tempo reale, con un unico back end, tre app mobili e una dashboard web di amministrazione.

  • Motore di assegnazione — cerca autisti approvati e disponibili che abbiano inviato la posizione negli ultimi 60 secondi, entro un raggio di ricerca (8 km come predefinito). Ne ordina fino a 10 in base al tempo di guida reale con il traffico del momento, calcolato da Google, poi propone la corsa a un autista alla volta, con 20 secondi per accettare.
  • Tariffe di Roma — il servizio che calcola i prezzi riconosce 9 luoghi chiave, come l’aeroporto di Fiumicino e il centro storico, e applica le 12 tariffe fisse stabilite da Roma Capitale (delibera 252/2024). Le altre corse sono calcolate sul percorso di Google, con supplementi per bagagli e passeggeri.
  • Tre app — un’app per i passeggeri, una per gli autisti e un’app per il tablet in auto che mostra il percorso e i banner dei partner. Sono tutte realizzate con React Native ed Expo, per Android e per il web.
  • Tracciamento e chiamate in tempo reale — Socket.IO invia le posizioni degli autisti e lo stato della corsa. Passeggero e autista possono chiamarsi dentro l’app tramite WebRTC, senza vedere il numero di telefono dell’altro.
  • Pagamenti — Stripe con webhook a firma verificata, e ordini PayPal. Le chiavi di pagamento si impostano nel pannello di amministrazione e sono salvate cifrate.
  • Registrazione degli autisti — gli autisti caricano patente, documenti e foto. Un amministratore li approva prima che possano mettersi in servizio.
  • Sponsor e coupon — un portale per gli sponsor con tre piani e coupon con controlli antifrode, oltre a corse programmate e recensioni.

Con cosa è fatto

Il back end gira su Node.js 22 con TypeScript, Express e Socket.IO. I dati stanno in MariaDB/MySQL, e lo schema è cresciuto attraverso 24 migrazioni SQL versionate. Zod valida gli input; gli accessi usano JWT e l’accesso con Google. Google Maps gestisce percorsi, tempi di percorrenza e geocodifica. Le app usano Expo e React Native.

Perché è fatto così

Due passeggeri non devono mai ricevere lo stesso autista. Quando un autista accetta, il motore lo riserva con un unico aggiornamento condizionale: occupato, ma solo se è ancora disponibile. Se nessuna riga cambia, l’autista è appena stato preso e la corsa passa al candidato successivo. I candidati sono ordinati per tempo di guida e non per distanza in linea d’aria, perché a Roma l’auto più vicina spesso non è la più rapida. Se Google non risponde, l’ordinamento ripiega sulla distanza.

Un'idea?
Parliamone.

Che sia un sito, un'app, un video, una canzone o un progetto più grande, sono pronto ad aiutarti a realizzarla.

Contattami ora
  • Napoli
  • Idee
  • Progetti
  • Persone
  • Sempre avanti