Aggiornamento automatico del calendario Booking su GitHub Pages tramite GitHub Actions
Il cliente desiderava mostrare sul proprio sito web solo le date effettivamente disponibili siu Booking.com, evitando doppie prenotazioni
Il widget ufficiale di Booking no era adatto perché:
- incitava a prenotare direttamente su Booking (commissioniper il cliente);
- non permetteva di integrare facilmente la logica delle disponibilità personalizzate;
- richiedeva aggiornamenti manuali o sincronizzazioni omplesse.
Era quindi necessario un sistema automatico che potesse:
- scaricare il file
.icsdi Booking (il calendario delle prenotazioni); - elaborarlo e pubblicarlo in un formato leggibile dal sito,;
- funzionare in modo autonomo e senza server dedicati.
costruire un piccolo backend Node.js che scaricasse e analizzasse l’ICS, restituendo al sito i dati in formato JSON.
Vantaggi: massima flessibilità e pasing in tempo reale.
Svantaggi: necessità di un hosting con Node.js attivo, manutenzione del server e gestione CORS.
scaricare direttamente il file ICS via fetch() dal browser.
Problema: Booking.com non consente richieste cross-origin (CORS blocked).
Soluzione adottata, dopo analisi si pro e contro generali, perchè è una soluzione completamente serverless e sostenibile:
- GitHub Actions scarica automaticamente il file
.icsda Booking ogni 6 ore. - Lo salva nel repository e lo pubblica tramite GitHub Pages.
- Il sito può quindi leggere il file pubblico aggiornato senza limiti né CORS.
Questa soluzione non richiede nessun server, nessuna manutenzione, ed è completamente trasparente per il cliente.
- Repository GitHub → contiene il file
booking.icse il workflow.github/workflows/update-ical.yml. - GitHub Actions → esegue uno script
curlogni 6 ore per scaricare il file ICS da Booking. - Commit automatico → se il file cambia, viene automaticamente versionato e pubblicato.
- GitHub Pages → serve pubblicamente il file all’indirizzo:
- Il sito del cliente → legge questo file per mostrare un calendario sincronizzato e sempre aggiornato.
- Nessun dato sensibile viene memorizzato o elaborato.
- Tutto è gestito su GitHub, infrastruttura sicura e scalabile.
- Il file
.icsè pubblico ma non contiene informazioni personali, solo date di prenotazione. - L’automazione è completamente grtuita e priva di manutenzione.
Un sistema completamente automatico, affidabile e “serverless”, capace di:
- sincronizzare Bookng con il sito web in modo invisibile;
- evitare doppi inserimenti o errori umani;
- ridurre costi e tempi di gestione.
- GitHub Actions
- GitHub Pages
- cURL & Bash scripting
- ICS (iCalendarstandard)
Test completato con simulazione ICS e notifiche automatiche.
In attesa del link ICS reale del cliente per l’attivazione definitiva.
L’URL del calendario Booking reale è gestito tramite GitHub Secrets. In questo modo il workflow può aggiornare i dati automaticamente senza esporre informazioni sensibli nel codice publico.
Questo progetto nasce da un’esigenza reale: semplificare la gestione delle disponibilità di n agriturismo,
mantenendo l’autonomia del cliente e riducendo al minimo la manutenzione tenica.
Durante la realizzazione ho approfondito diversi aspetti pratici e concettuali:
- Automazione con GitHub Actions: pianificazione di jobcron, gestione del flusso di commit e deploy automatico.
- Integrazione serverless: comprensione di come GitHub Pages possa fungere da hosting “backendless” per dati inamici.
- Gestione file ICS (iCalendar): standard di sincronizzazione usato da Booking e altri gestionali.
- Problem olving tecnico: analisi di più approcci (backend Node.js, fetch lato client, API proxy) e scelta della soluzione più sostenibile.
- Sicurezza e scalabilità: costruire un sistema che funziona 24/7 senza costi di server, mantenendo pieno controllo dei dati.
Il risultato è un flusso di lavoro completamente automatico e trasparente,
che combina semplicità, sicurezza e affidabilità: un perfetto esempio di come una buona architettura possa risolvere un problema reale in modo elegante ed efficiente.