Copertina: Cal.diy: la piattaforma open-source di scheduling per chi si auto-hosta

Cal.diy: la piattaforma open-source di scheduling per chi si auto-hosta

Il fork community-driven di Cal.com, senza codice enterprise e con licenza MIT, per gestire appuntamenti e prenotazioni su infrastruttura propria.

06 luglio 20266 min di lettura
Cal.diyopen sourceschedulingCal.com forkself-hostingMIT licenseNext.jsbooking

Cos'è Cal.diy

Cal.diy è una piattaforma di scheduling, ovvero di gestione appuntamenti e prenotazioni, distribuita come software open-source. Nasce come fork community-driven di Cal.com, uno dei progetti più noti nel panorama della prenotazione appuntamenti open-source, da cui eredita buona parte dell'architettura, dell'interfaccia e del modello dati. La differenza fondamentale è che Cal.diy elimina dal codice sorgente tutte le funzionalità riservate all'edizione enterprise, tutti i controlli di licenza e ogni dipendenza da servizi commerciali obbligatori. Il risultato è un'applicazione completa, rilasciata sotto licenza MIT, che chiunque può scaricare, modificare ed eseguire autonomamente sui propri server.

Il progetto si rivolge in particolare a chi ha esigenze di sovranità dati, customizzazione profonda o integrazione diretta all'interno di altri prodotti software. A differenza delle soluzioni SaaS come Calendly, SavvyCal o la versione cloud di Cal.com, Cal.diy non prevede un piano hosted gestito dagli sviluppatori: l'utente è responsabile dell'intero ciclo di vita dell'applicazione, dall'installazione alla manutenzione, passando per la sicurezza e il backup.

A cosa serve

Cal.diy risolve lo stesso problema fondamentale di ogni strumento di scheduling: coordinare la disponibilità di una o più persone con chi desidera prenotare un appuntamento. In pratica permette di creare "event-type", cioè tipologie di incontro con regole proprie di durata, fasce orarie, buffer tra appuntamenti, giorni lavorativi e numero massimo di partecipanti. Ogni event-type genera una pagina pubblica o un link che il destinatario può utilizzare per scegliere uno slot compatibile con il proprio calendario.

Le funzionalità principali includono la sincronizzazione bidirezionale con calendari esterni come Google Calendar, Outlook e iCloud, la generazione automatica di link per videoconferenze tramite Zoom, Google Meet, Microsoft Teams e Daily.co, la gestione dei fusi orari, le notifiche via email e la possibilità di incorporare il widget di prenotazione all'interno di siti web o applicazioni esistenti. È inoltre presente un sistema di autenticazione basato su NextAuth, un pannello di amministrazione per la configurazione degli eventi e delle integrazioni, e un'API REST che consente di collegare lo scheduler a CRM, sistemi di helpdesk, bot o altri backend aziendali.

Come funziona

Cal.diy è un'applicazione web moderna costruita attorno a uno stack tecnologico consolidato. Il frontend è sviluppato in React.js con Next.js come framework full-stack, Tailwind CSS per lo stile e tRPC per la comunicazione tipizzata tra client e server. Il backend si appoggia a Prisma come ORM e richiede obbligatoriamente un database PostgreSQL, dove vengono memorizzati utenti, eventi, prenotazioni, credenziali OAuth e preferenze. La struttura è organizzata come monorepo gestito con Turborepo, il che facilita lo sviluppo parallelo di più pacchetti ma rende anche il build iniziale più pesante rispetto a un'applicazione monolitica semplice.

L'installazione avviene in genere tramite Docker Compose, con un'immagine ufficiale pubblicata su Docker Hub. Dopo aver clonato il repository e configurato il file .env con le variabili essenziali, tra cui DATABASE_URL, NEXTAUTH_SECRET e CALENDSO_ENCRYPTION_KEY, è possibile avviare l'intero stack con docker compose up. Esiste anche un comando di sviluppo rapido, yarn dx, che provvede a istanziare automaticamente un database PostgreSQL locale e a popolarlo con alcuni utenti di test, utile per valutare l'applicazione senza configurare manualmente ogni dettaglio.

La connessione ai calendari esterni avviene attraverso OAuth. Per Google Calendar, ad esempio, è necessario creare un progetto sulla Google Cloud Console, abilitare l'API Calendar, configurare lo schermo di consenso OAuth e inserire le credenziali JSON nel file di ambiente. Operazioni analoghe sono previste per Microsoft 365, Zoom, HubSpot e altre integrazioni disponibili nell'App Store interno. Le chiavi di crittografia servono a proteggere i token OAuth degli utenti, che vengono quindi conservati in modo sicuro nel database.

Differenze rispetto a Cal.com e Calendly

Cal.diy non va confuso con Cal.com. Sebbene condividano la stessa origine, Cal.com è oggi un prodotto commerciale con modello open core: il codice di base è disponibile sotto licenza AGPLv3, ma funzionalità avanzate come team multipli, organizzazioni, SSO/SAML, analytics avanzate, workflow automation e funzionalità enterprise sono contenute in cartelle proprietarie e richiedono un abbonamento o una licenza. Cal.diy, invece, ha rimosso completamente queste componenti, offrendo un codebase uniformemente MIT e utilizzabile senza account o licenza.

Rispetto a Calendly, la differenza è ancora più netta. Calendly è un servizio gestito, con prezzo spesso basato sul numero di utenti e con limitazioni sulla customizzazione dell'interfaccia e sulla portabilità dei dati. Cal.diy richiede invece di gestire l'infrastruttura, ma offre in cambio assenza di costi per utente, pieno controllo del codice sorgente, white-label totale e la possibilità di modificare flussi, email, pagine di prenotazione e logica di routing secondo le proprie esigenze.

Perché conta

Per una PMI, un'agenzia o un founder tecnico italiano, Cal.diy rappresenta un'alternativa concreta ai classici tool di booking gestiti da terzi. Il primo vantaggio è la sovranità dei dati: le informazioni su clienti, appuntamenti e disponibilità restano all'interno dell'infrastruttura scelta dall'azienda, con evidenti benefici in termini di privacy, GDPR e controllo operativo.

Il secondo vantaggio è la flessibilità. Essendo scritto in Next.js e TypeScript, Cal.diy può essere personalizzato, tematizzato ed esteso facilmente da un team di sviluppo interno. Può essere usato come booking page pubblica, come componente embedded all'interno di un SaaS, oppure come backend di scheduling a cui affidare la logica di disponibilità lasciando all'applicazione principale la gestione dell'interfaccia.

Il terzo vantaggio è economico, almeno per chi ha già competenze DevOps: non esistono costi per utente o per prenotazione, e l'unico onere è quello del server e del database. Per chi gestisce già un VPS o un cluster Kubernetes, aggiungere Cal.diy può costare meno di una sottoscrizione commerciale equivalente, soprattutto al crescere del numero di utenti o di sedi.

Limiti e a chi conviene

Cal.diy non è la scelta giusta per tutti. Il README ufficiale del repository è esplicito: il progetto è raccomandato principalmente per uso personale e sperimentale, non come soluzione enterprise pronta per la produzione aziendale critica. La gestione del server, dei backup, degli aggiornamenti, delle patch di sicurezza e delle migrazioni del database è interamente a carico dell'utente. Inoltre, la rimozione delle funzionalità enterprise significa che non sono disponibili nativamente team organizzativi complessi, routing form avanzati, analytics integrati o SSO aziendale.

La curva di apprendimento e i tempi di build possono essere significativi: si parla di un monorepo Next.js con molte dipendenze, build lenti e requisiti di memoria non trascurabili. Chi cerca una soluzione pronta in pochi minuti troverà più comodo un SaaS gestito. Chi invece ha bisogno di un motore di scheduling da integrare nel proprio prodotto, o di una piattaforma di prenotazione white-label su infrastruttura propria, troverà in Cal.diy un punto di partenza solido e trasparente.

Conclusione

Cal.diy è uno degli esempi più interessanti di come un progetto open-source maturo possa essere "ripulito" dalle componenti commerciali per offrire una versione interamente controllabile dall'utente. Non è uno strumento per utenti finali alla prima esperienza tecnica, ma è una risorsa preziosa per sviluppatori, founder e aziende che vogliono costruire un'esperienza di prenotazione su misura senza dipendere da piattaforme esterne. La sua forza sta nella combinazione di un codice ben conosciuto, ereditato da Cal.com, con una licenza permissiva e un modello esclusivamente self-hosted.

Hai letto fino a qui

🤔 Hai domande su questo argomento?

Posso aiutarti a capire come applicarlo al tuo business. Scegli come vuoi parlarmi.

— oppure —

💬 Chat: risposta immediata · 📧 Email: risposta personale entro 24h · 🔒 Niente spam

Continua a leggere