diff --git a/USAGE.md b/USAGE.md index 00ac5d6e2e..55adb86ef1 100644 --- a/USAGE.md +++ b/USAGE.md @@ -84,7 +84,7 @@ NOTE: To avoid SSO conflicts, it is recommended to log into CORE and Minespace i Should anything go awry with the above commands, you may wish to isolate the failure by running individual commands. -1. Delete any existing `node_modules` in minespace, core-web, root of the repo etc. +1. Delete any existing `node_modules` in minespace, core-web, root of the repo, parent directory etc 2. Make sure that you are running the correct node version. Run `make valid` to validate your environment or `node -v` to check your version and `nvm use` to use the project version. 3. Run `yarn` to update any dependencies. 4. If you have recently switched between different branches, you may need to recreate `.env` files by running `make env` or check the logs in the `mds_flyway` container for migration validation errors. @@ -98,6 +98,15 @@ Should anything go awry with the above commands, you may wish to isolate the fai You may choose to use a version manager such as [nvm](https://github.com/nvm-sh/nvm) or [asdf](https://asdf-vm.com/) if working on multiple projects. +### Extensions/Plugins + +The recommended extensions for VSCode should be installed for optimal development experience. +These will appear in the extensions tab and can also be found [here](.vscode/extensions.json). + +For browser debugging the React devtools and Redux devtools extensions are recommended. +Chrome: [React devtools](https://chromewebstore.google.com/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=en) [Redux devtools](https://chromewebstore.google.com/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd?hl=en) +Firefox: [React devtools](https://addons.mozilla.org/en-CA/firefox/addon/react-devtools/) [Redux devtools](https://addons.mozilla.org/en-CA/firefox/addon/reduxdevtools/) + ### Browser Caching If you are rebuilding often, you may encounter browser caching. diff --git a/docs/verifiable_credentials/untp_arch_diagram.png b/docs/verifiable_credentials/untp_arch_diagram.png new file mode 100644 index 0000000000..240ea333d4 Binary files /dev/null and b/docs/verifiable_credentials/untp_arch_diagram.png differ diff --git a/docs/verifiable_credentials.md b/docs/verifiable_credentials/vc_anoncreds.md similarity index 85% rename from docs/verifiable_credentials.md rename to docs/verifiable_credentials/vc_anoncreds.md index 23301018b0..f93240af2c 100644 --- a/docs/verifiable_credentials.md +++ b/docs/verifiable_credentials/vc_anoncreds.md @@ -6,13 +6,15 @@ The core-api is enabled to create out-of-band messages([spec](https://github.com The core-api is enabled to send credential-offer messages to connected wallets as way of initiating the [issue-credential](https://github.com/hyperledger/aries-rfcs/tree/main/features/0036-issue-credential) protocol. -## Governance Documentation +## AnonCreds + +### Governance Documentation The Mines Act Permit Verifiable Credentials has public [governance documentation](https://github.com/bcgov/bc-vcpedia/blob/main/credentials/bc-mines-act-permit/1.1.1/governance.md) that should be kept up-to-date with any technical or process changes. -## User Flows +### User Flows -### Connection Establishment +#### Connection Establishment This is abbreviated from the governance documentation above which will supercede this if unclear or out-of-date. @@ -30,7 +32,7 @@ Current Limitations: - If an active connection exists, do not allow the processing of any further connection requests - Deleting a connection is not accessible in the UI, It could be done manually by deleting the row in `party_verifiable_credential_connection`, and using the TenantUI (see links below) to delete the connection record in Traction. (This may be needed for POC testing purposes, or if a company made a new corporate wallet.) -### Credential Issuance +#### Credential Issuance This is abbreviated from the governance documentation above which will supercede this if unclear or out-of-date. @@ -48,7 +50,7 @@ Current Limitations: - The existence of this problem report should show in the Minespace and Core UI, as well as the text description contained in the problem-report - Controls and endpoints should be built to allow for a new credential-offer when a problem report has been received on a previous offer -### Credential Revocation +#### Credential Revocation Happy Path UX flow @@ -58,7 +60,7 @@ Happy Path UX flow 1. The corporate wallet of the holder will receive a `revocation-notification` message, CORE will lock the permit such that it shows in the state `revoked` on minespace. 1. If the verifiable credential should become valid again, the ministry user can release the lock, which means the permit record will show as `available` in minespace, so the the proponent can get their veriifable credential again. -### Permit Amendments and Revocation +#### Permit Amendments and Revocation When a permit is amended, the previous authorization is no longer valid and the new authorization should be the only valid credential that exists. @@ -66,13 +68,13 @@ After a new permit amendment is created for a permit: MDS will automatically revoke all verifiable credentials for that permit and offer a new credential with the newest values to the connection on the permitee (if it has one). -## OCA Bundle +### OCA Bundle The Overlay Capture Architechture (OCA) bundle for this credential is hosted [here](https://github.com/bcgov/aries-oca-bundles/tree/main/OCABundles/schema). The OCA bundle provides infomation on how the credential should be presented, including backgroun colors, labels, data-typing, and localization. If the credential is updated, the OCA bundle may need to be updated to match. OCA bundles hosted here can be previewed on the [OCA Explorer](https://bcgov.github.io/aries-oca-explorer/) -## Key identifiers and links +### Key identifiers and links As of: Nov 3, 2023, Published by Jason Syrotuck, (JSyro on Github, or jason.syrotuck@nttdata.com) @@ -120,7 +122,7 @@ Traction Tenant API: - [Test Traction API](https://traction-tenant-proxy-test.apps.silver.devops.gov.bc.ca/api/doc) - [Test Traction API](https://traction-tenant-proxy-prod.apps.silver.devops.gov.bc.ca/api/doc) -## Webhook URL +### Webhook URL Traction is configured to call the core-api with HTTP requests when protocol events happen. Should these need to be reviewed or changed, navigate to the Tenant UI of the environment you want to view/change and navigate to `/tenant/settings` through the upper-right wallet avatar. @@ -138,14 +140,37 @@ TRACTION_WEBHOOK_X_API_KEY=1263835957285d576a09466f2d5f6142 These values could be used for local development, however you will not receive webhooks back from Traction unless you create a public tunnel (like NRGROK) and set tractions with that webhook url. -## Local development testing +### KNOWN EDGE CASES -Traction DEV is configured to send webhooks to MDS DEV, and to this website for inspection https://webhook.site, after 100 requests, you must create a new testing webhook url and add that to the CPO Dev wallet on traction dev. +What is proponent Delete connection after exchange. +Steps to reproduce: -You can configure your local MDS to use the CPO Wallet on Traction dev as well (with env variables), but there is no way for the webhooks to get back to your local machine, so to manually test, we need to manually pass the webhook payload from traction, which will send it to webhook.site, then can be copied into Postman (or similar http client) and passed to your localhost api at `http://localhost:5000/verifiable-credentials/webhook/topic/` as a json body, the topic is parameterized. +1. Establish a connection using minespace to a traction agent on a business +1. Issue a credential in minespace on that connection +1. In the business's traction agent, delete the connection + +Any future use of that connection will fail. examples of addiitonal actions. + +1. Issuing a second permit on that connection +1. Revoking which causes a 'revocation notification' (this is not blocking to the revocation process) + +After the connection is gone, what if they want to make a new one. + +1. Revoke any credentials issued to the previous connection on that record. Without this step, there may be multiple wallets that can prove they are the holder of the permit. +1. Any records associated with the previous connection should be marked accordingly, unclear if this should be soft-deletion or a new flag. -# W3C Credentials +### AnonCred Schema updates -Active development includes signing W3C credentials complaint with the [UN Transparency Protocol](https://uncefact.github.io/spec-untp/) that prove the mines act permit. This would allow a company to produce a **Digital Product Passport** for their goods that make claims about the ESG preformance of the goods and the Mines Act Permit could be used as evidence for those claims. +If we change the schema what do we do with old records? -No features exist in production at the moment. This is blocked by the difference between AnonCreds being issued to the holder through minespace, to publishing W3C credentials that need to relate to BC Business Registrations. Another way to think is that W3C credentials are no held, but simply relate to other verifiable data. Holder binding (how to know the credential on the web is related to the company/person I am connecting with), for BC Business Registration Numbers is still being designed. +Options: + +- Revoke all old credentials and re-issue new ones, this is likely unnessessary as the old credentials are still valid and there is no guarantee that the company needs to the new attributes of the new credential. + +- Enhance Minespace to allow for the permit holder to be issued specific versions of permit, this does not require revocation of the older schema as both are still valid. The holder can choose to delete any credential they don't want. + +### Local development testing + +Traction DEV is configured to send webhooks to MDS DEV, and to this website for inspection https://webhook.site, after 100 requests, you must create a new testing webhook url and add that to the CPO Dev wallet on traction dev. + +You can configure your local MDS to use the CPO Wallet on Traction dev as well (with env variables), but there is no way for the webhooks to get back to your local machine, so to manually test, we need to manually pass the webhook payload from traction, which will send it to webhook.site, then can be copied into Postman (or similar http client) and passed to your localhost api at `http://localhost:5000/verifiable-credentials/webhook/topic/` as a json body, the topic is parameterized. diff --git a/docs/verifiable_credentials/vc_untp.md b/docs/verifiable_credentials/vc_untp.md new file mode 100644 index 0000000000..dbdbb1272d --- /dev/null +++ b/docs/verifiable_credentials/vc_untp.md @@ -0,0 +1,167 @@ +# Verifiable Credentials in Core + +The core-api is integrated with [Traction](https://github.com/bcgov/traction). Traction is a multi-tenant solution to provide [Hyperledger Aries](https://www.hyperledger.org/projects/aries) wallets to BC Government offices that want to interact with Verifiable Credentials. + +The core-api is enabled to create out-of-band messages([spec](https://github.com/hyperledger/aries-rfcs/tree/main/features/0434-outofband#messages.README.md)) that contain did-exchange ([spec](https://github.com/hyperledger/aries-rfcs/blob/main/features/0023-did-exchange/README.md)) connection invitations. + +The core-api is enabled to send credential-offer messages to connected wallets as way of initiating the [issue-credential](https://github.com/hyperledger/aries-rfcs/tree/main/features/0036-issue-credential) protocol. + +## DID:WEB + +using [UniResolver](https://dev.uniresolver.io/) + +you can resolve any did:web, + +These are the did:web's for the Chief Permitting Officer. + +[DEV](https://dev.uniresolver.io/#did:web:registry-dev.digitaltrust.gov.bc.ca:mines-act:chief-permitting-officer): `did:web:registry-dev.digitaltrust.gov.bc.ca:mines-act:chief-permitting-officer` +[TEST](https://dev.uniresolver.io/#did:web:registry-test.digitaltrust.gov.bc.ca:mines-act:chief-permitting-officer): `did:web:registry-test.digitaltrust.gov.bc.ca:mines-act:chief-permitting-officer` +[PROD](https://dev.uniresolver.io/#did:web:registry.digitaltrust.gov.bc.ca:mines-act:chief-permitting-officer): `did:web:registry.digitaltrust.gov.bc.ca:mines-act:chief-permitting-officer` + +Each did resolves to a [DID Document](https://www.w3.org/TR/did-core/#did-documents) thats holds the public cryptographic keys. + +In these did documents are two relevant verkeys, `#key-01-multikey` (aka. `k1`) and `#key-02-multikey`(aka.`k2`). + +`k1` was produced and is stored in the orgbook publisher and will be used to sign UNTP credentials on their way to orgbook. + +`k2` was produced in the CPO traction wallet and can be used for any other purpose that the MDS team or CPO wants to sign. you can verify this by using `GET` on `/wallet/keys/`. + +Any document signed will specify which keypair was used to sign, and so which public key needs to be used to verify the document, both are equally valid, they are just managed by separate software systems. + +## UNTP W3C Credentials + +Active development includes signing W3C credentials complaint with the [UN Transparency Protocol](https://uncefact.github.io/spec-untp/) that prove the mines act permit. This would allow a company to produce a **Digital Product Passport** for their goods that make claims about the ESG preformance of the goods and the Mines Act Permit could be used as evidence for those claims. + +Mine Permitting Data is being publish into Orgbook. Orgbook holds root credentials issued by BC Registries about BC Businesses. Therefore publishing mining data requires a link to be built between the permittee that exists in CORE, and the business record that BC Registries is attesting to in Orgbook. W3C credentials are not bound to a holder, but simply signed documents that relate to other data (verifiable or not). + +**Holder Binding**, how to know the credential on the web is related to the company/person I am connecting with, for BC Business Registration Numbers is still being designed to comply with the [Digital Identity Anchor](https://uncefact.github.io/spec-untp/docs/specification/DigitalIdentityAnchor) specification. + +### UNTP Resources + +Should the Digital Conformity Credentials need to be updated to a new version, please review the specification found at https://uncefact.github.io/spec-untp/. + +- The Chief Permitting is attesting to the existence and good standing of a permit for a registered business in BC. Within the UNTP this is represented as a [Digital Conformity Credential](https://uncefact.github.io/spec-untp/docs/specification/ConformityCredential). Links can be found there for the official JSON-LD schema and context files. + +### JSON-LD Crash Course + +JSON-LD (JSON w/ Linked Data), allow the json documents to reference their defined shapes and purposes for readers to understand the datatyping, correct structure, and technical and real world meanings. Think of the **Context** file as a glossary, that defines types and the attributes of those typed objects; and the **Schema** file a specific structure on how the typed objects should be structured together to produce the document. + +The order that context files are important, as a later file can override a type definition than a previous file in the list, but only where the context files allow (`@protected: false`). Most context vocabularies seen in this context are `protected`. + +### AnonCreds vs VCDM + +| Feature | [AnonCreds](https://hyperledger.github.io/anoncreds-spec/) | VCDM2.0 w/ Data Intergrity Proof | +| -------------------- | ---------------------------------------------------------- | -------------------------------- | +| Data Structure | Flat | JSON | +| Issued | Directly to Holder and bound | Published to be Discovered | +| Selective Disclosure | Supported | Not Supported | +| Zero Knowledge Proof | Supported | Not Supported | +| DID Methods | did:indy | did:web, did:tdw | +| Artifact hosting | Hyperledger Indy | Hosted by each participant | + +#### Relevant Context Files (IN ORDER) + +1. [W3C VCDM 2.0](https://www.w3.org/TR/vc-data-model-2.0/) is another specificiation for Veriifable Credentials, is an alternative to AnonCreds. + +1. [UNTP DCC Specification](https://uncefact.github.io/spec-untp/docs/specification/ConformityCredential) is a context file that describes all the types described in the UNTP specification. + +1. [BC Mines Permit Credential]() is a context file that extends the UNTP DCC specification, allowing BC to add key attributes that are valuable to the subjects (the mines/permits) + +The top level of the credential produced is currently typed with all three because, and because all the attributes in all the context files are `protected` no attributes can conflict. AKA. Context files can add attributes to protected types, but cannot redefine an existing term. + +## Orgbook Publication Architecture Architechture + +![https://lucid.app/lucidspark/a72aa903-a3b6-48fa-a531-d00072f3e32f/edit?view_items=CIknlZqzm_3b&invitationId=inv_588317cd-af32-46ec-9297-bb2ce5c57502](untp_arch_diagram.png) + +### Mines Digital Services + +**General Purpose:** To manage the mining data in BC + +### Digital Trust Toolkit + +**General Purpose:** To host critical artifacts for reference by BC Government VC Issuers, as well as instructional material for business experts of interested government issuers. + +NOTE: This service is also responsible for maintaining the whitelist [files](https://github.com/bcgov/digital-trust-toolkit/tree/main/related_resources/registrations/issuers) that Orgbook leverages to control what did's are allowed to issue. + +### Orgbook Publisher + +**General Purpose:** To support publishing of Government data as JSON-LD Credentials to Orgbook for BC Businesses (including did's) + +### DID:TDW Server + +**General Purpose:** To host did's for BC government entities, specifically did:web and did:tdw + +### Aries VCR VC API + +**General Purpose:** New REST API to add support for JSON-LD verifiable credentials to Orgbook + +### Orgbook + +**General Purpose:** To hold verifiable data about BC Businesses. + +## Who to call + +### Energy and Mines Digital Trust + +Key Contacts: + +- Jason Syrotuck, jason.syrotuck@nttdata.com, Developer +- Nancy Norris, nancy.norris@gov.bc.ca, Senior Director +- Bree Blazicevic, bree-ana.blazicevic@gov.bc.ca, Senior Policy Analyst +- Patrick St-louis, patrick.st-louis@opsecid.ca, Developer + +Oversees Repository: + +- [Digital Trust Toolkit](https://github.com/bcgov/mds/pull/3320/files) + +### Cybersecurity and Digital Trust Enterprise Apps Team + +Key Contact: + +- Emiliano Sune, emiliano.sune@quartech.com, PO, BC Digital Trust +- Stephen Curran, swcurran@cloudcompass.ca, VC Expert +- John Jordan, john.jordan@gov.bc.ca, ED, BC Digital Trust + +Oversees Deployments of: + +- [Traction](https://github.com/bcgov/traction) + - Deployed [here](https://traction-tenant-ui-prod.apps.silver.devops.gov.bc.ca/) with [API](https://traction-tenant-proxy-prod.apps.silver.devops.gov.bc.ca/api/doc) +- [Orgbook Publisher](https://github.com/OpSecId/orgbook-publisher/) + - Deployed at: + - [DEV](https://publisher-dev.orgbook.gov.bc.ca/) + - [TEST](https://publisher-test.orgbook.gov.bc.ca/) + - [PROD](https://publisher.orgbook.gov.bc.ca/) +- [Aries-VCR-VC-Service](https://github.com/bcgov/aries-vcr-vc-service) + - Deployed [here], trying to find +- [Aries-VCR](https://github.com/bcgov/aries-vcr) + - Deployed as Orgbook [here](https://orgbook.gov.bc.ca/search) and [API](https://orgbook.gov.bc.ca/api/v2) +- [TDW Server](https://github.com/decentralized-identity/trustdidweb-server-py) + - Deployed at : + - [DEV](https://registry-dev.digitaltrust.gov.bc.ca/) + - [TEST](https://registry-test.digitaltrust.gov.bc.ca/) + - [PROD](https://registry.digitaltrust.gov.bc.ca/) + +# Future Work + +### If you want to update to a new UNTP spec version + +- If the same data structured can be used, then the provider just needs to update it's transformation +- If not, the CDT team or maintainer of the publisher will reach out with the required changes. +- We should not remove or revoke previously issued credentials + +### If you want to add new attributes to the BCMines extension + +- Make a new context file (v-n+1). +- create new credential type that references new context file +- update job to send expanded data to publisher +- we should not remove or revoke previously issued credentials. + +### What if data is updated in CORE + +- If a permit amendment is issued: This is going to be incredibly simlilar to `revoke_all_credentials_for_permit`, but targeted to a specific credential record (in the `permit_amendment_orgbook_publish_status` table), and with a different mechanism for revocation (asking the publisher to update a BitStringStatusList) + - The existing credential without a `validUntil` date should be revoked + - this is new + - A new credentials should be issued with those previous details identical, with a vaildUntil date added (set to the new validFrom date of the new permitamendment issue date) + - The job should pick this up automatically) + - Issue new credential with new details + - (the job should pick this up automatically) diff --git a/services/core-api/.env-example b/services/core-api/.env-example index e3068384ee..db19b8d0ec 100644 --- a/services/core-api/.env-example +++ b/services/core-api/.env-example @@ -116,11 +116,11 @@ TRACTION_WALLET_API_KEY=MISSING_API_KEY CRED_DEF_ID_MINES_ACT_PERMIT=CRED_DEF_ID_FOR_MINES_ACT_PERMIT TRACTION_WEBHOOK_X_API_KEY=MISSING_TRACTION_WEBHOOK_X_API_KEY # This is manually created in traction maping kid to verkey in did:doc @ POST to /wallets/keys -CHIEF_PERMITTING_OFFICER_DID_WEB_VERIFICATION_METHOD="did:web:registry-dev.apps.silver.devops.gov.bc.ca:mines-act:chief-permitting-officer#key-02-multikey" +CHIEF_PERMITTING_OFFICER_DID_WEB_VERIFICATION_METHOD="did:web:registry-dev.digitaltrust.gov.bc.ca:mines-act:chief-permitting-officer#key-02-multikey" UNTP_DIGITAL_CONFORMITY_CREDENTIAL_CONTEXT=https://test.uncefact.org/vocabulary/untp/dcc/0.5.0/ UNTP_DIGITAL_CONFORMITY_CREDENTIAL_SCHEMA=https://test.uncefact.org/vocabulary/untp/dcc/untp-dcc-schema-0.5.0.json UNTP_BC_MINES_ACT_PERMIT_CONTEXT=https://bcgov.github.io/digital-trust-toolkit/contexts/BCMinesActPermit/v1.jsonld -ORGBOOK_CREDENTIAL_BASE_URL=https://dev.orgbook.traceability.site/credentials +ORGBOOK_PUBLISHER_BASE_URL=https://publisher-dev.orgbook.gov.bc.ca ORGBOOK_PUBLISHER_CLIENT_SECRET=ORGBOOK_PUBLISHER_CLIENT_SECRET # Permit Search Service PERMITS_ENDPOINT=http://haystack diff --git a/services/core-api/README.md b/services/core-api/README.md index 2bed8e43f4..2709049ad8 100644 --- a/services/core-api/README.md +++ b/services/core-api/README.md @@ -1,6 +1,6 @@ # Backend API -The project uses a Python 3.6 runtime environment and [Flask +The project uses a Python 3.11 runtime environment and [Flask REST-plus](https://flask-restplus.readthedocs.io/en/stable/) framework for the API. @@ -39,14 +39,14 @@ before running the application. A. OS Level Installation -- [Python 3.6](https://www.python.org/downloads/release/python-360/) +- [Python 3.11](https://www.python.org/downloads/release/python-3119/) - [Pip](https://pypi.org/project/pip/) - [Virtualenv](https://virtualenv.pypa.io/en/stable/) -1. Create a virtual environment with python 3.6 and activate it +1. Create a virtual environment with python 3.11 and activate it ``` -virtualenv -p python3.6 .venv +virtualenv -p python3.11 .venv source .venv/bin/activate ``` diff --git a/services/core-api/app/api/verifiable_credentials/manager.py b/services/core-api/app/api/verifiable_credentials/manager.py index c0d6d7543a..6727fba787 100644 --- a/services/core-api/app/api/verifiable_credentials/manager.py +++ b/services/core-api/app/api/verifiable_credentials/manager.py @@ -298,6 +298,7 @@ def push_untp_map_data_to_publisher(): if pa.permit_no[1] in ("X", "x"): current_app.logger.info( f"exclude exploration permit={pa.permit_no}, they cannot produce goods for sale") + skipped_count += 1 continue pa_cred = VerifiableCredentialManager.produce_untp_cc_map_payload_without_id( @@ -305,6 +306,7 @@ def push_untp_map_data_to_publisher(): if not pa_cred: current_app.logger.warning( f"pa_cred could not be created for permit_amendment_guid={row[0]}") + skipped_count += 1 continue #only one assessment per credential diff --git a/services/core-api/app/config.py b/services/core-api/app/config.py index 384ca96d63..8ee10ded8d 100644 --- a/services/core-api/app/config.py +++ b/services/core-api/app/config.py @@ -284,7 +284,7 @@ def JWT_ROLE_CALLBACK(jwt_dict): }, 'push_untp_map_data_to_publisher': { 'task': 'app.api.verifiable_credentials.manager.push_untp_map_data_to_publisher', - 'schedule': crontab(day_of_week="1"), #Run Mondays + 'schedule': crontab(day_of_week="1", hour="16", minute="0"), #Run 8am Mondays }, } #Traction Verifiable Credentials DEFAULTS ARE FOR DEV diff --git a/services/core-web/README.md b/services/core-web/README.md index 88daa07a66..04e353f997 100644 --- a/services/core-web/README.md +++ b/services/core-web/README.md @@ -1,6 +1,6 @@ # Frontend application -The project uses a [Node.js (v14)](https://nodejs.org/en/) runtime environment and [React.js](https://reactjs.org/) library for the frontend. +The project uses a [Node.js (v20)](https://nodejs.org/en/) or newer runtime environment and [React.js](https://reactjs.org/) library for the frontend. ## Module and Library dependencies @@ -124,7 +124,7 @@ Follow the `.env-example` template to create an `.env` file with valid values be A. OS Level Installation -- [Node.js 14](https://nodejs.org/en/download/) +- [Node.js 20](https://nodejs.org/en/download/) 1. Install package dependencies diff --git a/services/core-web/src/components/homepage/HomeInfographs.tsx b/services/core-web/src/components/homepage/HomeInfographs.tsx index fbaab2672c..f2dfffdb60 100644 --- a/services/core-web/src/components/homepage/HomeInfographs.tsx +++ b/services/core-web/src/components/homepage/HomeInfographs.tsx @@ -20,11 +20,11 @@ const HomeInfographs = () => {
Key Insights - Need a specific data query from CORE or more information about our data? Contact our data - team at EMLIAnalytics@gov.bc.ca or{" "} - - submit a request online - + Need a specific data query from CORE or more information about our data? Contact our data service + team via the + Data and Mapping request portal + or email EMLIAnalytics@gov.bc.ca + . diff --git a/services/core-web/src/tests/components/__snapshots__/HomePage.spec.tsx.snap b/services/core-web/src/tests/components/__snapshots__/HomePage.spec.tsx.snap index 9aa51430bc..474d6e38fd 100644 --- a/services/core-web/src/tests/components/__snapshots__/HomePage.spec.tsx.snap +++ b/services/core-web/src/tests/components/__snapshots__/HomePage.spec.tsx.snap @@ -236,18 +236,17 @@ exports[`HomePage renders properly 1`] = `
- Need a specific data query from CORE or more information about our data? Contact our data team at + Need a specific data query from CORE or more information about our data? Contact our data service team via the - EMLIAnalytics@gov.bc.ca + Data and Mapping request portal - or - + or email - submit a request online + EMLIAnalytics@gov.bc.ca .
diff --git a/services/document-manager/backend/README.md b/services/document-manager/backend/README.md index 61a77dacd9..eb430cfaa3 100644 --- a/services/document-manager/backend/README.md +++ b/services/document-manager/backend/README.md @@ -1,6 +1,6 @@ # Document Manager API -The project uses a Python 3.6 runtime environment and [Flask REST-plus](https://flask-restplus.readthedocs.io/en/stable/) framework for the API. +The project uses a Python 3.12 runtime environment and [Flask REST-plus](https://flask-restplus.readthedocs.io/en/stable/) framework for the API. The application uses SQLAlchemy as our ORM to interact with the database. @@ -30,14 +30,14 @@ Follow the `.env-example` template to create an `.env` file with valid values be A. OS Level Installation -- [Python 3.6](https://www.python.org/downloads/release/python-360/) +- [Python 3.12](https://www.python.org/downloads/release/python-3123/) - [Pip](https://pypi.org/project/pip/) - [Virtualenv](https://virtualenv.pypa.io/en/stable/) -1. Create a virtual environment with python 3.11 and activate it +1. Create a virtual environment with python 3.12 and activate it ``` -virtualenv -p python3.6 .venv +virtualenv -p python3.12 .venv source .venv/bin/activate ``` diff --git a/services/minespace-web/README.md b/services/minespace-web/README.md index 6adc414471..922ac00d8b 100644 --- a/services/minespace-web/README.md +++ b/services/minespace-web/README.md @@ -1,6 +1,6 @@ # MineSpace -The project uses a [Node.js (v14)](https://nodejs.org/en/) runtime environment and [React.js](https://reactjs.org/) library for the frontend. +The project uses a [Node.js (v20)](https://nodejs.org/en/) or newer runtime environment and [React.js](https://reactjs.org/) library for the frontend. ## Module and Library dependencies @@ -104,7 +104,7 @@ Follow the `.env-example` template to create an `.env` file with valid values be A. OS Level Installation -- [Node.js 14](https://nodejs.org/en/download/) +- [Node.js 20](https://nodejs.org/en/download/) 1. Install package dependencies diff --git a/services/nris-api/backend/README.md b/services/nris-api/backend/README.md index 8c1e417a29..900b774c94 100644 --- a/services/nris-api/backend/README.md +++ b/services/nris-api/backend/README.md @@ -1,6 +1,6 @@ # NRIS API -The project uses a Python 3.6 runtime environment and [Flask REST-plus](https://flask-restplus.readthedocs.io/en/stable/) framework for the API. +The project uses a Python 3.12 runtime environment and [Flask REST-plus](https://flask-restplus.readthedocs.io/en/stable/) framework for the API. The application uses SQLAlchemy as our ORM to interact with the database. @@ -34,14 +34,14 @@ Follow the `.env-example` template to create an `.env` file with valid values be A. OS Level Installation -- [Python 3.6](https://www.python.org/downloads/release/python-360/) +- [Python 3.12](https://www.python.org/downloads/release/python-3123/) - [Pip](https://pypi.org/project/pip/) - [Virtualenv](https://virtualenv.pypa.io/en/stable/) -1. Create a virtual environment with python 3.6 and activate it +1. Create a virtual environment with python 3.12 and activate it ``` -virtualenv -p python3.6 .venv +virtualenv -p python3.12 .venv source .venv/bin/activate ```