💡 This is the starting point for everyone interested in learning more about
IO
, how it works, its tech, its domain logics and its implementation choices. In here you can find a high-level description of architecture, components and main workflows; with no mean to be exhaustive in this repository, we hope it will help you to navigate through the ecosystem of applications and libraries that make up the platformIO
.
For any information about the project, how to use it and its data policies, please refer to the project website.
Indice dei contenuti generated with markdown-toc
The IO project:
- allows public bodies to get in touch with citizens through a mobile app, overturning the traditional communication paradigm
- the public administration contacts the citizens when he has something to communicate to they
- it is a vector through which government institutions convey social, economic and health initiatives
- example: bonus vacanze, cashback, European covid certificate, etc.
IO
is a platform composed by an ecosystem of network applications.
The designated touch point for Citizens is App IO, a mobile application for iOS and Android smartphones, through which they have access to all services offered onto IO
platform by Public Organizations. Citizens are identified by third-party Identity Provider such as SPID providers and [CIE] (https://www.ipzs.it/ext/carta_identita_elettronica_prodotti.html) service (Carta d'identità elettronica) powered by Istituto Poligrafico e Zecca dello Stato.
Organizations can integrate their IT systems by using both web portals and exposed API.
If you are an Organization and you are willing to know how to integrate with IO
, please refer to our website.
IO
platform has been designed with these principles in mind:
- micreservices architecture: the system is composed by several independent network applications that collaborate to business workflows;
- everything as code: we try to code as much as we can, including the infrastructure as well as code-review rules and code best practices;
- open by design: source code is open and public as well as technical discussions arising from pull requests.
To know more about how such principles are implemented, please refer to application-specific repositories mentioned below.
Here are the repositories on which you can find the actual implementations of IO
project's features.
io-app
IO app for iOS and Android devices
io-services-metadata
Static assets used by the app.
This repository allows you to manage the contents that the app consumes (images, configurations, banners, municipalities data etc)
as if they are code: versioned and with a code review process. Once a PR is merged on the main branch, a dedicated pipeline
moves contents into IO CDN.
io-infra
Terraform definitions for cloud resources used by IO
.
io-infrastructure-live-new
TBD
gitops
CI/CD definitions used by IO
's code-review and deploy workflows.
io-backend
Application gateway which exposes IO
's API to the app. Its main responsibilities are to manage Citizens' user session and to aggregate and proxy communication towards microservices that implement the actual business logic. It's also the only integration point with our Identity Providers.
io-functions-app
Function app implementing the business logics about Citizens integrations with the app.
io-functions-admin
Function app implementing administrative logics as well as long running processes.
io-functions-services
Function app implementing the business logics about Organizations integractions with IO
platform.
io-functions-public-event-dispatcher
It allows to register webhooks on which get notified when a domain event occurs in the platform.
io-functions-pushnotifications
It manages the interactions with platform-specific push notification services.
io-functions-assets
Proxy towards static assets consumed by the app.
io.italia.it Website and legal stuff.
react-native-cie
Library included in the IO app to authenticate via CIE (Electronic Identity Card). It contains the Android implementation which is an adaptation of the SDK developed by IPZS.
As for iOS, the repository contains only the compiled framework and not the sources that are available here. More details on how the app uses this library can be found in this document
io-react-native-zendesk
Library included in the IO app that allows users to request assistance.
In particular it is a customization of the react-native-zendesk-v2 library modified appropriately for the needs of IO.
It includes the official Zendesk SDKs and the communication layer between the native and React Native
push-notificator
Simple desktop app to send push notifications to iOS emulated devices
io-app-dev-server
Server for IO app development: using this tool, that can be run locally, there is no need to interface with production services during development.
It creates all the services and endpoints that the production app uses: IO backend API, CDN assets, pagoPA API, initiative API (cashback, bonus vacanze, green pass etc).
The server is configurable at the response and content level as well as supporting, for almost all services, a random generation layer of the response content.
TBD
TBD
TBD
TBD
TBD