Architettura Piattaforma Bauking - High Level
Questa pagina fornisce una panoramica generale dell'architettura ad alto livello della piattaforma Bauking, illustrata nel diagramma seguente.
Diagramma Architettura High Level
Il diagramma seguente mostra l'organizzazione completa della piattaforma Bauking a livello architetturale:

Panoramica Generale
Il diagramma illustra l'organizzazione complessiva della piattaforma Bauking, mostrando:
- Componenti principali del sistema
- Interconnessioni tra i vari moduli
- Flussi di dati e comunicazione
- Relazioni tra frontend, backend e servizi esterni
- Architettura a strati della piattaforma
Componenti Principali
La piattaforma Bauking è organizzata in diverse macro sezioni, ognuna con responsabilità specifiche:
1. Frontend (Interfaccia Utente Pubblica)
Il frontend rappresenta l'interfaccia pubblica accessibile agli utenti finali attraverso il browser web.
Funzionalità principali:
- Ricerca Alloggi: Sistema di ricerca avanzata con filtri multipli
- Visualizzazione Dettagli: Pagine dettaglio struttura con galleria immagini, servizi, mappa
- Gestione Prenotazioni: Processo di prenotazione completo (selezione date, camere, checkout)
- Area Utente: Profilo personale, gestione pets, prenotazioni, wishlist
- Contenuti CMS: Pagine editoriali, blog Petsnews, informazioni generali
- Documenti: Gestione documenti necessari per viaggi
Caratteristiche tecniche:
- Interfaccia responsive (desktop, tablet, mobile)
- Integrazione con sistema di ricerca e indicizzazione
- Gestione multilingua (IT, EN, DE) e multi-valuta
- Ottimizzazione SEO per motori di ricerca
- Integrazione con mappe per geolocalizzazione
2. PIM - Product Information Management
Il pannello di amministrazione (PIM) è il sistema di gestione backend che consente agli amministratori di gestire tutti i contenuti e le configurazioni della piattaforma.
Moduli principali:
- Gestione Alloggi e Strutture
- Gestione Prenotazioni
- Gestione Contenuti (Servizi, Destinazioni, FAQ)
- Gestione Utenti e Clienti
👉 Vedi documentazione dettagliata PIM →
3. CMS - Content Management System
Il CMS (Statamic) gestisce i contenuti editoriali e le pagine dinamiche del sito pubblico, separato dal PIM per una gestione più flessibile dei contenuti.
Funzionalità principali:
- Page Builder con editor visuale
- Gestione Blog (Petsnews)
- Navigazione e Menu
- Globals e Forms
👉 Vedi documentazione dettagliata CMS →
4. ORMS - Order Management System
Il sistema di gestione ordini e prenotazioni (ORMS) gestisce l'intero ciclo di vita delle prenotazioni, dalla ricerca alla conferma e gestione post-vendita.
Funzionalità principali:
- Gestione Prenotazioni
- Integrazione con Booking Engine Esterni
- Processo di Prenotazione Completo
👉 Vedi documentazione dettagliata ORMS →
5. Contabilità - Integrazione Piattaforma Esterna
La piattaforma Bauking si integra con una piattaforma contabile esterna che gestisce l'intero ciclo contabile, dalla generazione di fatture elettroniche alle note di credito e all'invio al Sistema di Interscambio (SDI).
Funzionalità principali:
- Raccolta Dati Fatturazione
- Generazione Fatture Elettroniche
- Integrazione SDI
- Gestione Note di Credito
👉 Vedi documentazione dettagliata Contabilità →
6. DAM - Digital Asset Management
Il sistema di Digital Asset Management (DAM) gestisce tutti i file multimediali della piattaforma, inclusi immagini, documenti e media per contenuti editoriali.
Funzionalità principali:
- Gestione Media Strutture
- Gestione Media CMS
- Ottimizzazione Immagini
- Gestione Documenti
👉 Vedi documentazione dettagliata DAM →
4. Database e Storage
Il sistema di storage centralizzato gestisce tutti i dati della piattaforma.
4.1 Database
Il database relazionale centralizza tutti i dati strutturati della piattaforma:
- Dati strutture ricettive, prenotazioni e ordini
- Informazioni utenti e clienti
- Servizi, destinazioni e punti di interesse
- Recensioni, FAQ e contenuti vari
Il sistema gestisce relazioni complesse tra le diverse entità per garantire l'integrità e la coerenza dei dati.
4.2 File Storage
- Immagini Strutture: Foto alloggi, camere, servizi
- Documenti: PDF documenti necessari, contratti
- Media CMS: Immagini e file per contenuti editoriali
- Upload Utenti: Documenti caricati dagli utenti
4.3 Sistema di Cache
- Cache Alloggi: Cache dati strutture per performance frontend
- Cache Ricerche: Cache risultati ricerche
- Cache Contenuti: Cache contenuti CMS
- Pulizia Cache: Sistema di pulizia cache dopo modifiche
5. Integrazioni Esterne
La piattaforma si integra con vari servizi esterni per estendere le funzionalità:
5.1 Gateway di Pagamento
- Processamento Pagamenti: Integrazione con gateway di pagamento
- Gestione Transazioni: Gestione transazioni sicure
- Notifiche: Ricezione notifiche pagamenti
- Rimborsi: Gestione rimborsi
5.2 Servizi Mappe
- Google Maps: Integrazione per geolocalizzazione
- Visualizzazione Mappe: Mappe interattive su frontend
- Calcolo Distanze: Calcolo distanze tra punti
- Indirizzi: Geocoding e reverse geocoding
5.3 Sistema Email
- Email Transazionali: Invio email automatiche (conferme, notifiche)
- Newsletter: Gestione invio newsletter
- Template Email: Template personalizzati per email
- Queue System: Sistema di code per invio asincrono
5.4 Sistema di Ricerca
- Indicizzazione: Sistema di indicizzazione contenuti
- Ricerca Full-Text: Ricerca avanzata nei contenuti
- Filtri: Sistema di filtri complessi per ricerca alloggi
- Suggerimenti: Autocompletamento e suggerimenti ricerca
5.5 Sistema di Autenticazione
La piattaforma implementa un sistema di autenticazione completo che supporta sia l'autenticazione tradizionale che l'accesso tramite provider esterni.
Autenticazione Laravel (Nativa):
- Registrazione: Creazione account con email e password
- Login: Accesso con credenziali email/password
- Recupero Password: Sistema di reset password via email
- Verifica Email: Sistema di verifica indirizzo email
- Gestione Profilo: Modifica dati utente e password
- Sessioni: Gestione sessioni utente sicure
Autenticazione con Provider Esterni (OAuth):
- Social Login: Accesso tramite provider social (Google, Facebook, Apple, etc.)
- Associazione Account: Possibilità di associare più provider a un singolo account
- Gestione Unificata: Un account può avere più metodi di autenticazione collegati
- Sicurezza: Token OAuth gestiti in modo sicuro, aggiornamento automatico token
Caratteristiche:
- Multi-Provider: Supporto per più provider contemporaneamente
- Account Linking: Collegamento di più provider allo stesso account utente
- Sicurezza: Rate limiting, protezione CSRF, gestione sicura token
- User Experience: Login rapido senza dover ricordare password per account social
Flusso Autenticazione:
- Scelta Metodo: Utente sceglie login tradizionale o provider esterno
- Redirect Provider: Per provider esterni, redirect al provider OAuth
- Autorizzazione: Utente autorizza l'applicazione sul provider
- Callback: Provider reindirizza l'utente con token di autorizzazione
- Creazione/Login: Sistema crea nuovo account o effettua login se account esiste
- Associazione: Se utente già loggato, associa provider all'account esistente
5.6 Booking Engine Esterni (PMS Integration)
La piattaforma si integra con sistemi di Property Management System (PMS) e booking engine esterni per gestire disponibilità, tariffe e prenotazioni in tempo reale.
👉 Per dettagli completi, vedi ORMS - Order Management System →
5.7 Integrazione Piattaforma Contabilità Esterna
La piattaforma Bauking non gestisce direttamente la contabilità, ma si integra con una piattaforma contabile esterna che gestisce l'intero ciclo contabile, dalla generazione di fatture elettroniche alle note di credito e all'invio al Sistema di Interscambio (SDI).
👉 Per dettagli completi, vedi Contabilità - Integrazione Piattaforma Esterna →
Flussi di Dati e Comunicazione
Il diagramma mostra i flussi di dati tra i vari componenti. Di seguito vengono descritti i principali flussi:
Flusso Utente → Sistema (Frontend → Backend)
Processo di Prenotazione:
-
Ricerca: L'utente cerca alloggi tramite il frontend
- Query al database con filtri (date, località, servizi)
- Comunicazione con Availability Engine: Verifica disponibilità in tempo reale dai sistemi esterni
- Comunicazione con Rate Engine: Recupero tariffe aggiornate dai sistemi esterni
- Price Engine: Calcolo prezzi finali considerando tariffe e regole business
- Risultati mostrati con disponibilità e prezzi aggiornati
-
Selezione: L'utente seleziona una struttura
- Caricamento dati struttura (cached)
- Visualizzazione dettagli, immagini, servizi
- Verifica disponibilità finale per le date selezionate
-
Prenotazione: Selezione date, camere e servizi
- Verifica disponibilità in tempo reale tramite Availability Engine
- Calcolo prezzi finali tramite Price Engine
- Validazione disponibilità prima di procedere
-
Checkout: Inserimento dati e pagamento
- Validazione dati utente
- Selezione tipo fattura: Utente sceglie tipo fattura (none, private, company)
- Inserimento dati fatturazione: Dati anagrafici e fiscali (P.IVA, CF, SDI, PEC se necessario)
- Validazione dati fiscali
- Processamento pagamento tramite gateway
- Creazione ordine nel database locale con dati fatturazione
-
Invio a Booking Engine: Invio prenotazione al sistema esterno
- Comunicazione con Booking Engine: Invio prenotazione via API/XML
- Ricezione conferma o errore dal booking engine esterno
- Aggiornamento stato ordine in base alla risposta
- Generazione codice riferimento esterno
-
Invio a Piattaforma Contabile: Invio dati ordine e fatturazione alla piattaforma contabile esterna
- Comunicazione API: Invio dati ordine e fatturazione alla piattaforma contabile esterna
- Generazione Fattura: Piattaforma contabile esterna genera la fattura
- Invio SDI: Piattaforma contabile esterna gestisce invio al Sistema di Interscambio
- Notifica: Sistema riceve notifica di fattura generata
-
Conferma: Ricezione conferma prenotazione
- Invio email conferma con dettagli prenotazione
- Fattura disponibile per download dalla piattaforma contabile
- Aggiornamento disponibilità nel sistema
Flusso Admin → Frontend (PIM → Frontend)
Pubblicazione Contenuti:
-
Creazione/Modifica: L'admin crea o modifica contenuti nel PIM
- Modifica dati struttura, servizi, destinazioni
- Salvataggio nel database
-
Pubblicazione: I contenuti vengono pubblicati
- Aggiornamento record nel database
- Trigger di aggiornamento cache
-
Pulizia Cache: Pulizia cache obbligatoria
- Click su "Pulisci Cache" nel menu rotellina
- Invalidazione cache specifica per struttura
-
Visualizzazione: I contenuti appaiono sul frontend
- Frontend legge dati aggiornati (non cached)
- Nuova cache generata con dati aggiornati
Flusso CMS → Frontend
Pubblicazione Contenuti Editoriali:
-
Creazione Pagine: Creazione pagine editoriali nel CMS
- Editor visuale per contenuti
- Configurazione SEO e meta tag
-
Pubblicazione: Le pagine vengono pubblicate
- Salvataggio contenuti nel database/file system
- Aggiornamento struttura navigazione
-
Rendering: Il frontend renderizza le pagine CMS
- Rendering dinamico contenuti Statamic
- Integrazione con dati PIM se necessario
Flusso Database ↔ Tutti i Componenti
Accesso Centralizzato ai Dati:
-
Lettura: Tutti i componenti leggono dal database
- Frontend: Query per ricerca e visualizzazione
- PIM: Query per gestione e modifica
- CMS: Query per contenuti editoriali
-
Scrittura: Modifiche scritte nel database
- PIM: Scrittura dati strutture, prenotazioni
- CMS: Scrittura contenuti editoriali
- Frontend: Scrittura prenotazioni, registrazioni utenti
-
Cache: Sistema di cache riduce query database
- Cache layer tra componenti e database
- Invalidazione cache quando necessario
Relazioni e Interconnessioni tra Componenti
Il diagramma mostra le relazioni tra i vari componenti. Di seguito viene spiegata ogni relazione:
PIM ↔ Frontend
Relazione Bidirezionale:
-
PIM → Frontend:
- Il PIM gestisce tutti i dati che vengono visualizzati sul frontend
- Modifiche nel PIM (alloggi, servizi, destinazioni) devono essere pubblicate
- Pulizia cache obbligatoria dopo ogni modifica per vedere cambiamenti sul frontend
- Il frontend legge principalmente dati cached per performance
-
Frontend → PIM:
- Le prenotazioni create dal frontend vengono salvate e visibili nel PIM
- Le registrazioni utenti dal frontend creano record nel PIM
- Le recensioni scritte dagli utenti appaiono nel PIM
Meccanismo Cache:
- Cache layer tra PIM e Frontend
- Modifiche PIM → invalidazione cache → frontend legge dati aggiornati
- Menu "Pulisci Cache" nella rotellina per invalidazione manuale
CMS ↔ Frontend
Relazione di Rendering:
-
CMS → Frontend:
- Il CMS gestisce contenuti editoriali visualizzati sul frontend
- Le pagine CMS sono renderizzate dinamicamente da Statamic
- I contenuti CMS possono includere dati dal PIM (es: lista alloggi in una pagina)
-
Frontend → CMS:
- I form del CMS raccolgono dati dagli utenti
- Le submission form vengono salvate nel CMS
Separazione Responsabilità:
- CMS: Contenuti editoriali, pagine informative, blog
- PIM: Dati strutturati, alloggi, prenotazioni, configurazioni
Database ↔ Tutti i Componenti
Hub Centralizzato:
-
Database come Single Source of Truth:
- Tutti i componenti leggono/scrivono sul database
- Il database centralizza tutti i dati della piattaforma
- Sistema di relazioni complesse tra entità
-
Sistema di Cache:
- Cache layer riduce il carico sul database
- Cache per query frequenti (ricerche, liste alloggi)
- Invalidazione cache quando dati cambiano
Integrazioni Esterne ↔ Componenti
Servizi Esterni:
-
Gateway Pagamento ↔ Frontend/PIM:
- Frontend: Processamento pagamenti durante checkout
- PIM: Visualizzazione stato pagamenti, gestione rimborsi
-
Email Service ↔ Tutti:
- Frontend: Email conferme prenotazioni
- PIM: Notifiche amministratori
- CMS: Email da form contatto
-
Maps Service ↔ Frontend/PIM:
- Frontend: Visualizzazione mappe interattive
- PIM: Geocoding indirizzi strutture
Stack Tecnologico
Il diagramma riflette lo stack tecnologico utilizzato nella piattaforma:
Backend
Framework e Librerie:
-
Laravel: Framework PHP principale per tutta l'applicazione
-
Filament: Framework per admin panel (PIM)
- Componenti UI riutilizzabili
- Sistema di form e tabelle
- Gestione relazioni complesse
-
Statamic: CMS headless per contenuti editoriali
- File-based o database-based
- API per contenuti
- Page builder integrato
Database:
- MySQL/PostgreSQL: Database relazionale principale
- Redis: Cache in-memory per performance
- File System: Storage file e media
Frontend
Tecnologie:
- Laravel Blade: Template engine per rendering server-side
- JavaScript: Interattività e dinamismo
- Alpine.js: Framework JavaScript leggero per componenti reattivi
- CSS/Tailwind: Styling e design system
- Splide.js: Carousel e slider per immagini
Caratteristiche:
- Server-side rendering per SEO
- Progressive enhancement
- Mobile-first responsive design
Infrastruttura
Server e Deployment:
- Web Server: Nginx o Apache
- Application Server: PHP-FPM
- Queue System: Laravel Queue per job asincroni
- Cache: Redis o Memcached
- Storage: File system locale o S3 per media
- CDN: Per asset statici (opzionale)
Sicurezza e Performance
Sicurezza
- Autenticazione e autorizzazione multi-livello
- Protezione CSRF e XSS
- Validazione input lato server
- Gestione sicura dei pagamenti
Performance
- Sistema di cache multi-livello
- Ottimizzazione query database
- CDN per asset statici
- Lazy loading immagini e contenuti
Scalabilità
L'architettura è progettata per essere scalabile:
- Orizzontale: Possibilità di aggiungere server
- Verticale: Ottimizzazione risorse server
- Cache distribuita: Cache condivisa tra istanze
- Database replicato: Read replicas per query
Pattern Architetturali
Il diagramma evidenzia alcuni pattern architetturali utilizzati:
1. Separazione delle Responsabilità
- PIM: Gestione dati strutturati e configurazioni
- CMS: Gestione contenuti editoriali
- Frontend: Presentazione e interazione utente
2. Cache Layer Pattern
- Cache tra ogni livello per ridurre carico database
- Invalidazione cache quando dati cambiano
- Cache distribuita per scalabilità
3. API e Integrazioni
- API interne tra componenti
- Integrazioni esterne tramite servizi dedicati
- Comunicazione asincrona per operazioni pesanti
Note Tecniche Importanti
Gestione Cache
- Tutte le modifiche nel PIM richiedono pulizia cache per essere visibili sul frontend
- La pulizia cache si effettua tramite menu rotellina → "Pulisci Cache"
- Cache viene invalidata automaticamente in alcuni casi, ma non sempre
Sincronizzazione Dati
- Prenotazioni: Gestite in tempo reale, sincronizzazione immediata
- Contenuti PIM: Richiedono pulizia cache manuale
- Contenuti CMS: Pubblicazione immediata, no cache
Versioning
- CMS: Sistema di versioning per contenuti editoriali
- PIM: Log delle modifiche per audit trail
- Database: Migrazioni per versioning schema
Multi-lingua
- Gestione contenuti in più lingue (IT, EN, DE)
- Switch lingua nel PIM e CMS
- Frontend mostra contenuti nella lingua selezionata
Performance
- Cache multi-livello per ottimizzazione
- Lazy loading per immagini e contenuti pesanti
- Query ottimizzate con indici database
- CDN per asset statici