A curated list of open technology projects to sustain a stable climate, energy supply, biodiversity and natural resources.

Invasive Species BC

Inventory and database repository for the creation, treatment, and report on BC Invasive plants and animals.
https://github.com/bcgov/invasivesbc

Category: Biosphere
Sub Category: Terrestrial Wildlife

Keywords

dds env flnro invasives ionic-framework postgis postgresql react

Keywords from Contributors

flnr transfer tran fuel empr keycloak range openshift myra transforms

Last synced: about 8 hours ago
JSON representation

Repository metadata

Inventory and database repository for the creation, treatment, and report on BC Invasive plants and animals.

README.md

Invasive Species BC

img Quality Gate Status Coverage Maintainability Rating

Introduction

Invasive species are non-native plants and animals whose introduction and spread in British Columbia cause significant economic, social or environmental damage. This application tracks the observation, treatment, and monitoring of invasive species in the Province of British Columbia.

This project is part of the Species and Ecosystems Information System Modernization (SEISM) program.

Table of Contents

  1. Project Status
  2. Audience
  3. Features
  4. Getting Help or Reporting an Issue
  5. How to Contribute
  6. Architecture
  7. Project Structure
  8. Documentation
  9. Requirements
  10. Setup Instructions
  11. Running the Application
  12. License

Project Status

This application is in active development and has not yet been released.

Audience

Anyone with a valid IDIR or BCeID login may access the application to view data that is being tracked.

In addition, the application is intended for use by:

  • Surveyors who observe and record the absence, presence, and spread of invasive species
  • Subject matter experts who perform a variety of duties, including to record and analyze data and create action plans
  • Contractors who implement recommended treatments for observed invasive species
  • Administrators who manage the application and its users

Features

This application is anticipated to include the following main features:

  1. Support for IDIR and BCeID access
  2. User roles and permissions management
  3. Interactive maps displaying multiple data layers
  4. Observations of invasive species absence/presence
  5. Recommendations, planning, and application records of treatments
  6. Monitoring of treatment outcomes
  7. Query and export of data
  8. Auditing and reports
  9. Bulk data entry and mobile device data entry

Getting Help or Reporting an Issue

To report bugs/issues/features requests, please file an issue.

How to Contribute

If you would like to contribute, please see our contributing guidelines.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Architecture

This application uses PostgreSQL (with PostGIS), Ionic/React (for Web, IOS and Android). Our environments run on an OpenShift container platform cluster.

Project Structure

.config/                   - Common application configuration
.github/                   - Github actions
.docker/                   - Common Dockerfiles
.vscode/                   - IDE config for Visual Studio Code
api/                       - API codebase
app/                       - Capacitor APP Codebase
sharedapi/                 - Files shared between App and API (enums, RJSF Schemas, etc)
database/                  - Database Codebase
env_config/                - ENV config files
testing/                   - Test scripts, in particular Postman configs
CODE-OF-CONDUCT.md         - Code of Conduct
CONTRIBUTING.md            - Contributing Guidelines
LICENSE                    - License

Documentation

For additional Documentation about the InvasivesBC Application, see the Wiki

Requirements

  • XCode* (for iOS builds only)
  • Android Studio* (for Android Builds only)
  • Node >=20.0 or Docker

Development

The ideal multi-platform supporting machine is the Mac, But Windows and Linux work for Web and Android development.

Android Development

Install AndroidStudio and the Android SDK.

IOS Development

On MacOS: Install xCode.

Setup Instructions

Clone the repository to your own machine and follow instructions below.

Run the app locally (terminal)

In the app directory:

  1. npm ci
  2. npm start

In the api directory:

  1. npm ci
  2. npm run dev

Run the app locally (docker)

In the root directory

  1. make docker

Run the app on mobile

Android

On MacOS, Windows or Linux, in the app directory:

  1. npm install
  2. npm run build:android
  3. cd ..
  4. make run-android

Android Studio will open and, after a short delay, will allow you to run the application in the simulator or a connected device.

IOS

On MacOS, in the app directory:

  1. npm install
  2. npm run build:ios
  3. cd ..
  4. make run-ios

Xcode will open and, after a short delay, will allow you to run the application in the simulator or a connected device.

Acknowledgements

SonarCloud

License

Copyright 2019 Province of British Columbia

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 6 days ago

Total Commits: 5,192
Total Committers: 27
Avg Commits per committer: 192.296
Development Distribution Score (DDS): 0.724

Commits in past year: 983
Committers in past year: 6
Avg Commits per committer in past year: 163.833
Development Distribution Score (DDS) in past year: 0.334

Name Email Commits
Micheal Wells m****s@g****m 1434
LocalNewsTV 6****V 655
bburciaga b****6@g****m 510
Hryhorii Pertaia r****7@g****m 438
Sam Warren s****4@g****m 424
Robert Johnstone r****b@p****m 409
Gabriele Dal Cengio d****e@g****m 393
brennanwebster B****r@g****a 201
Jamie Popkin p****j@l****a 177
Mike Wells mw@a****l 92
Shreyas Devalapurkar s****r@g****m 86
dogcomplex w****h@g****m 85
Nick Phura N****a@q****m 60
Meghna Holla 3****3 53
Roland Stens r****s@g****m 50
Chris Rafuse c****e@q****m 35
dependabot[bot] 4****] 35
Brijesh b****n@g****a 21
David 6****u 12
Burciaga b****g@n****v 10
Jason C. Leach j****h@f****a 4
Micheal Wells m****s@M****l 2
Anissa Agahchen a****n@a****m 2
Brijesh Amin b****n@g****m 1
Robert Johnstone r****b@S****l 1
Brennan Webster b****r@B****l 1
ZoeSimon 6****n 1

Committer domains:


Issue and Pull Request metadata

Last synced: 1 day ago

Total issues: 347
Total pull requests: 276
Average time to close issues: about 2 months
Average time to close pull requests: 3 days
Total issue authors: 7
Total pull request authors: 11
Average comments per issue: 0.52
Average comments per pull request: 1.07
Merged pull request: 237
Bot issues: 2
Bot pull requests: 1

Past year issues: 281
Past year pull requests: 189
Past year average time to close issues: about 1 month
Past year average time to close pull requests: 1 day
Past year issue authors: 5
Past year pull request authors: 4
Past year average comments per issue: 0.38
Past year average comments per pull request: 1.11
Past year merged pull request: 171
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/bcgov/invasivesbc

Top Issue Authors

  • LocalNewsTV (113)
  • brennanwebster (111)
  • ZoeSimon (56)
  • meghna0593 (41)
  • micheal-w-wells (13)
  • plasticviking (11)
  • repo-mountie[bot] (2)

Top Pull Request Authors

  • LocalNewsTV (114)
  • meghna0593 (39)
  • plasticviking (31)
  • rstens (27)
  • NickPhura (25)
  • micheal-w-wells (17)
  • popkinj (9)
  • anissa-agahchen (7)
  • brennanwebster (5)
  • gdalcengio (1)
  • repo-mountie[bot] (1)

Top Issue Labels

  • Bug (116)
  • Feature Request (41)
  • Enhancement (37)
  • Task (37)
  • Ready (34)
  • duplicate (14)
  • INFO (14)
  • Research/Discussion (9)
  • Needs Info (7)
  • Mobile (7)
  • Epic (7)
  • Cancelled (7)
  • DevOps (6)
  • UX/UI (4)
  • Needs Offline Implementation (4)
  • Technical debt (4)
  • SO Testing (4)
  • Old Bug (4)
  • Nice to have (4)
  • Newsworthy (3)
  • Stale (2)
  • offline (2)
  • User Requested Enhancement (2)
  • Critical (2)
  • Preference (2)
  • BLOCKED (1)
  • web (1)
  • From User Testing Session (1)
  • Post Launch (1)
  • high priority (1)

Top Pull Request Labels

  • Bug (1)

Dependencies

.github/workflows/rebase.yaml actions
  • actions/checkout v2 composite
  • cirrus-actions/rebase 1.4 composite
.github/workflows/sonar.yaml actions
  • SonarSource/sonarcloud-github-action master composite
  • actions/checkout v2 composite
app/ios/App/Podfile cocoapods
  • Capacitor >= 0
  • CapacitorApp >= 0
  • CapacitorCamera >= 0
  • CapacitorCommunityHttp >= 0
  • CapacitorCommunitySqlite >= 0
  • CapacitorCordova >= 0
  • CapacitorDevice >= 0
  • CapacitorGeolocation >= 0
  • CapacitorHaptics >= 0
  • CapacitorKeyboard >= 0
  • CapacitorNetwork >= 0
  • CapacitorStatusBar >= 0
  • CordovaPlugins >= 0
.docker/nginx/Dockerfile docker
  • nginx stable-alpine build
api/.docker/api/Dockerfile docker
  • node 16.14-alpine build
api/docker-compose.yml docker
  • ${PROJECT_NAME}-${TAG}-api-dep-img latest
  • ${PROJECT_NAME}-${TAG}-api-img latest
docker-compose.local.yml docker
  • ${PROJECT_NAME}-${TAG}-api-dep-img latest
  • ${PROJECT_NAME}-${TAG}-api-img latest
  • ${PROJECT_NAME}-${TAG}-nginx-img latest
  • ${PROJECT_NAME}-${TAG}-postgres-setup-img latest
  • postgis/postgis 14-3.2-alpine
app/android/app/build.gradle maven
  • androidx.appcompat:appcompat $androidxAppCompatVersion implementation
  • junit:junit $junitVersion testImplementation
api/package-lock.json npm
  • 1051 dependencies
api/package.json npm
  • @faker-js/faker ^6.1.2 development
  • @turf/bbox ^6.5.0 development
  • @types/body-parser ~1.19.0 development
  • @types/chai ~4.2.12 development
  • @types/express ~4.17.0 development
  • @types/express-openapi ~1.9.0 development
  • @types/geojson ^7946.0.8 development
  • @types/gulp ~4.0.6 development
  • @types/jsonwebtoken ~8.5.0 development
  • @types/memory-cache ~0.2.1 development
  • @types/mocha ~8.0.1 development
  • @types/mongoose ^5.11.97 development
  • @types/node ^17.0.23 development
  • @types/pg ~7.14.4 development
  • @types/supertest ^2.0.12 development
  • @types/uuid ~8.3.0 development
  • @types/yamljs ~0.2.31 development
  • @typescript-eslint/eslint-plugin ~3.7.1 development
  • @typescript-eslint/parser ~3.7.1 development
  • chai ~4.2.0 development
  • database-cleaner ~1.3.0 development
  • del ~5.1.0 development
  • dotenv ~8.2.0 development
  • eslint ~7.5.0 development
  • eslint-config-prettier ~6.11.0 development
  • eslint-plugin-prettier ~3.1.4 development
  • factory-girl ~5.0.4 development
  • geojson-random ^0.5.0 development
  • gulp ~4.0.2 development
  • gulp-typescript ~5.0.1 development
  • mocha ~10.1.0 development
  • nock ~13.0.3 development
  • nodemon ~2.0.4 development
  • npm-run-all ~4.1.5 development
  • prettier ~2.0.5 development
  • supertest ~4.0.2 development
  • ts-mocha ~10.0.0 development
  • ts-node ~10.4.0 development
  • typescript ^4.6.3 development
  • typescript-json-schema-faker 0.0.10 development
  • @mapbox/togeojson ^0.16.0
  • @turf/distance ^6.0.1
  • @turf/helpers ^6.1.4
  • @turf/nearest-point ^6.0.1
  • @types/adm-zip ^0.4.34
  • adm-zip ^0.5.9
  • aws-sdk ~2.814.0
  • axios ~0.21.1
  • body-parser ~1.19.0
  • compression ^1.7.4
  • csv-parser ^3.0.0
  • db-migrate ~0.11.11
  • db-migrate-pg ~1.2.2
  • express ~4.17.3
  • express-openapi ~7.0.1
  • faker ^6.6.6
  • fast-json-patch ~3.1.1
  • js-base64 ~3.4.5
  • jsdom ^19.0.0
  • json-schema-traverse ~0.5.0
  • jsonwebtoken ~9.0.0
  • jwks-rsa ~1.9.0
  • knex ^0.21.4
  • mapshaper ^0.5.79
  • memory-cache ~0.2.0
  • moment ~2.29.4
  • node-fetch ^2.6.7
  • pg ~8.7.0
  • pg-format ^1.0.4
  • proj4 ^2.6.3
  • qs ~6.9.7
  • reproject ^1.2.6
  • simple-get ^4.0.1
  • sql-template-strings ~2.2.2
  • swagger-object-validator ^1.2.2
  • urldecode ^1.0.1
  • uuid ~8.3.0
  • validator ~13.7.0
  • winston ~3.3.3
  • yamljs ~0.3.0
app/package-lock.json npm
  • 1512 dependencies
app/package.json npm
  • @capacitor/cli ^3.4.1 development
  • @capacitor/core ^3.4.1 development
  • @faker-js/faker ^6.0.0-alpha.6 development
  • @ionic/cli ^6.18.0 development
  • @ionic/lab 3.2.7 development
  • @rollup/plugin-commonjs ^24.0.0 development
  • @types/geojson ^7946.0.3 development
  • @types/jest ^24.0.25 development
  • @types/leaflet ^1.9.0 development
  • @types/leaflet-draw ^1.0.6 development
  • @types/node ^16.11.7 development
  • @types/qs ^6.9.6 development
  • @types/react ^17.0.35 development
  • @types/react-dom ^16.9.12 development
  • @types/react-router ^5.1.14 development
  • @types/react-router-dom ^5.3.2 development
  • @types/uuid ^8.3.0 development
  • @vitejs/plugin-react ^3.0.0 development
  • cypress ^8.7.0 development
  • eslint ^7.28.0 development
  • eslint-config-prettier ^8.3.0 development
  • eslint-plugin-prettier ^3.4.0 development
  • jeep-sqlite ^1.6.7 development
  • prettier ^2.6.2 development
  • react-error-overlay 6.0.9 development
  • react-leaflet-editable ^0.2.2 development
  • react-sqlite-hook ^2.1.3 development
  • rollup-plugin-inject ^3.0.2 development
  • rollup-plugin-node-polyfills ^0.2.1 development
  • sass ^1.57.1 development
  • vite ^4.0.3 development
  • vite-tsconfig-paths ^4.0.3 development
  • @awesome-cordova-plugins/deeplinks ^5.37.3
  • @bcgov/bc-sans ^1.0.1
  • @capacitor-community/http ^1.4.1
  • @capacitor-community/sqlite ^3.2.5
  • @capacitor/android 3.1.2
  • @capacitor/app ^1.1.0
  • @capacitor/camera ^1.2.0
  • @capacitor/device ^1.1.1
  • @capacitor/geolocation ^1.1.3
  • @capacitor/haptics ^1.1.4
  • @capacitor/ios 3.2.5
  • @capacitor/keyboard ^1.2.2
  • @capacitor/network ^1.0.6
  • @capacitor/status-bar ^1.0.8
  • @date-io/date-fns ^1.3.13
  • @esbuild-plugins/node-globals-polyfill ^0.1.1
  • @esbuild-plugins/node-modules-polyfill ^0.1.4
  • @ionic-native/http ^5.36.0
  • @ionic/pwa-elements ^3.0.1
  • @ionic/react ^5.6.14
  • @ionic/react-router ^5.6.14
  • @mui/icons-material ^5.11.0
  • @mui/lab ^5.0.0-alpha.114
  • @mui/material ^5.11.3
  • @mui/styled-engine-sc ^5.11.0
  • @mui/styles ^5.11.2
  • @mui/x-data-grid ^5.17.18
  • @react-leaflet/core ^1.1.1
  • @rjsf/core ^5.0.0-beta.15
  • @rjsf/mui ^5.0.0-beta.15
  • @rjsf/utils ^5.0.0-beta.15
  • @rjsf/validator-ajv6 ^5.0.0-beta.15
  • @testing-library/jest-dom ^4.2.4
  • @testing-library/react ^9.4.1
  • @testing-library/user-event ^8.1.3
  • @tmcw/togeojson ^4.4.1
  • @turf/area ^6.5.0
  • @turf/bbox ^6.5.0
  • @turf/boolean-contains ^6.5.0
  • @turf/boolean-intersects ^6.5.0
  • @turf/boolean-overlap ^6.5.0
  • @turf/boolean-within ^6.5.0
  • @turf/centroid ^6.5.0
  • @turf/distance ^6.5.0
  • @turf/helpers ^6.5.0
  • @turf/inside ^5.0.0
  • @turf/line-to-polygon ^6.5.0
  • @turf/turf ^6.5.0
  • @types/proj4 ^2.5.2
  • @types/react-leaflet ^2.8.2
  • @typescript-eslint/eslint-plugin ^4.5.0
  • @typescript-eslint/parser ^4.5.0
  • async ^3.2.4
  • axios ^0.27.2
  • bfj ^7.0.2
  • camelcase ^6.1.0
  • clsx ~1.1.1
  • cordova-plugin-advanced-http ^3.3.1
  • cordova-plugin-compat ^1.2.0
  • cordova-plugin-file ^6.0.2
  • cordova-plugin-inappbrowser ^4.0.0
  • cordova-plugin-whitelist ^1.3.4
  • cordova-sqlite-storage ~5.1.0
  • date-fns ^2.21.3
  • distinct-colors ^3.0.0
  • dotenv 8.2.0
  • dotenv-expand 5.1.0
  • eslint ^7.11.0
  • eslint-config-react-app ^6.0.0
  • eslint-plugin-flowtype ^5.2.0
  • eslint-plugin-import ^2.22.1
  • eslint-plugin-jest ^24.1.0
  • eslint-plugin-jsx-a11y ^6.3.1
  • eslint-plugin-react ^7.21.5
  • eslint-plugin-react-hooks ^4.2.0
  • eslint-plugin-testing-library ^3.9.2
  • fs-extra ^9.0.1
  • geojson-vt ^3.2.1
  • georaster ^1.5.6
  • georaster-layer-for-leaflet ^3.8.0
  • geostyler-sld-parser ^5.0.0
  • identity-obj-proxy 3.0.0
  • ionic-plugin-deeplinks ^1.0.24
  • ionicons ^5.5.4
  • is-number ^7.0.0
  • jest 26.6.0
  • jest-circus 26.6.0
  • jest-resolve 26.6.0
  • jest-watch-typeahead 0.6.1
  • js-yaml ~3.14.1
  • jszip ^3.7.1
  • keycloak-ionic ^13.0.0
  • keycloak-js ^19.0.3
  • leaflet ^1.9.1
  • leaflet-canvas-marker ^0.2.0
  • leaflet-draw ^1.0.4
  • leaflet-editable ^1.2.0
  • leaflet-geojson-vt ^1.1.0
  • leaflet-markers-canvas ^0.2.2
  • leaflet.locatecontrol ^0.74.1
  • leaflet.offline ^2.2.0
  • localforage ^1.9.0
  • lodash ^4.17.21
  • lodash.groupby ^4.6.0
  • moment ^2.29.2
  • mui-color ^2.0.0-beta.2
  • mui-file-dropzone ^4.0.2
  • p-queue ^7.1.0
  • proj4 ^2.8.0
  • prompts 2.4.0
  • qs ^6.10.1
  • rbush ^3.0.1
  • react ^17.0.2
  • react-color ^2.19.3
  • react-data-grid ^7.0.0-beta.11
  • react-dev-utils ^12.0.1
  • react-dom ^17.0.2
  • react-dropzone ^14.2.3
  • react-json-to-table ^0.1.7
  • react-leaflet ^3.2.5
  • react-leaflet-cluster ^1.0.4
  • react-leaflet-glify ^1.0.1
  • react-redux ^8.0.1
  • react-refresh ^0.8.3
  • react-router ^5.3.4
  • react-router-dom ^5.3.4
  • react-select-material-ui ^8.0.1
  • react-sortable-hoc ^2.0.0
  • redux ^4.2.0
  • redux-logger ^3.0.6
  • redux-saga ^1.1.3
  • reproject ^1.2.6
  • semver 7.3.2
  • stream-to-string ^1.2.0
  • styled-components ^5.3.6
  • typescript 3.8.3
  • unzipper ^0.10.11
  • urlencode ^1.1.0
  • uuid ^8.3.0
  • wkt ^0.1.1
  • xmldom ^0.6.0
database/package-lock.json npm
  • 414 dependencies
database/package.json npm
  • @types/csvtojson ^1.1.5 development
  • @types/node ^12.12.24 development
  • @types/pg ~7.14.4 development
  • @typescript-eslint/eslint-plugin ~3.7.1 development
  • @typescript-eslint/parser ~3.7.1 development
  • eslint ~7.5.0 development
  • eslint-config-prettier ~6.11.0 development
  • eslint-plugin-prettier ~3.1.4 development
  • npm-run-all ~4.1.5 development
  • prettier ^2.1.2 development
  • ts-node ~8.10.2 development
  • @turf/turf ^6.5.0
  • axios ^0.21.0
  • csv-parse ^4.14.1
  • csv-parser ^2.3.3
  • csvtojson ^2.0.10
  • knex ^2.2.0
  • meow ^8.0.0
  • moment ^2.29.4
  • node-gzip ^1.1.2
  • pg ~8.3.0
  • qs ^6.10.3
  • typescript ~3.9.7
app/android/build.gradle maven
sharedAPI/package-lock.json npm
  • 124 dependencies
sharedAPI/package.json npm
  • @types/geojson ^7946.0.3 development
  • @types/node ^16.11.7 development
  • @types/uuid ^8.3.0 development
  • eslint ^7.28.0 development
  • eslint-config-prettier ^8.3.0 development
  • eslint-plugin-prettier ^3.4.0 development
  • moment ^2.29.4 development
  • prettier ^2.6.2 development
  • typescript 5.0.2 development
  • geojson ^0.5.0
  • uuid ^8.3.0
.github/workflows/build_android.yaml actions
  • actions/cache v3 composite
  • actions/checkout v4 composite
  • actions/setup-node v3 composite
.github/workflows/build_ios.yaml actions
  • actions/cache v3 composite
  • actions/cache/restore v3 composite
  • actions/cache/save v3 composite
  • actions/checkout v4 composite
  • actions/setup-node v3 composite
  • actions/upload-artifact v3 composite
.github/workflows/app_test_state.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v4 composite
.github/workflows/app_test_state_coverage.yml actions
  • actions/checkout v4 composite
  • actions/download-artifact v4 composite
  • actions/setup-node v4 composite
  • actions/upload-artifact v4 composite
  • davelosert/vitest-coverage-report-action v2 composite
app/ios/App/Podfile.lock cocoapods
  • AppAuth 1.7.5
  • Capacitor 6.1.2
  • CapacitorApp 6.0.1
  • CapacitorCamera 6.0.2
  • CapacitorCommunityBackgroundGeolocation 0.0.1
  • CapacitorCommunitySqlite 6.0.1
  • CapacitorCordova 6.1.2
  • CapacitorGeolocation 6.0.1
  • CordovaPlugins 6.1.2
  • CordovaPluginsResources 0.0.105
  • SQLCipher 4.5.1
  • ZIPFoundation 0.9.13
app/.docker/Dockerfile docker
  • node 20-alpine build

Score: 8.389587066811092