Awesome
IO
💡 Questo è il punto d'inizio dedicato a chiunque voglia approfondire come funziona
IO
, 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
.<br/>Per informazioni sul progetto, sull'utilizzo e sul trattamento dei dati, per favore consulta il sito web del progetto.
Indice dei contenuti <small><i><a href='http://ecotrust-canada.github.io/markdown-toc/'>generato con markdown-toc</a></i></small>
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.<br/>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 <br/> app IO per dispositivi mobili iOS e Android
io-services-metadata <br/> 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 <br/>Le definizioni Terraform delle risorse cloud utilizzate da IO.
io-infrastructure-live-new <br/> TBD
gitops <br/>Definizione delle CI/CD utilizzate dai repository IO per code-review e deploy
Backend
io-backend <br/>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 <br/>Function app che implementa le business logic delle interazioni del Cittadino con la piattaforma.
io-functions-admin <br/>Function app che implementa attività di amministrazione piuttosto che processi batch.
io-functions-services <br/>Function app che implementa le business logic delle interazioni degli Enti e delle Organizzazioni con la piattaforma.
io-functions-public-event-dispatcher <br/>Permette di registrare dei webhook che reagiscono agli eventi di dominio che vengono emessi nei vari flussi.
io-functions-pushnotifications <br/>Gestisce l'integrazione con i servizi di push notification.
io-functions-assets <br/>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 <br/> 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<br/> 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 <br/> Semplice app desktop per l'invio di push notification verso emulatori iOS
Strumenti per lo sviluppo
io-app-dev-server <br/> 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