Il cervello digitale della tua flotta viaggia con te

Agenda robusta e intelligente con controllo conflitti, portale autisti mobile-first, gestione flotta completa e contabilità integrata — in un unico ecosistema self-hosted che gira sul tuo NAS. Zero cloud, zero abbonamenti, zero compromessi.

3 Viste Calendario
Conflitti Automatici
Portale Autista Mobile
Google Maps Integrato
~140 MB RAM
PHP 8.2 + MariaDB 11
Docker Ready
Zero Cloud
0
Viste Calendario
0
Tipi Evento
0
Costi Extra Tracciabili
0
MB RAM Totali
0
Cloud Necessari
CeolAgenda — Vista Calendario Mese con viaggi, noleggi e appuntamenti
Calendario Intelligente

Tre viste. Zero conflitti.
Totale controllo.

Il cuore di CeolAgenda è un calendario multi-vista che ti mostra esattamente cosa succede nella tua flotta — oggi, questa settimana, tutto il mese.

📅

Vista Mese — stile Google Calendar

Barre multi-giorno con algoritmo greedy first-fit per evitare sovrapposizioni verticali. Chip colorati per veicolo, icone tipo evento (🚌 🔑 🔔). Click su cella vuota → form creazione con data preimpostata. Tooltip dettagliato al hover. Modalità fullscreen.

📋

Vista Settimana — dettaglio completo

7 colonne con badge stato (In viaggio/Rientro/Partenza). I viaggi multi-giorno in transito appaiono in cima. Percorso, veicolo con pallino colore, autisti e cliente visibili senza click.

🔍

Vista Giorno — 4 categorie intelligenti

Classificazione automatica: In viaggio, Giornaliero, Partenza, Rientro. Card espanse con ogni dettaglio, conteggio totale eventi e messaggio se vuoto.

Switcher rapido Viaggio / Noleggio / Appuntamento

Selettore a 3 pulsanti cambia tipo evento senza chiudere il modale. Navigazione avanti/indietro e pulsante "Oggi". Click sull'header giorno → salto alla vista giornaliera.

Gestione Viaggi & Conflitti

Ogni viaggio sotto controllo,
dal preventivo al pagamento

Form completi, validazioni a prova di errore, rilevamento sovrapposizioni in tempo reale e calcolo automatico dei costi extra.

🚌

Creazione Viaggio Completa

Un unico form per ogni aspetto del servizio — dalla selezione cliente all'ultimo costo extra.

  • Ricerca cliente asincrona (debounce 300ms) con card selezione e creazione inline con controllo duplicati telefono
  • Date partenza/rientro con validazione automatica e orari preimpostabili
  • Autocomplete indirizzi con Google Places API (New) — salva Place ID, lat/lng e indirizzo formattato
  • Tappe intermedie illimitate con nome personalizzato, numerazione dinamica e pulsante rimozione
  • Selezione veicolo con pallino colore e badge "OCCUPATO" in tempo reale — veicoli fuori servizio filtrati
  • Multi-selezione autisti con chip rimovibili — autisti sospesi filtrati, occupati evidenziati
  • Servizi extra: Pasto, Parcheggio, ZTL, Hotel, Varie — ciascuno con importo, sommati al totale
  • Codice CIG/Ordine, metodo pagamento (Bonifico/Contanti/POS), data scadenza pagamento
🛡️

Rilevamento Conflitti Automatico

Mai più un veicolo assegnato a due viaggi — il sistema lo impedisce prima che tu salvi.

  • Verifica sovrapposizione veicolo cross-entity: viaggi vs viaggi, viaggi vs noleggi
  • Verifica individuale per ogni autista con nome completo nel messaggio di errore
  • Esclusione automatica dell'evento corrente in modifica (AND id ≠ ?)
  • Errore HTTP 409: "Marco Bianchi è già assegnato a un altro viaggio nello stesso orario"
  • Badge rosso "OCCUPATO" nei dropdown, risorse libere ordinate per prime
  • Chiamata API in tempo reale basata sulle date selezionate nel form
📋

Dettaglio Viaggio Interattivo

Click su qualsiasi evento → modale completo con ogni informazione e azioni rapide.

  • Stripe verticale col colore del veicolo assegnato
  • Percorso Partenza → Tappe → Arrivo cliccabile su Google Maps per navigazione diretta
  • Modifica inline località: mini-editor con autocomplete senza riaprire il form intero
  • Sezione economica: prezzo base + lista servizi extra + riga TOTALE calcolata
  • 3 flag toggle istantanei: Fatturato 🧾, Pagato ✅, Busta ✉️ — un click, API istantanea
  • Banner allerta rosso se veicolo fuori servizio o autista sospeso
  • Telefono e email cliente cliccabili (link tel: e mailto:)
🔑

Noleggi & Appuntamenti

Due moduli integrati nello stesso ecosistema con le stesse protezioni anticonflitto.

  • Noleggi: data ritiro/riconsegna, luogo con autocomplete, numero contratto, prezzo
  • Conflitto cross-entity: un veicolo a noleggio non può essere in viaggio nello stesso periodo
  • Appuntamenti: titolo, descrizione, data, ora, durata — orario fine calcolato dal backend
  • Icone a calendario: 🔑 bordo dorato per noleggi, 🔔 giallo per appuntamenti
  • Flag fatturato/pagato/busta anche sui noleggi — stessa UX dei viaggi
  • Appuntamenti visibili solo a editor/admin, nascosti ai viewer per privacy
Portale Autista

Lo smartphone dell'autista
diventa il suo cruscotto

Interfaccia mobile-first dedicata — l'autista vede solo i suoi viaggi, con navigazione Google Maps a portata di tap e countdown in tempo reale.

🟢

Card "In corso" — verde, prominente

Timeline verticale: Partenza → ogni Tappa → Arrivo. Ogni località link a Google Maps dalla posizione corrente. Info veicolo, cliente, colleghi e note. Card attive sempre sopra quelle in partenza.

🟠

Card "In partenza" — countdown arancione

"In partenza — tra X minuti" con countdown aggiornato ogni 60 secondi via setInterval. Stessa timeline e link navigazione della card attiva.

📱

3 viste calendario ottimizzate per mobile

Vista Giorno con card viaggio, Settimana con 7 sezioni verticali, Mese con pallini colorati. Tap su un giorno → salto alla vista giornaliera.

🔒

Privacy — dati sensibili rimossi lato server

L'autista NON vede: prezzi, CIG, pagamenti, flag economici, azienda esterna. Filtrati dalla risposta API, non solo nascosti via CSS. Admin/Editor con flag autista vedono il portale da mobile.

I Miei Viaggi
Marco B.
Giorno
Settimana
Mese
In corso
07:30
Piazzale Roma, Venezia
09:15
Sosta pranzo — Autogrill
12:00
Fiera di Roma
🚌 Corriera BluComune di Venezia
Tra 45 min
14:30
Hotel Danieli, VE
16:00
Aeroporto Marco Polo
🚐 NCC NeroAgenzia Stella
Ecosistema Flotta

Veicoli, clienti, autisti, utenti.
Tutto connesso.

Quattro anagrafiche integrate con protezioni antiduplicato, ruoli granulari e integrità referenziale.

🚌

Veicoli

Targa unica (auto-maiuscolo), soprannome, tipo (Pullman/Scuolabus/NCC/Altro).

  • Selettore colore honeycomb 54 tonalità
  • Colore visibile come stripe a calendario
  • Flag "Fuori servizio" — nascosto dalle ricerche, grigio a calendario con icona avviso
  • Protezione eliminazione con conteggio viaggi
👥

Clienti

Nome, ragione sociale, telefono (link cliccabile), email.

  • Duplicato telefono bloccato server + client
  • Creazione inline dal form viaggio
  • Ricerca istantanea con filtro testuale
  • Eliminazione bloccata se ha viaggi (409)
🧑‍✈️

Autisti

Account viewer con portale mobile dedicato.

  • Duplicato nome+cognome bloccato
  • Sospensione con disconnessione immediata
  • Storico viaggi preservato dopo sospensione
  • Grigio a calendario con icona avviso
👤

Utenti & Ruoli

Admin, Editor, Viewer — matrice permessi completa.

  • Username auto-generato nome.cognome
  • bcrypt cost 12 + blocklist password comuni
  • Cambio password forzato al primo accesso
  • User versioning → reload forzato su tutti i device
Amministrazione Evoluta

Pagamenti, export, notifiche.
Tutto a portata di click.

Strumenti operativi che trasformano il caos amministrativo in un flusso ordinato.

🔔

Notifiche Scadenze

Badge campanella con conteggio pagamenti scaduti. Pannello con: cliente, totale (prezzo + servizi), telefono/email cliccabili, CIG, percorso e giorni di ritardo in tempo reale. Include viaggi e noleggi.

📊

Export CSV Avanzato

8 gruppi selezionabili: Generale, Date, Percorso, Cliente, Veicolo/Autisti, Economia, Note, Stato. Selezione/deselezione per gruppo. Rispetta filtri attivi. Separatore punto e virgola, BOM UTF-8 per Excel italiano.

🔎

Filtri Combinabili

Ricerca testuale su tutto (cliente, indirizzo, veicolo, autisti, contratto). Filtro mese, range date, autista, veicolo. Pulsante reset filtri. Vista tabellare viaggi + noleggi unificata.

PiattaformaDocker + Compose
BackendPHP 8.2 + Apache
DatabaseMariaDB 11 LTS
FrontendVanilla JS — 0 framework
RAM totale~140 MB (app + db)
Deploy targetQNAP · Synology · Linux
InternetNon richiesto
CSRFToken 64 char + hash_equals
Brute-force5 tentativi → lockout 5 min
Rate Limit60 write/min per sessione
Password Hashbcrypt cost 12
Timing-safepassword_verify su hash dummy
CSPNo unsafe-inline · frame-ancestors none
DB Port 3306Non esposta — rete Docker
SQL Injection100% prepared statements
SessionHttpOnly · SameSite=Strict
StatusOperativo
Sicurezza & Infrastruttura

I tuoi dati.
Il tuo server.
La tua rete.

Nessun cloud, nessun intermediario. Un NAS QNAP o Synology basta. I dati non escono mai dalla tua rete locale.

🔐

Autenticazione blindata

Cookie HttpOnly + SameSite=Strict, rigenerazione ID dopo login, timeout 30 min (24h con "Ricordami"), scadenza assoluta 15 giorni. Timing-safe su utente inesistente per prevenire username enumeration. Distruzione completa sessione al logout.

💾

Backup automatico con rotazione

Script cron — mysqldump compresso gzip, single-transaction, routine e trigger. Retention 14 giorni. Compatibilità Nextcloud/WebDAV. Credenziali in file temp chmod 600, cancellato dopo il dump.

🔄

Migrazioni zero-downtime

ensureSchema() al boot: verifica colonne con SHOW COLUMNS, aggiunge mancanti con ALTER TABLE, crea tabelle nuove. Versione schema in sessione — nessun check ripetuto.

🧹

Gestione errori blindata

strip_tags + troncamento su ogni input. error_log per il dev, messaggio generico per l'utente. Shutdown handler per errori fatali. Eccezioni MySQL 1062 (duplicati) tradotte in messaggi utente.

🔗

Integrità referenziale completa

Impossibile eliminare clienti/veicoli/autisti con viaggi associati (409 con conteggio). Eliminazione viaggio → CASCADE su trip_drivers, trip_services, trip_stops. Admin non può eliminare sé stesso né cambiare il proprio ruolo.

Come Funziona

Operativo in tre passi

Dal download al primo viaggio pianificato — in meno di un'ora.

1

Installa con Docker

Un singolo docker compose up -d --build sul tuo NAS o server. Configura .env con le password e sei online.

2

Configura la Flotta

Carica veicoli con colori personalizzati, crea autisti con account viewer, importa clienti. Username generato, duplicati prevenuti.

3

Pianifica e Parti

Crea viaggi dall'agenda, il sistema verifica conflitti. Gli autisti aprono il telefono e vedono card con countdown, timeline e Maps.

Contattami

Pronto a digitalizzare
la tua flotta?

Sono Andrea Ceol, sviluppatore di CeolAgenda. Questo è il mio primo progetto — ci ho messo testa, cuore e notti insonni. Scrivimi direttamente per una demo o per qualsiasi domanda.

🎯

Demo su misura

Ti mostro le funzionalità più rilevanti per il tuo tipo di trasporto — NCC, bus, scuolabus.

Installazione guidata

Ti affianco nel setup su NAS o server dedicato con i tuoi dati reali — dal Docker al primo login.

🤝

Supporto diretto

Parli con chi ha scritto ogni riga di codice. Nessun call center, nessun ticket.