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.

Windsurf
Strumento Consigliato

Windsurf

All my projects and even this website is build using Windsurf Editor. Windsurf is the most intuitive AI coding experience, built to keep you and your team in flow.

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.

Rimani aggiornato

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