CatechHub è un'applicazione mobile creata da un catechista per i catechisti. Digitalizza il registro parrocchiale in modo completo, sicuro e rispettoso della privacy dei minori. Tutti i dati restano sul tuo dispositivo, protetti da crittografia AES-256-GCM con chiave hardware-backed. Nessun cloud, nessun server centrale. L'app funziona completamente offline: la connessione serve solo per il controllo opzionale degli aggiornamenti (disattivabile) e per il feedback volontario all'autore.
| Problema | Soluzione CatechHub |
|---|---|
| Fogli di carta persi o illeggibili | Anagrafica digitale con ricerca immediata |
| Dati sensibili di minori su cloud (o su fogli accessibili a tutti...) | Zero dati su server esterni — tutto rimane sul dispositivo |
| App che richiedono internet | 100% offline — funziona anche in montagna o nelle sale più schermate |
| Condivisione complicata tra catechisti | Sync P2P via Bluetooth/WiFi Direct — crittografato end-to-end |
| Privacy sacrificata per la comodità | Privacy by design — biometria, schermo protetto, dati cifrati, GDPR by design |
CatechHub adotta un approccio defense-in-depth, dove ogni livello è progettato per proteggere i dati anche se quello precedente venisse superato:
| Cosa protegge | Come lo fa |
|---|---|
| Accesso all'app | Solo con impronta digitale / riconoscimento facciale / PIN del telefono — nessuna password personalizzata, nessun account |
| Blocco hardware | Verifica TEE/StrongBox all'avvio — se hardware di sicurezza assente, l'app NON si avvia (nessun fallback software) |
| Dati sul telefono | Cifrati con AES-256-GCM — chiave master custodita in AndroidKeyStore (TEE/StrongBox hardware, nessun fallback software) |
| Campi sensibili | Cifratura di campo aggiuntiva (AES-256-GCM, chiave per-dispositivo) per i dati più delicati (allergie, note sanitarie, uscite autonome) |
| Sincronizzazione P2P BT/WiFi | End-to-end TripleDH X25519 (static↔static + static↔ephemeral×2 + ephemeral↔ephemeral) + HKDF-SHA256 (CatechHub_P2P_Session_v3) + AES-256-GCM (AAD CatechHub_Context_P2P_v1), chiavi effimere per-sessione MAI persistite (forward secrecy), rotazione finestra 30 min (keep corrente+precedente), pairing code SAS 6 cifre su sharedSecret+nonce+efimere ordinate (anti-MitM, P2PSecurityService.computePairingCode), key pinning (publicKeyMatchesAssociation), heartbeat 30s + periodic 60s + watch Hive 500 ms → sync incrementale realtime quando vicini (NormalModeSyncHandler per normale, catena Ed25519 per Responsabile), doppio consenso per Altro Catechista |
| Canale classe (P2P) | Chiave per-classe AES-256-GCM: i dispositivi "Senza Titolo" ricevono solo blob opachi (relay) e non possono leggere i dati |
| Canale parrocchiale (P2P) | Avvisi e riunioni della rete parrocchiale scambiati in chiaro tra dispositivi associati: per scelta di design non contengono dati personali (solo testo di comunicazione). I dati personali passano sempre dal canale classe cifrato |
| Condivisione QR | AES-256-GCM con PIN 12 cifre (Random.secure, valido 3 min, meta createdAt/expiresAt verificata), PBKDF2-HMAC-SHA256 350.000 nuovi / 60.000 legacy read, AAD CatechHub_Context_QRShare_v1, chunk 1200B con checksum SHA-256 (4 hex), packet checksum 12 hex, compress Base64 + segment, indice DB cifrato con PIN di sessione (anti-metadata exposure), sync differenziale per modulo (id+updatedAt, demo-PII esclusa), rate-limit all'import (5 errati → blocco 1 min, DataShareReceivePage) |
| Schermo | Blocco screenshot e screen recording non autorizzati con FLAG_SECURE |
| Runtime | freeRASP (Talsec) rileva e blocca root, emulatori, tampering, hooking e hacking |
| Sessione | Stato solo in RAM (mai persistito su disco); blocco automatico dopo 2 minuti in background e dopo 5 minuti di inattività in foreground |
| Backup | AES-256-GCM con derivazione PBKDF2-HMAC-SHA256 — 350.000 iterazioni per i nuovi backup (File .catechhub), 210.000 legacy accettate in lettura, PIN min. 12 caratteri alfanumerici (≥1 lettera + ≥1 cifra, keyspace ≈62¹²); l'export conformità GDPR usa 350.000 iterazioni con anti-brute-force per-file (5 tentativi → blocco 30 min, BackupEncryptionService) |
| Aggiornamenti | Controllo versione verso GitHub con certificate pinning SHA-256 (fail-closed), opzionale e disattivabile dalle impostazioni |
| Associazioni P2P | Chiavi X25519 per dispositivo salvate con l'associazione — chiave pubblica remota verificata ad ogni riconnessione (key pinning) |
| Catena di fiducia | Certificati di approvazione Ed25519 (firma asimmetrica) con scadenza 30 giorni, verificati su una trust root pubblica (QR di fiducia), revoche firmate propagate peer-to-peer |
| GDPR / Tracciabilità | Ogni registrazione memorizza data, ora e autore dell'ultima modifica; Registro Trattamenti firmato HMAC-SHA256 (audit log append-only) per ogni operazione rilevante |
| Diritto all'oblio | Tombstone firmati (HMAC-SHA256 sul canale P2P + firma Ed25519 per-dispositivo, asimmetrica e attribuibile) e propagati peer-to-peer che impediscono la "resurrezione" dei dati cancellati; hard delete irreversibile (solo Responsabile) |
| Retention automatica | Consensi con scadenza: scaduti → stato RITIRATO → 30 giorni di grazia → cancellazione a cascata automatica dei dati |
Nessun dato personale lascia mai il tuo telefono se non durante una sincronizzazione volontaria con un altro catechista di tua fiducia, previa approvazione e crittografia end-to-end.
CatechHub è progettata per lasciare al catechista il pieno controllo dei propri dati, in linea con il Regolamento Generale sulla Protezione dei Dati (GDPR — Reg. UE 2016/679):
- L'app non condivide dati. CatechHub non dispone di server né di servizi cloud, non invia dati a terzi e non integra sistemi di analytics, tracking o pubblicità. Nessuna informazione lascia il tuo dispositivo se non su tua esplicita iniziativa.
- Sei tu a gestire i dati. L'utente è il soggetto che tratta e gestisce i dati: inserimento, modifica ed eliminazione avvengono direttamente dal tuo dispositivo. Non esistono account remoti, profili online o registri lato server.
- Dati sensibili trattati con cautela (art. 9 GDPR). I dati dei minori sono informazioni "particolari" e come tali vengono trattati: cifrati con AES-256-GCM, custoditi nel secure storage hardware, con cifratura di campo aggiuntiva per i dati più delicati e accessibili solo previa autenticazione all'app.
- Privacy by design e by default (art. 25 GDPR). Minimo, essenziale: vengono raccolti solo i dati strettamente necessari, la crittografia è attiva di default e ogni funzione di condivisione richiede un consenso esplicito (doppio consenso per i catechisti, PIN per QR e backup).
- Consensi con scadenza (art. 7, 9 GDPR). In modalità Responsabile ogni iscritto ha un consenso privacy con data di sottoscrizione e durata di validità configurabile, registrato con evidenza del firmatario (nome del genitore/tutore) e l'identità del catechista che ha registrato la firma (voce immutabile nel Registro Trattamenti): l'app segnala i consensi in scadenza e applica automaticamente la retention (RITIRATO → grazia 30 giorni → cancellazione a cascata).
- Sincronizzazione solo consensuale e verificata. L'unico scambio possibile avviene peer-to-peer (Bluetooth/WiFi Direct) esclusivamente con dispositivi di tua fiducia, previo pairing verificato e crittografia end-to-end. Nessun intermediario. In modalità Responsabile solo i dispositivi approvati (certificati Ed25519) possono sincronizzare le classi.
- Tracciabilità (art. 5.2 GDPR). Registro Trattamenti firmato HMAC-SHA256: ogni operazione rilevante (iscrizione, modifica, consenso, passaggio anno, retention, oblio) è registrata con data, ora e autore. Il registro è append-only e verificabile.
- Portabilità (art. 20 GDPR). Puoi esportare l'intero database in un file
.catechhubprotetto da password e ripristinarlo su un altro dispositivo quando vuoi. È disponibile anche un export conformità GDPR (CSV del registro + pacchetto cifrato). - Diritto alla cancellazione (art. 17 GDPR). Puoi eliminare definitivamente tutti i dati in qualsiasi momento dalle Impostazioni (cancellazione completa o selettiva). La cancellazione produce un tombstone che impedisce ai dati di riapparire tramite sincronizzazione. L'hard delete irreversibile (dati + tombstone dei dati) è riservato al Responsabile.
- Mitigazione delle violazioni. In caso di accesso fisico non autorizzato al dispositivo, i dati restano illeggibili grazie alla crittografia hardware-backed (AndroidKeyStore/TEE/StrongBox), al blocco biometrico e al blocco automatico della sessione.
- Nessuna profilazione. L'app non traccia i comportamenti, non costruisce profili e non invia alcuna statistica di utilizzo. Il feedback all'autore (Wiredash) è opt-in e disattivato per impostazione predefinita.
CatechHub non è un servizio online: è uno strumento personale. I dati appartengono al catechista che li ha inseriti — e solo a lui. CatechHub facilita la conformità GDPR, non la sostituisce: la responsabilità del trattamento è del catechista/parrocchia.
- Anagrafica ragazzi — Aggiungi, modifica, cerca e organizza gli iscritti in gruppi
- Gestione multigruppo — Crea, unisciti e gestisci più gruppi di catechismo; passa da un gruppo all'altro con un tap e copia i contenuti (anagrafica, presenze, programmazione) da un gruppo a un altro. Tutti i tuoi gruppi sono sempre accessibili da "I miei gruppi" nelle Impostazioni
- Presenze — Crea giornate, fai l'appello (con conteggio rapido), visualizza statistiche e griglie riepilogative, avvisi per assenze ripetute
- Programmazione — Pianifica incontri e associa materiale catechetico, con rilevamento dei conflitti e notifiche promemoria
- Documenti — Gestisci il ciclo di vita: crea, consegna, attendi riconsegna, archivia
- Note contatti — Tieni traccia delle comunicazioni con le famiglie
- Condivisione QR — Esporta e importa moduli selezionati in modo sicuro con PIN a 12 cifre temporaneo (3 minuti) e cifratura AES-256-GCM
- Backup crittografato — Salva e ripristina tutto il database con un file
.catechhubprotetto da password (AES-256-GCM + PBKDF2) e import con merge - Sync P2P Nearby — Modalità normale reingegnerizzata (
NormalModeSyncHandler): Mio Dispositivo condivide anchecatechistId(stessa persona → sync di tutte le classi, convergenza identità), Altro Catechista viene associato atomicamente alla(e) classe(i) scelta(e) (catechistIds/associatedCatechistIds/catechistRoles) → entrambi lavorano offline sulla stessa copia locale e riconvergono realtime quando vicini (NearbyP2P_CLUSTER, heartbeat 30s + periodic 60s + watch 500ms →p2p_sync_dataincrementale). Crittografia militare: TripleDH X25519 + HKDF-SHA256 + AES-256-GCM con forward secrecy, rotazione finestra 30 min, SAS 6 cifre, pinning, AAD. Scope per classe per minimizzazione GDPR; doppio consenso perAltro Catechista. - Modalità Responsabile Catechistico — Area dedicata al responsabile della parrocchia: dashboard parrocchiale con riepilogo (classi attive, ragazzi iscritti, catechisti), gestione delle classi raggruppate per percorso (attive/archiviate), iscrizioni con promozione e passaggio di anno automatico, consensi privacy con durata di validità e retention automatica, Registro Trattamenti GDPR (audit log firmato HMAC), gestione catechisti, logistica delle aule (slot settimanali, controllo conflitti, occupazione tabellare), import ragazzi CSV/XLSX, allarme assenze parrocchiale, rete parrocchiale e dispositivi fidati, percorsi catechistici personalizzabili, Concludi anno catechistico
- Archivio Storico — Chiusura dell'anno con snapshot immutabili del percorso di ogni ragazzo (classe, catechista, sacramenti, % presenze, valutazioni); consultazione per anno con accesso limitato (il catechista vede solo i propri ragazzi, il Responsabile tutto)
- Supplenze — In modalità "Associato", un catechista può delegare la propria classe a un collega con delega crittografica via QR (chiave temporanea AES-256 + ECDH + AES-256-GCM + HMAC), registro supplenze dedicato e revoca firmata
- Logistica visibile anche agli associati — Quando la modalità Responsabile è attiva, i dispositivi "Associato" possono consultare in sola lettura le aule, le stanze e la tabella orario settimanale. La modifica delle aule resta riservata al Responsabile
- Catena di fiducia — Nella modalità Responsabile ogni dispositivo collegato alla parrocchia deve essere approvato (certificato Ed25519 con scadenza 30 giorni, trust root tramite QR di fiducia che trasporta solo la chiave pubblica) prima di poter sincronizzare le classi. Approvazioni e revoche firmate si gestiscono dal "Centro approvazioni" e si propagano peer-to-peer
- Rete Catechistica Parrocchiale — Canale di comunicazione tra i dispositivi approvati: riunioni e avvisi parrocchiali sincronizzati peer-to-peer (canale separato da quello delle classi, senza dati personali)
- Comunicazioni automatiche — Template WhatsApp con placeholders (nome ragazzo, assenze consecutive, data incontro, ecc.) e registrazione note di contatto
- Tracciabilità modifiche — Ogni record mostra data, ora e autore dell'ultima modifica, garantendo piena trasparenza su chi ha modificato cosa e quando
- Esportazione report PDF — Genera per la classe attualmente aperta un documento PDF A4 professionale con i moduli che preferisci: anagrafica, note di contatto, composizione del gruppo, presenze, statistiche, documenti, programmazione degli incontri e catechesi. Il PDF viene generato localmente e condiviso tramite il foglio nativo di Android senza mai passare da server intermedi
- PDF e stampa — Genera report presenze, statistiche assenze e liste gruppi
- Allergie e uscite autonome — Gestisci informazioni sensibili (con cifratura di campo aggiuntiva) con visibilità immediata
- Notifiche incontri — Promemoria locali prima degli incontri (contengono solo data e titolo, nessun dato personale)
- Aggiornamenti — Controllo versione da GitHub con certificate pinning, disattivabile dalle Impostazioni
| Area | Strumento |
|---|---|
| Framework | Flutter & Dart |
| Stato | Riverpod |
| Database locale | 27 box Hive (cifrati AES-256-GCM, HiveAesCipher), auto-recovery atomica per-box (solo registroBox critico) |
| Chiave master | AndroidKeyStore (TEE/StrongBox hardware) — SecurityManager verifica obbligatoria all'avvio, HardwareSecurityException se assente, nessun fallback software |
| Storage sicuro | flutter_secure_storage (Keystore hardware-backed, encryptedSharedPreferences: true) — segreti P2P (p2p_assoc_*) mai in Hive |
| Crittografia | cryptography (puro Dart): AES-256-GCM, X25519 TripleDH (static↔static + static↔ephemeral×2 + ephemeral↔ephemeral, forward secrecy), Ed25519, PBKDF2-HMAC-SHA256 (350k per nuovi QR/backup/export GDPR — 210k/60k legacy solo in lettura), HKDF-SHA256, HMAC-SHA256 |
| Cifratura di campo | FieldEncryptionService — AES-256-GCM per dati sensibili (cieI1: + base64 nonce‖ciphertext), chiave 32B per-dispositivo in box cifrato, egresso decifrato solo nel canale già cifrato |
| Sincronizzazione P2P | Google Nearby Connections P2P_CLUSTER (solo Bluetooth/WiFi Direct, mai internet) + protocollo 17 stati (P2PSyncStatus: idle→pairing→handshake→pairingVerification→sessionEstablished→syncing→completed), sync differenziale per indice+checksum, pairing code SAS 6 cifre, key pinning, rotazione sessione 30 min, heartbeat 30s, NormalModeSyncHandler per modalità normale (Mio Dispositivo = condivisione catechistId + sync tutte le classi; Altro Catechista = associazione atomica + sync solo classi condivise) |
| Canali di sincronizzazione | Canale classe cifrato per-classe (ClassChannelService, blob {v,keyId,sealed} con AAD CatechHub_ClassChannel_v1) — relay opaco; canale parrocchiale in chiaro solo per riunioni/avvisi (nessun dato personale) |
| Condivisione QR | QR chunk 1200B + checksum SHA-256 (4 hex/chunk, 12 hex/pacchetto), PIN 12 cifre (3 min, Random.secure), PBKDF2 350k nuovi / 60k legacy read, compress+segment, diff per modulo, indice cifrato con PIN di sessione, rate-limit 5 tentativi → blocco 1 min |
| Autenticazione | Biometria nativa Android (local_auth) — solo dispositivo |
| Comunicazioni | Template WhatsApp con placeholders, apertura via URL scheme |
| QR Code | mobile_scanner, qr_flutter |
| pdf, printing | |
| Sicurezza runtime | freeRASP (Talsec) v8 |
| Aggiornamenti | GitHub API con certificate pinning SHA-256, notifiche locali |
| Sync status | Indicatore a pallino (verde/rosso/ciano/giallo) in app bar |
| Multigruppo | Cambio gruppo rapido (class switcher), "I miei gruppi", copia contenuti tra classi |
- Scarica l'APK dall'ultima release su GitHub
- Installa sul telefono Android (versione 10.0 o superiore)
- Avvia e segui il setup guidato — nome, cognome, gruppo
- Inizia a inserire i tuoi ragazzi — il resto è intuitivo
Non serve registrazione, account, email o connessione internet. L'app richiede un dispositivo con hardware di sicurezza (TEE/StrongBox) e blocco schermo attivo.
- Versione corrente: 1.1.0+6
- Piattaforma: Android (minSdk 30, Android 10+)
- Licenza: MIT — libero da usare, modificare e distribuire
Vedi la roadmap completa per le funzionalità in sviluppo, pianificate e in valutazione.
- Documentazione utente
- Documentazione tecnica
- Informativa Privacy
- Sezione GDPR e Sicurezza
- Sviluppatore
MIT License — Copyright (c) 2026 CatechHub
CatechHub è stato sviluppato interamente in "vibe coding" con l'ausilio dell'intelligenza artificiale, da un catechista (non da uno sviluppatore di professione). Il codice è aperto, verificabile e migliorabile da chiunque.
Fatto con dedizione da un catechista, per chi vive ogni giorno la bellezza di accompagnare bambini e ragazzi nel cammino di fede.
