/io-wallet

Wallet Provider implementation for EUDI Wallet and IT-Wallet for App IO

Primary LanguageTypeScript

io-wallet

EUDI Wallet and Italian Wallet implementation for App IO

Prerequisites

In order to run the applications locally you need the following tool installed on your machine.

  • Node.js
  • yarn

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. Please refer to .node-version for the actual runtime version used.

Release management

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

Useful commands

This project uses yarn@3 with workspaces to manage projects and dependencies. Here is a list of useful commands to work in this repo.

Work with workspaces

# 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 my-package
yarn workspace my-package 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 dependencies

# add a dependency to the workspace root
yarn add turbo

# add a jest as dev dependency on my-package
yarn workspace my-package add -D jest

# add io-ts as dependency on each workspace
yarn workspace foreach add io-ts

Infrastructure resources

Resources are defined using Terraform into /infra.

Configure environment

/infra/env contains the configuration for the different environments the applications must be deployed on. Each subdirectory is an environemnt; the name of the subdirectory is the name of the environment. Each environment contains:

  • backend.ini, in which we set the subscription to work on;
  • backend.tfvars, where we reference the remote storage to keep the terraform state into;
  • terraform.tfvars, where developers can set actual infrastructure variables.

Infrastructure-as-code

Terraform code files are meant to be into /infra/src. Files must be in the same directory, that is there cannot be subdirectories. The main.ts file initialize the required provider.

Run Terraform commands

The script /infra/terraform.sh is a wrapper over the terraform CLI that:

  • load the configuration for the selected environment
  • connect to the remote storage for the Terraform state
  • execute the command

To run a command, follow the pattern:

./infra/terraform.sh <command> <environment>

examples:

# Run plan on prod environment
./infra/terraform.sh plan prod 

# Run apply on dev environment
./infra/terraform.sh apply dev

Precommit checks

Check your code before commit.

https://github.com/antonbabenko/pre-commit-terraform#how-to-install

pre-commit run -a