Yacht & Tours: Una Piattaforma di Prenotazione Barche Veloce e Pulita, Costruita per Esigenze Aziendali Reali

Yacht & Tours: Una Piattaforma di Prenotazione Barche Veloce e Pulita, Costruita per Esigenze Aziendali Reali

By Yuriy Zhar 3 min read
Yacht & Tours è una piattaforma di prenotazione che ho costruito per rendere il noleggio di barche veloce e semplice.

Yacht & Tours nasce da un problema molto tipico delle piattaforme di prenotazione. Barche, date, prezzi, disponibilità, pagamenti. Nulla di nuovo. Quello che di solito non regge è il modo in cui questi elementi vengono messi insieme quando il sistema cresce e il traffico diventa imprevedibile.


Ho costruito la piattaforma utilizzando Elixir e il framework Phoenix, con LiveView a gestire gran parte dell’interfaccia. La scelta non è stata dettata dall’hype, ma dall’aderenza al problema: il dominio è per natura altamente concorrente, stateful e in tempo reale. Il modello di concorrenza di Elixir e l’isolamento dei processi di Phoenix rendono molto più semplice mantenere il sistema reattivo sotto carico.

Il frontend è in gran parte server-driven. LiveView permette all’interfaccia di aggiornarsi istantaneamente quando cambiano i filtri, i prezzi vengono ricalcolati o la disponibilità varia, senza dipendere da uno stato client pesante o da continue chiamate API. Risultati di ricerca, calendari e flussi di prenotazione reagiscono in tempo reale mantenendo il client leggero.


Ricerca, disponibilità e pricing sono trattati come infrastruttura centrale, non come funzionalità secondarie. Invece di interrogare il database a ogni richiesta, la piattaforma utilizza una cache in-memory ETS per consultazioni ad alta velocità. Le barche vengono indicizzate in memoria per filtrare per posizione, capacità, dotazioni, disponibilità e prezzo, permettendo ricerche complesse anche con una flotta in crescita.

La logica di pricing è volutamente centralizzata. Regole stagionali, prezzi base, sconti, costi obbligatori ed extra vengono risolti attraverso lo stesso percorso di calcolo. Questo evita un problema comune nelle piattaforme di prenotazione, dove i prezzi mostrati in ricerca, nei preventivi e nelle prenotazioni finali non coincidono perché calcolati in punti diversi del sistema.


Il datastore principale è MongoDB, scelto per la sua flessibilità nella gestione di documenti complessi e annidati come barche, regole di prezzo, extra e metadati di prenotazione. MongoDB funge da fonte di verità, mentre ETS viene utilizzato come livello ottimizzato per la lettura. Le scritture vanno al database; le letture per ricerca e filtri avvengono in memoria. Le modifiche vengono propagate quasi in tempo reale.

Disponibilità e prenotazioni seguono un ciclo di vita chiaro. Gli stati delle prenotazioni passano in modo prevedibile dalla richiesta alla conferma fino al pagamento, e la disponibilità viene derivata dalle prenotazioni accettate e pagate. Questo previene le doppie prenotazioni senza affidarsi a lock fragili o a job schedulati in ritardo.

Il comportamento in tempo reale è un requisito di primo livello in tutta la piattaforma. Richieste di prenotazione, messaggi, cambi di stato e aggiornamenti di disponibilità vengono consegnati immediatamente agli utenti coinvolti. Questo riduce i tempi di risposta, evita race condition ed elimina la necessità di continui refresh manuali.


I pagamenti sono integrati direttamente nel flusso tramite Stripe, con supporto alla generazione e archiviazione automatica delle fatture. In questo modo le operazioni finanziarie restano coerenti e tracciabili, senza dover ricorrere a strumenti esterni o processi manuali.

Il sistema è pensato per convivere con software esterni, non per sostituirli. Molte barche sono gestite tramite strumenti di terze parti, per questo Yacht & Tours include la sincronizzazione con il sistema di booking MMK. Annunci importati, disponibilità e aggiornamenti restano allineati, evitando che la piattaforma mostri dati obsoleti.


Nel complesso, Yacht & Tours è volutamente convenzionale in ciò che offre e dichiaratamente opinionata nel modo in cui è costruita. È una piattaforma di prenotazione standard implementata con un’architettura moderna e real-time, una chiara separazione tra percorsi di lettura e scrittura, e scelte infrastrutturali che privilegiano correttezza, performance e manutenibilità nel lungo periodo.


Spectre for Elixir
Strumento Consigliato

Spectre for Elixir

Build one Elixir agent. Give it only the powers it needs

Share this article:
Yuriy Zhar

Yuriy Zhar

github.com

Passionate web developer. Love Elixir/Erlang, Go, TypeScript, Svelte. Interested in ML, LLM, astronomy, philosophy. Enjoy traveling and napping.

Contattaci

Se ti serve uno sviluppatore che consegna soluzioni veloci, affidabili e pratiche, contattami. Trasformiamo insieme la tua idea o il tuo progetto in qualcosa che funziona davvero.

Book a Call

Rimani aggiornato

Iscriviti alla nostra newsletter e ricevi gli ultimi articoli direttamente nella tua casella di posta.

Resta curioso.

Le buone idee iniziano con una domanda in più.

Tocca la pioggia. Crea una piccola onda.

Torna all’inizio