Descrizione Generale dell'Applicazione Lumesia
Benvenuti nel manuale tecnico dell'applicazione 'Lumesia'. Questo documento fornisce una panoramica completa dell'architettura, delle funzionalità e delle specifiche tecniche del progetto. L'applicazione è sviluppata nativamente in Kotlin, il linguaggio moderno, conciso e sicuro promosso da Google per lo sviluppo Android, garantendo performance ottimali e un'elevata manutenibilità del codice.
L'obiettivo primario dell'app 'Lumesia' è offrire un'esperienza di gestione delle carte di servizio e dei punti di interesse (POI) per gli utenti, sfruttando tecnologie avanzate e garantendo al contempo un'ampia compatibilità con l'ecosistema Android.
Architettura e Funzionalità Principali
Il cuore dell'applicazione si basa su un'architettura robusta e modulare, progettata per garantire scalabilità e testabilità. Di seguito sono elencate le sue caratteristiche fondamentali:
-
Architettura basata su Componenti: L'applicazione adotta un'architettura basata su componenti, con una netta separazione tra la logica di business, la logica di presentazione e l'interfaccia utente. L'uso di componenti di Android Jetpack come
ViewModel
, LiveData
e Flow
permette di creare un'interfaccia reattiva e di gestire il ciclo di vita dei componenti in modo efficiente, riducendo i memory leak e semplificando i test unitari.
-
Integrazione con Firebase: L'applicazione si integra con Firebase per la gestione delle notifiche push e il remote config. Questa integrazione permette di accedere a funzionalità avanzate come la gestione delle traduzioni e delle notifiche in tempo reale [1][2][4][13].
-
Gestione delle Mappe con Google Maps: Per la gestione delle mappe e dei punti di interesse, è stato scelto Google Maps, che offre un controllo granulare e supporta un'ampia gamma di funzionalità per la visualizzazione e l'interazione con i POI [31][33].
-
Supporto per la Localizzazione: L'applicazione supporta la localizzazione dell'utente per fornire servizi basati sulla posizione, come la navigazione verso i POI e la gestione dei servizi di pagamento [33].
-
Gestione delle Carte di Servizio: L'app è stata progettata per gestire le carte di servizio, offrendo funzionalità come l'aggiunta, la rimozione e la visualizzazione delle carte. Questo sistema è implementato tramite un database locale crittografato, garantendo un accesso rapido e la persistenza dei dati anche in assenza di connessione [8][24].
-
Sistema di Traduzioni: Per personalizzare l'esperienza utente, l'applicazione supporta multiple lingue attraverso un sistema di traduzioni gestito tramite file JSON e Firebase Remote Config [6][13].
-
Sistema di Autenticazione Biometrica: L'applicazione supporta l'autenticazione biometrica per garantire la sicurezza delle operazioni sensibili, come i pagamenti e la gestione delle carte di servizio [16][33].
Struttura del Progetto
Il progetto è strutturato in diversi moduli e package, ognuno con responsabilità specifiche:
-
Package principale (com.faiservice.lumesia): Contiene le classi principali dell'applicazione, come l'
App
class che estende Application
e gestisce l'inizializzazione dell'app, la configurazione di Koin per l'injection di dipendenze, e la gestione dei file di traduzione [1].
-
Package strumenti (com.faiservice.lumesia.strumenti): Contiene utility e classi di supporto per varie funzionalità dell'applicazione, come la gestione delle preferenze, la crittografia, la gestione delle traduzioni, e molto altro [5][6][7][8][9][10][12][13][14][15][17][18][19].
-
Package classioggetti (com.faiservice.lumesia.classioggetti): Contiene le classi di modello che rappresentano i dati dell'applicazione, come le carte di servizio, i punti di interesse, e le risposte delle API [20][21][22][23][24][25][26][27][28][29][30][31][32].
-
Package frammenti (com.faiservice.lumesia.frammenti): Contiene i frammenti dell'applicazione, che rappresentano le varie schermate e componenti dell'interfaccia utente [33][34][35][36][37][38][39][40][41][42][43][44][45][46].
-
Package adapter (com.faiservice.lumesia.adapter): Contiene gli adapter per le varie liste e grid view dell'applicazione, che gestiscono la visualizzazione dei dati nelle interfacce utente [47][48][49][50][51][52][53].
Sicurezza
La sicurezza è una priorità nell'applicazione Lumesia. Di seguito sono elencate le principali misure di sicurezza implementate:
-
Crittografia dei Dati: L'applicazione utilizza la crittografia per proteggere i dati sensibili, come le informazioni delle carte di servizio. La classe
CryptData
gestisce la crittografia e la decrittografia dei dati utilizzando l'algoritmo AES [5].
-
Autenticazione Biometrica: L'applicazione supporta l'autenticazione biometrica per garantire che solo gli utenti autorizzati possano accedere a funzionalità sensibili, come i pagamenti e la gestione delle carte di servizio [16][33].
-
Protezione contro il Root: L'applicazione verifica se il dispositivo è stato rootato e, in caso affermativo, impedisce l'esecuzione dell'app per prevenire potenziali attacchi e violazioni della sicurezza [7].
-
Gestione Sicura delle Preferenze: Le preferenze dell'applicazione sono gestite in modo sicuro utilizzando
EncryptedSharedPreferences
, che crittografa i dati delle preferenze per proteggerli da accessi non autorizzati [8].
-
Validazione dei Dati: L'applicazione valida i dati inseriti dagli utenti per garantire che siano corretti e sicuri. Ad esempio, la classe
CarteInserisciNuovaFragment
valida i dati delle carte di servizio prima di inviarli al server [37].
Compatibilità e Supporto Versioni
È stata posta grande attenzione per garantire che l'applicazione sia accessibile al maggior numero possibile di utenti. Il supporto va dall'API Level 26 fino all'API Level 35, coprendo un vasto range di dispositivi, dai più datati ai più recenti.
- API 26: Android 8.0 (Oreo)
- API 28: Android 9 (Pie)
- API 29: Android 10 (Q)
- API 30: Android 11 (R)
- API 31: Android 12 (S)
- API 33: Android 13 (Tiramisu)
- API 34: Android 14 (Upside Down Cake)
- API 35: Android 15 (Vanilla Ice Cream)
Localizzazione
L'applicazione è progettata per la gestione delle lingue relative alla localizzazione tramite Firebase Remote Config. Questo approccio permette di aggiornare i testi della localizzazione, aggiungere o rimuovere lingue senza la necessità di effettuare una nuova build dell'applicazione. I file di traduzione sono gestiti tramite la classe FileManager
, che scarica i file di traduzione da Firebase Remote Config e li salva localmente [13].
Scopo del Manuale Tecnico
Questa introduzione serve a dare un contesto generale. Il resto di questo manuale tecnico è la risorsa definitiva per gli sviluppatori e contiene un'analisi dettagliata, classe per classe e funzione per funzione, dell'intera codebase dell'applicazione. Ogni componente, servizio, e utility è documentato per spiegare il suo scopo, le sue dipendenze e il suo funzionamento interno.
Dettagli del Documento
Data di creazione |
23 Giugno 2025 |
Data di revisione |
23 Giugno 2025 |
Stato |
Draft |
Redatto da |
Chiodi Massimiliano |
Creato con |
Gemini AI, gemma3-27b - Nexid LAIR |
Vidia è un marchio registrato di proprietà di Nexid S.r.l. - Milano, Via Filzi, 27 - Codice Fiscale e Partita Iva 05512040964