io-sign
is the IO platform feature that allows citizens to sign digitally documents and contracts sent by public administration.
This repository contains the code that composes the io-sign
back-end, that is organized into two microservices:
io-func-sign-issuer
that exposes the API used by public entitiesio-func-sign-user
that exposes the ReST API consumed by the IO mobile app
These services are deployed as Azure Function App
, and use the Node.js
Azure runtime.
It also contains io-sign-selfcare-frontend
the frontend for self-care integration.
In order to run the io-sign
back-end/front-end locally you need the following tool installed on your machine.
Node.js 16
yarn 3
The preferred way to set up the local environment is using nodenv to manage Node.js
installation and corepack
(included with Node.js
) to manage the installation of yarn
.
To test the Azure Functions
locally:
-
Setup the Environment Variables. Create a file called
local.settings.json
in eachAzure Functions App
folder (./apps/*
) valued according to the environment variables listed inlocal.settings.json.example
. -
Install the project. Run from the root folder the following commands.
# to install the dependencies
yarn
# to generate the TypeScript models based on OpenAPI specs
yarn workspaces foreach run generate:api-models
# to build all projects
yarn build
To test the webapp
locally:
- Install the project (if you haven't already). Run from the root folder the following commands.
# to install the dependencies
yarn
# to build all projects
yarn build
- Run the Web App. Run (from the root folder) the following command
yarn workspace io-sign-selfcare-frontend dev
This project uses changesets to automate updating package versions, and changelogs.
Each Pull Request that includes changes that require a version bump should include a changeset
file that describe that changes.
To create a new changeset
file run the following command from the project root:
yarn changeset
This project uses yarn@3
with workspaces to manage projects and dependencies. Here is a list of useful commands to work in this repo.
# to execute COMMAND on WORKSPACE_NAME
yarn workspace WORKSPACE_NAME run command
# to execute COMMAD on all workspaces
yarn workspace foreach run command
# run unit tests on @io-sign/io-sign
yarn workspace @io-sign/io-sign run test
# run the typecheck script on all workspaces
yarn workspaces foreach run typecheck
# generate the API models for all workspaces
yarn workspaces foreach run generate:api-models
# add a dependency to the workspace root
yarn add turbo
# add a jest as dev dependency on @io-sign/io-sign
yarn workspace @io-sign/io-sign add -D jest
# add io-ts as dependency on each workspace
yarn workspace foreach add io-ts
This command generates a deployment package (ZIP
), in the workspace folder, with bundled dependencies, ready to be deployed on Azure.
yarn workspace WORKSPACE_NAME run build:package
# example
yarn workspace io-func-sign-issuer run build:package
This command generates static frontend files inside the out
folder which can then be uploaded to a static website:
yarn workspace io-sign-selfcare-frontend run export