IO
💡 Questo è il punto d'inizio dedicato a chiunque voglia approfondire come funzionaIO
, la sua tecnologia, le logiche di dominio e le scelte implementative. Qui troverai la descrizione ad alto livello dell'architettura, dei componenti e dei flussi principali; senza pretendere di essere esaustivi in questo repository, speriamo ti aiuti ad orientarti nell'ecosistema di applicazioni e librerie che compongono la piattaformaIO
.
Per informazioni sul progetto, sull'utilizzo e sul trattamento dei dati, per favore consulta il sito web del progetto.
Indice dei contenuti generato con markdown-toc
Descrizione del progetto
Il progetto IO:
- permette agli enti pubblici di entrare in contatto con il cittadino attraverso un app mobile ribaltando il tradizionale paradigma di comunicazione
- la pubblica amministrazione contatta il cittadino quando ha qualcosa da comunicargli
- è un vettore attraverso il quale le istituzioni governative veicolano iniziative sociali, economiche e sanitarie
- esempio: bonus vacanze, cashback, certificato covid europeo, etc.
Leggi di più
- IO l'app dei servizi pubblici - PagoPA
- IO l'app dei servizi pubblici - Team per la trasformazione digitale
Overview architetturale
IO
è una piattaforma composta da un ecosistema di applicazioni rete.
Il touch point per i Cittadini è l'App IO, applicazione mobile per iOS e Android, attraverso la quale essi possono accedere ai servizi offerti sulla piattaforma IO
dagli Enti della Pubblica Amministrazione. L'identificazione dei Cittadini è delegata a Identity Provider terzi quali i provider SPID e l'apposito servizio CIE (Carta d'identità elettronica) fornito da Istituto Poligrafico e Zecca dello Stato.
Gli Enti e le Organizzazioni possono integrare i loro sistemi informativi utilizzando sia i portali messi a disposizione da IO
che le API esposte.
Se sei un Ente o Organizzazione e vuoi maggiori informazioni su come integrare i tuoi servizi su IO
, per favore consulta il nostro sito web.
La piattaforma IO
è progettata ispirandosi ai seguenti principi:
- architettura a microservizi: il sistema si compone di molteplici applicazioni di rete che collaborano alla realizzazione dei flussi di dominio;
- everything as code: cerchiamo di descrivere tutto tramite il codice, incluso l'infrastruttura, le logiche di code-review e le scelte di code design;
- open by design: il codice sorgente è pubblico e aperto così come le discussioni tecniche che si sviluppano sulle pull-request di ogni repository.
Per approfondire come questi principi vengono implementati si rimanda alle repositories relative ai singoli progetti riportate di seguito.
Repositories
Di seguito le repositories dove trovare le implementazioni in codice delle funzionalità di IO
.
Repositories principali
App
io-app
app IO per dispositivi mobili iOS e Android
io-services-metadata
Contenuti statici usati dall'app.
Questa repository permette di gestire i contenuti che l'app consuma (immagini, configurazioni, banners, anagrafica comuni etc)
come se fossero codice: versionati e con processo di code review. Una volta che una PR che propone dei contenuti viene mergiata sul ramo principale, una pipeline dedicata
sposta i contenuti sulla CDN di app IO
Infra
io-infra
Le definizioni Terraform delle risorse cloud utilizzate da IO.
io-infrastructure-live-new
TBD
gitops
Definizione delle CI/CD utilizzate dai repository IO per code-review e deploy
Backend
io-backend
Application gateway che espone le API della piattaforma IO
verso l'app. Si occupa gestire la sessione utente dei Cittadini e aggregare le chiamate verso i diversi microservizi che implementano le business logic. E' il punto unico di integrazione con gli Identity Provider.
io-functions-app
Function app che implementa le business logic delle interazioni del Cittadino con la piattaforma.
io-functions-admin
Function app che implementa attività di amministrazione piuttosto che processi batch.
io-functions-services
Function app che implementa le business logic delle interazioni degli Enti e delle Organizzazioni con la piattaforma.
io-functions-public-event-dispatcher
Permette di registrare dei webhook che reagiscono agli eventi di dominio che vengono emessi nei vari flussi.
io-functions-pushnotifications
Gestisce l'integrazione con i servizi di push notification.
io-functions-assets
Proxy verso gli asset statici usati dall'app.
Web
io.italia.it Sito istituzionale del progetto, privacy policy, termini e condizioni.
UtilitÃ
react-native-cie
E' la libreria inclusa in app IO per effettuare l'autenticazione tramite CIE (Carta di Identità Elettronica).
In particolare contiene l'implementazione Android che è un adattamento dell'SDK sviluppato da IPZS.
Per quanto riguarda iOS la repository contiene solo il framework compilato e non i sorgenti che invece sono disponibili qui.
Maggiori dettagli su come l'app usa questa liberia sono disponibili in questo documento
io-react-native-zendesk
E' la libreria inclusa in app IO che permette agli utenti di richiedere assistenza. In particolare è una personalizzazione della libreria react-native-zendesk-v2
modificata opportunamente per le esigenze di IO. Include l'uso degli SDK ufficiali di Zendesk e il layer di comunicazione tra il nativo e React Native
push-notificator
Semplice app desktop per l'invio di push notification verso emulatori iOS
Strumenti per lo sviluppo
io-app-dev-server
Server per lo sviluppo di app IO: usando questo strumento, che può essere eseguito in locale, non è necessario interfacciarsi ai servizi di produzione.
Realizza tutti i servizi e gli endpoints che l'app di produzione utilizza: API del backend di IO, assets della CDN, API di pagoPA, API delle iniziative (cashback, bonus vacanze, green pass etc).
Il server è configurabile a livello di risposte e contenuti oltre a supportare, per quasi tutti i servizi, un layer di generazione casuale dei contenuti delle risposte.
Iniziative
Carta Giovani Nazionale
TBD
Sicilia Vola
TBD
Green Pass
TBD
Come contribuire
TBD
Licenze
TBD