{"id":22727901,"url":"https://github.com/pagopa/io-link","last_synced_at":"2025-03-30T00:26:12.034Z","repository":{"id":160349251,"uuid":"623846784","full_name":"pagopa/io-link","owner":"pagopa","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-24T17:26:23.000Z","size":1015,"stargazers_count":0,"open_issues_count":7,"forks_count":1,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-24T18:36:13.422Z","etag":null,"topics":["io","io-platform"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pagopa.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-05T08:04:01.000Z","updated_at":"2025-03-17T11:03:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"d9349e0d-2232-4102-86b2-2bcc497212c5","html_url":"https://github.com/pagopa/io-link","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pagopa%2Fio-link","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pagopa%2Fio-link/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pagopa%2Fio-link/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pagopa%2Fio-link/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pagopa","download_url":"https://codeload.github.com/pagopa/io-link/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246262252,"owners_count":20749161,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["io","io-platform"],"created_at":"2024-12-10T17:14:07.396Z","updated_at":"2025-03-30T00:26:12.021Z","avatar_url":"https://github.com/pagopa.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# io-link\n\n`io-link` is a webservice that generates and handles **Dynamic Links** that either link to a screen in a configured mobile app and to a fallback URL when the mobile app is not installed.\n\nIt contains also an `endpoint` to generate QR Codes that embeds dynamic links for [IO App](https://github.com/pagopa/io-app).\n\n## Development\n\n### Prerequisites\n\nIn order to build `io-link` in our local machine you need\n\n- `Node.js 20`\n- `yarn 3`\n\nThe preferred way to set up the local environment is using [nodenv](https://github.com/nodenv/nodenv) to manage `Node.js` installation and `corepack` (included with `Node.js`) to manage the installation of `yarn`.\n\n### Release management\n\nThis project uses [changesets](https://github.com/changesets/changesets) to automate updating package versions, and changelogs.\n\nEach Pull Request that includes changes that require a version bump should include a `changeset` file that describe that changes.\n\nTo create a new `changeset` file run `yarn changeset` from the project root.\n\n### Useful commands\n\n```\n# build the project\nyarn build\n\n# run test\nyarn test\n\n# run test with coverage\nyarn coverage\n\n# format source code (using prettier)\nyarn format\n\n# run in development mode (+ watch)\n# in development mode you can set environment variables\n# by putting a file named `.env` in the root folder\nyarn start:dev\n```\n\n## Configuration\n\n`io-link` relies on environment variables for configuration. If is the first time you work with environment variables you can learn more on [Learn Environment Variables](https://github.com/dwyl/learn-environment-variables)\n\n```ini\n# REQUIRED\nFALLBACK_URL=the url that will be opened when the mobile app is not installed\n\n# OPTIONAL, set to enable universal link support to iOS App\nIOS_APP_ID=apple id of the mobile app (it also known as \"market id\")\nIOS_BUNDLE_ID=bundle id of the mobile app\n\n# OPTIONAL, set to enable universal link support to Android App\nANDROID_PACKAGE_NAME=package name of the mobile app\nANDROID_SHA_256_CERT_FINGERPRINTS=you can read these from the play console\n\n# optional variables\nPORT=defaults to 3000\nNODE_ENV=defaults to production\nFALLBACK_URL_ON_IOS=overrides FALLBACK_URL when the device runs iOS\nFALLBACK_URL_ON_ANDROID=overrides FALLBACK_URL when the device runs Android\n```\n\n## Routes\n\nThe routes that are not listed here should be considered \"implementation details\" and are based on infrastructural requirements to support universal links on Apple and Android devices.\n\n### Obtain a QR Code that links to app screen\n\n```http\nGET /qrcode.png?feat=FEATURE[\u0026payload]\n```\n\nThis route returns a `QRCode` in `image/png` format. That contains an uniersal link to a screen of the configured app. It is mapped with the screens of [IO App](https://github.com/pagopa/io-app).\n\nRight now feat can be:\n\n- `firma` that maps to the main screen of [Firma con IO](https://github.com/pagopa/io-sign). In this case it will take `srid` as additional query parameter to specifiy the `signature request id`.\n\n### Redirect to universal link\n\n```http\nGET /open?feat=FEATURE[\u0026payload]\n```\n\nSame parameters of `/qrcode.png`, but this generates an universal link using the given payload and then redirects to it\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpagopa%2Fio-link","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpagopa%2Fio-link","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpagopa%2Fio-link/lists"}