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

Latest commit

 

History

History
132 lines (94 loc) · 7.76 KB

README.en.md

File metadata and controls

132 lines (94 loc) · 7.76 KB

Leggi in italiano 🇮🇹

IO

💡 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 platform IO.
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


Description

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.

Architectural overview

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.

architecture overview

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.

Repositories

Here are the repositories on which you can find the actual implementations of IO project's features.

Core repositories

App

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.

Infra

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.

Backend

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.

Web

io.italia.it Website and legal stuff.

Utilities

ts-commons

pagopa-commons

codegen-openapi-ts

io-spid-commons

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-functions-express

io-functions-commons

Developer tool

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.

Initiatives

Carta Giovani Nazionale

TBD

Sicilia Vola

TBD

Green Pass

TBD

Contributing

TBD

License

TBD