Skip to content

Latest commit

 

History

History
145 lines (91 loc) · 5.95 KB

README.md

File metadata and controls

145 lines (91 loc) · 5.95 KB

BCMI

https://mines.nrs.gov.bc.ca/

Introduction

The Ministry of Energy, Mines, and Low Carbon Innovation (EMLI), Ministry of Environment and Climate Change Strategy (ENV), and Environmental Assessment Office (EAO) have collaborated to make information on the Province’s oversight of major mines in British Columbia accessible.

The application is being developed as an open source solution.

Table of Contents

  1. Getting Started
  2. Running tests
  3. Deployment
  4. Architecture
  5. How to Contribute
  6. License
  7. Additional Documentation

Getting Started

To get a local copy up and running follow these steps.

Prerequisites

Git commit signing is required for commits. How to setup git commit signing

Software Requirements

  • Node 20 must be used.
  • @angular/cli should be installed.
  • Docker should be installed.

Installation

To run/develop using docker:

  1. Set the KEYCLOAK_CLIENT_SECRET env in docker-compose
  2. Run docker compose up

To run the frontend locally:

  1. Install angular/cli npm i -g @angular/cli
  2. cd bcmi
  3. npm install
  4. npm run start

To run Strapi locally:

  1. create an .env file in the cms folder using the .env.template, find secrets in openshift
  2. cd cms
  3. npm install
  4. npm run develop
  5. Login to strapi admin at http://localhost:1337/admin
  6. See graphql queries at http://localhost:1337/graphql (ensure the strappi content has the 'find' role enabled)

(back to top)

Running tests:

Unit tests

Set up via Jest.

  1. Run npm test to execute the unit tests.

End-to-end functional tests

Set up with BDDStack and BrowserStack. Modify GebConfig.groovy to customise your preferred browser. Configured remotes, confirmed to work with current tests include Chrome, Firefox, and Edge. Internet explorer and Safari are available as well, but tests fail due to driver compatiblity with current tests.

BrowserStack Config

Open Source projects have free access to Browserstack Live and Automate, for up to 5 team members. To run tests with Browserstack you need to set the following environemnt variables:

  1. BROWSERSTACK_USERNAME
  2. BROWSERSTACK_TOKEN
  3. DEBUG_MODE (true or false)

Run tests against local application:

  • Run ng run e2e to automatically start the application locally and execute the end-to-end tests against a headless Chrome.

    OR

  • Download BrowserStack binary set BASEURL to your local application address, and run ./gradlew remoteChrome

Note, e2e functional testing requires Java 10+.

Run tests against remote application:

  1. Determine the URL at which the application is running.
  2. Update the baseurl to the URL from step 1:
    • Either modify the GebConfig.groovy baseUrl directly.
    • Or set a BASEURL environment variable
  3. See functional-tests/readme.md for how to execute the tests.

See the BDDStack Wiki for more information.

(back to top)

Architecture

BCMI is built using TypeScript and Angular for the front end, with Jest for testing. It employs PostgreSQL for database management and Node.js for the server, alongside Bootstrap and jQuery for design and interactivity. Apollo & GraphQL facilitates data querying, while Strapi acts as the headless CMS.

(back to top)

Deployment

BCMI uses the quickstart openshift template and is deployed using github actions and helm charts found in the .github/workflows and charts folders.

When a PR is opened unique pr deployment is deployed to the dev environment. Once the dev is satisfied with the PR and it is merged the changes are automatically deployed to the test environment for user testing. Once ready the changes can be deployed to production by manually triggering the Deploy to production workflow.

How to Contribute

Feel free to create pull requests from the default "master" branch, click here to create one automatically: https://github.com/bcgov/mem-mmti-public/pull/new/master

Contributing

Government employees, the public and members of the private sector are encouraged to contribute. Check the BC Developer Exchange website, where paid opportunities to build features are posted. Please read and follow our Code of Conduct.

All contributors retain original copyright, but are granting a world-wide, royalty-free, perpetual, irrevocable, non-exclusive, transferable license to all users. This project is covered by an Apache v2.0 license.

(back to top)

License

Code released under the Apache License, Version 2.0.

(back to top)

Additional Documentation

More documentation for the repository can be found in the following places

(back to top)