Skip to content
This repository has been archived by the owner on Dec 6, 2023. It is now read-only.

Latest commit

 

History

History
141 lines (99 loc) · 8.62 KB

README.md

File metadata and controls

141 lines (99 loc) · 8.62 KB

Read in english 🇬🇧

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 piattaforma IO.
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ù

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.

architecture overview

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à

ts-commons

pagopa-commons

codegen-openapi-ts

io-spid-commons

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

io-functions-express

io-functions-commons

codegen-openapi-ts

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