arbimon

Ecoacoustic analysis platform empowering conservationists to analyze acoustic data and to derive insights about the ecosystem at scale

https://github.com/rfcx/arbimon

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.4%) to scientific vocabulary

Keywords

ai bioacoustics biodiversity-monitoring
Last synced: 11 months ago · JSON representation

Repository

Ecoacoustic analysis platform empowering conservationists to analyze acoustic data and to derive insights about the ecosystem at scale

Basic Info
  • Host: GitHub
  • Owner: rfcx
  • License: apache-2.0
  • Language: TypeScript
  • Default Branch: develop
  • Homepage: https://arbimon.org
  • Size: 402 MB
Statistics
  • Stars: 11
  • Watchers: 2
  • Forks: 1
  • Open Issues: 378
  • Releases: 13
Topics
ai bioacoustics biodiversity-monitoring
Created almost 5 years ago · Last pushed 11 months ago
Metadata Files
Readme Changelog Contributing License

README.md

Arbimon

Website for exploring biodiversity data; built with Vue 3, Typescript, Vite, pnpm, Pinia, Windi CSS.

Currently depends on Arbimon Legacy.

Biodiversity

Contributing

Sprint DoD (The Definition of Done)

The following must be true to consider a feature "DONE":

Resources

Installation

One-Time Setup

  1. Install tools:
  1. Install/update dependencies:

pnpm i

  1. Create local environment:
  • Copy apps/api/.env.example to .env, and fill missing variables
  1. (optional) Override default environment:
  • Create apps/cli/.env.local (and override variables as necessary)
  • Create apps/website/.env.local (and override variables as necessary)
  1. (recommended) Add yourself to an example project. Ask another developer to invite you to Puerto Rico project on staging (needed because local Bio/Arbimon still uses staging Core for projects/permissions).

Run the App!

  1. Start DB, API, and Website in dev-mode:

pnpm serve (from the monorepo root)
or
pnpm -w serve (from anywhere in the project)

If you followed step 5 above then you'll find a fully hydrated project if you navigate to http://localhost:8101/puerto-rico.

  1. After you finish, you might want to stop your db:

pnpm --filter=db stop

More Commands

Resetting Workspace

If you encounter an issue, you may want to clean caches and artifacts, or reinstall dependencies.

  • Delete all build and lint artifacts/caches:

pnpm -r clean

  • Delete all build and lint artifacts/caches AND dependencies (node_modules):

pnpm -w clean-slate (usually followed by pnpm i to reinstall a fresh copy)

Build

  • Build any package (and it's dependencies):

pnpm build

  • Use the pnpm arg -r to build all packages:

pnpm -r build

Lint

  • Run all linters, or only a single linter:

pnpm lint (all linters)
pnpm lint:eslint
pnpm lint:prettier
pnpm lint:stylelint

  • Lint is pretty heavy; use the helper to run it sequentially across all packages:

pnpm -w lint-all

  • Run linters with auto-fixes:

pnpm lint-fix (one package)
pnpm -w lint-fix-all (all packages)

Test

  • Start a separate test database (required for integration tests):

pnpm -w serve-int

  • Each package has some of the following test scripts:

pnpm test:component (unit tests for vue components)
pnpm test:int (heavy tests or tests that require a database)
pnpm test:unit (basic unit tests)
pnpm test-ui (tests executed in a browser)

  • For TDD, you probably want to execute a single file, describe, or test:

pnpm exec vitest src/_services/picker/time-of-day-picker.component.test (fast way to execute 1 file)
pnpm exec vitest src/_services/picker/time-of-day-picker.component.test -t "has all, dirunal, nocturnal options" (filter within the file; you should use this in addition to file-path filtering)

  • For TDD integration tests, you need a more complex command:

pnpm exec cross-env BIO_DB_PORT=5434 vitest --no-threads src/sync/sync-history-handler.int.test

  • You can also run all tests in a package, or across the entire project:

pnpm ci-all-test-component (unit tests for vue components) pnpm ci-all-test-unit (basic unit tests)
pnpm -w test-all (calls test in all packages sequentially, like lint-all)

Cheatsheet: pnpm

  • Run in monorepo root: pnpm -w _command_ (can be run from anywhere)

  • Run in all packages: pnpm -r _command_

  • Run in some packages: pnpm -r --filter=./apps _command_

  • Run in all packages, except root: pnpm --filter=!rfcx-bio _command_ (or pnpm --filter=\!rfcx-bio _command_ in zsh)

Deployment

There are 3 shared deployments:

  • testing: for the DT to test features when deployed & collaborate
    • https://testing-bio.rfcx.org
    • https://testing-bio.rfcx.org/api
  • staging: for stakeholders to review & give early feedback
    • https://staging-bio.rfcx.org
    • https://staging-bio.rfcx.org/api
  • production: real public project
    • https://bio.rfcx.org
    • https://bio.rfcx.org/api

Deployment: Testing

Any branch can be deployed to the testing cluster:

  1. Open the "Actions" tab on GitHub
  2. Select the "Build-Deploy" action
  3. Click on "Run workflow", and select the branch you wish to deploy

Note: develop branch is auto-deployed to testing daily

Deployment: Staging and Deployment: Production

Environments staging and production are automatically deployed by GitHub Actions (CD):

  • every push to staging branch => staging deploy
  • every push to master branch => production deploy

Environment (Config and Secrets)

Local Environment

  • Developers can override configuration and secrets locally using:

    • /apps/api/.env (copy .env.example to get started)
    • /apps/cli/.env.local (override any variable in .env)
    • /apps/website/.env.local (override any variable in .env)
  • CLI and website also support "modes", which will load respective env:

pnpm serve -- --mode=staging (from their directories; not from the monorepo root)

Deployed Environment

  • Config variables are committed to Git:
    • /tools/deployment/api/<NAMESPACE>/config.yaml
    • /apps/website/.env
  • Secret variables must be manually configured:
    • API secrets can be set manually via kubectl apply tools/deployment/api/production/secrets.yaml (make a copy of tools/deployment/api/secrets.example.yaml)
    • Website secrets can be set manually as GitHub secrets
    • Secrets should never be committed to Git

Feature toggle

  • Developers can add a feature toggle environments to control component displayment by following this step:
  1. Add vite environment inside .env
  2. Add the toggle key inside website/src/_services/feature-toggles
  3. Use inject() to get feature toggles for using inside the component

Note: The feature toggle value can be override following the override env file level from Modes

Configure the project for local development with rfcx-api

In some cases you wanted to test out the functionality with the core api.

Tools required from core

  • psql

make sure psql is installed in your machine. You can install just libpq to make this work.

brew install libpq

make sure you have linked it to your shell by putting this inside your shell configuration file

bash export PATH="/opt/homebrew/opt/libpq/bin:$PATH"

For windows users it's easier to just install the whole database. See https://www.postgresql.org/download/windows/

  • yarn You can install yarn with homebrew

brew install yarn

Or with npm

npm i -g yarn

  • python3 and setuptools You can install python3 from pyenv or use a local install of python3 inside of your OS pip install setuptools

Core preparation

  • Startup core by cloning rfcx-api to your machine

git clone git@github.com:rfcx/rfcx-api ./rfcx-api cd rfcx-api

  • Setup environment variables for core

cp ./common/config/env-vars.js.sample ./common/config/env-vars.js

  • Make sure you have AUTH0_CLIENT_ID and AUTH0_CLIENT_SECRET environment variable from the core team. So your api can be accessed and validated.
  • Get one of the backend team to add you onto the seed script, or you can add yourself by.

    • In the file ./core/_cli/seeds/02-users.sql. Add yourself into the database with the email that you will be using during the development. You can use any id and guid but make sure the email matches.
    • In the file ./core/_cli/seeds/07-user-organization-roles.sql. Add yourself into the organization with an id of aaaaaaaaaaa6 and role_id of 1.
    • In the file ./core/_cli/seeds/08-user-project-roles.sql. Add yourself into Puerto rico project (id zy5jbxx4cs9f) with role_id of 1.
  • Install dependencies, start core's database and perform reset-migrate-seed by running

yarn serve-db:core

  • Start core server with yarn dev:core

Arbimon preparation

  • Change CORE_API_BASE_URL to http://localhost:8080 inside ./apps/api/.env
  • Change VITE_CORE_API_BASE_URL to http://loaclhost:8080 inside ./apps/website/.env

Now you can run your project normally on arbimon and you will be able to see 5 projects with 5 different statuses in the cnn analysis page.

Owner

  • Name: Rainforest Connection (RFCx)
  • Login: rfcx
  • Kind: organization
  • Email: contact@rfcx.org
  • Location: United States of America

RFCx is a non-profit tech startup building scalable, open-source solutions to the protection and conservation of the natural world.

GitHub Events

Total
  • Issues event: 266
  • Watch event: 7
  • Delete event: 6
  • Issue comment event: 145
  • Push event: 234
  • Pull request review comment event: 5
  • Pull request review event: 7
  • Pull request event: 11
  • Create event: 9
Last Year
  • Issues event: 266
  • Watch event: 7
  • Delete event: 6
  • Issue comment event: 145
  • Push event: 234
  • Pull request review comment event: 5
  • Pull request review event: 7
  • Pull request event: 11
  • Create event: 9

Committers

Last synced: 11 months ago

All Time
  • Total Commits: 6,297
  • Total Committers: 14
  • Avg Commits per committer: 449.786
  • Development Distribution Score (DDS): 0.793
Past Year
  • Commits: 75
  • Committers: 3
  • Avg Commits per committer: 25.0
  • Development Distribution Score (DDS): 0.56
Top Committers
Name Email Commits
Charles Allen 3****n 1,305
Nutto55 4****5 1,254
Somjintana Korbut n****n@g****m 1,214
Bhattarapong Somwong n****5@g****m 716
Antony Harfield a****d@h****m 613
Evgeniia Rassokhina e****a@g****m 559
ratree r****n@g****m 265
turk-t t****k@r****g 186
Chanachai Yaemban 7****6 107
TooSeriuz f****s@r****g 41
LucyDimitrova l****y@r****m 19
Lyuboslava Dimitrova l****y@r****g 14
Stanislav Rassokhin s****n@g****m 3
guhtzx s****2@n****h 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 11 months ago

All Time
  • Total issues: 269
  • Total pull requests: 26
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 3 days
  • Total issue authors: 7
  • Total pull request authors: 5
  • Average comments per issue: 1.44
  • Average comments per pull request: 0.38
  • Merged pull requests: 15
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 178
  • Pull requests: 13
  • Average time to close issues: 12 days
  • Average time to close pull requests: 4 days
  • Issue authors: 4
  • Pull request authors: 3
  • Average comments per issue: 0.68
  • Average comments per pull request: 0.0
  • Merged pull requests: 9
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • koonchaya (232)
  • Tooseriuz (15)
  • naluinui (11)
  • carlybatist (4)
  • grindarius (3)
  • RatreeOchn (2)
  • rassokhina-e (2)
Pull Request Authors
  • RatreeOchn (7)
  • rassokhina-e (7)
  • koonchaya (6)
  • Tooseriuz (5)
  • turk-t (1)
Top Labels
Issue Labels
feature request (22) enhancement (12) bug (11) user support (10) api (9) testing (1) need more info (1) quality (1)
Pull Request Labels

Dependencies

.github/workflows/cd.yaml actions
  • actions-hub/kubectl 2d1ce94ead5b3ba03de25df993a359c1b4657b05 composite
  • actions/checkout b4ffde65f46336ab88eb53be808477a3936bae11 composite
.github/workflows/ci-nightly.yaml actions
.github/workflows/ci-on-push.yaml actions
.github/workflows/create-job.yaml actions
  • actions-hub/kubectl 6fd9eb2486a67fab3b011befdf3cfcc4e64d9655 composite
  • kanga333/variable-mapper 3681b75f5c6c00162721168fb91ab74925eaebcb composite
.github/workflows/reusable-build.yaml actions
  • actions/cache 704facf57e6136b1bc63b828d79edcd491f0ee84 composite
  • actions/checkout b4ffde65f46336ab88eb53be808477a3936bae11 composite
  • actions/setup-node 8f152de45cc393bb48ce5d89d36b731f54556e65 composite
  • actions/upload-artifact v3 composite
  • pnpm/action-setup d882d12c64e032187b2edb46d3a0d003b7a43598 composite
.github/workflows/reusable-int-test.yaml actions
  • actions/cache 704facf57e6136b1bc63b828d79edcd491f0ee84 composite
  • actions/checkout b4ffde65f46336ab88eb53be808477a3936bae11 composite
  • actions/download-artifact v3 composite
  • actions/setup-node 8f152de45cc393bb48ce5d89d36b731f54556e65 composite
  • pnpm/action-setup d882d12c64e032187b2edb46d3a0d003b7a43598 composite
  • adobe/s3mock latest docker
  • opensearchproject/opensearch 2.11.0 docker
  • timescale/timescaledb latest-pg12 docker
apps/api/package.json npm
  • form-auto-content ^3.2.1 development
  • pino-pretty ^7.3.0 development
  • @fastify/cors ^7.0.0
  • @fastify/multipart 6.0.0
  • @fastify/routes ^4.0.0
  • @fastify/static ^5.0.2
  • @js-temporal/polyfill ^0.3.0
  • @opensearch-project/opensearch ^2.5.0
  • @rfcx-bio/common workspace:^0.0.1
  • @rfcx-bio/node-common workspace:^0.0.1
  • @rfcx-bio/utils workspace:^0.0.1
  • axios ^0.27.2
  • dayjs ^1.11.7
  • fastify ^3.23.1
  • fastify-auth0-verify 0.7.4
  • fastify-plugin ^3.0.1
  • lodash-es ^4.17.21
  • quick-lru ^7.0.0
  • sequelize 7.0.0-alpha.5
tools/configs/package.json npm
tools/db/package.json npm
tools/deployment/Dockerfile docker
  • build latest build
  • nginx 1.21-alpine build
  • node 18-alpine build
  • node-pnpm latest build
  • with-deps latest build
tools/maintenance/Dockerfile docker
  • nginx 1.21-alpine build
apps/cli/package.json npm
  • @types/archiver ^6.0.2 development
  • @types/mailchimp__mailchimp_transactional ^1.0.10 development
  • @types/mysql ^2.15.19 development
  • @types/object-hash ^2.2.1 development
  • @types/validator ^13.7.0 development
  • @types/yauzl ^2.10.3 development
  • object-hash ^3.0.0 development
  • sqlite3 ^5.0.2 development
  • yauzl ^3.1.3 development
  • @aws-sdk/client-s3 ^3.567.0
  • @aws-sdk/s3-request-presigner ^3.567.0
  • @mailchimp/mailchimp_transactional ^1.0.59
  • @opensearch-project/opensearch ^2.5.0
  • @rfcx-bio/common workspace:^0.0.1
  • @rfcx-bio/node-common workspace:^0.0.1
  • @rfcx-bio/utils workspace:^0.0.1
  • @slack/web-api ^6.8.1
  • archiver ^7.0.1
  • axios ^0.27.2
  • cheerio 1.0.0-rc.12
  • consola ^3.2.3
  • countries-list ^3.0.6
  • dayjs ^1.11.7
  • dotenv ^10.0.0
  • lodash-es ^4.17.21
  • mysql2 ^2.3.3
  • pg ^8.7.1
  • pg-hstore ^2.3.4
  • quick-lru ^7.0.0
  • sequelize 7.0.0-alpha.5
  • umzug ^3.0.0
  • zod ^3.22.4
apps/website/package.json npm
  • @iconify-json/fa ^1.1.8 development
  • @iconify-json/fa-regular ^1.1.8 development
  • @iconify-json/fa-solid ^1.1.8 development
  • @pinia/testing ^0.1.3 development
  • @types/color-string ^1.5.0 development
  • @types/d3 ^7.1.0 development
  • @types/howler ^2.2.4 development
  • @types/mapbox-gl ^2.4.2 development
  • @types/numeral ^2.0.2 development
  • @vueuse/head ^1.1.19 development
  • @windicss/plugin-animations ^1.0.9 development
  • @windicss/plugin-interaction-variants ^1.0.0 development
  • c8 ^7.10.0 development
  • flowbite ^2.2.1 development
  • flowbite-windicss-plugin ^0.1.3 development
  • happy-dom ^5.3.1 development
  • unplugin-auto-import ^0.17.2 development
  • unplugin-icons ^0.18.1 development
  • unplugin-vue-components ^0.26.0 development
  • vite ^4.1.4 development
  • vite-ssg ^0.23.1 development
  • windicss ^3.5.6 development
  • @auth0/auth0-spa-js ^1.19.2
  • @leeoniya/ufuzzy ^1.0.8
  • @rfcx-bio/common workspace:^0.0.1
  • @rfcx-bio/utils workspace:^0.0.1
  • @tanstack/vue-query ^5.14.6
  • @tiptap/core ^2.1.13
  • @tiptap/extension-character-count ^2.1.13
  • @tiptap/extension-link ^2.1.13
  • @tiptap/pm ^2.1.13
  • @tiptap/starter-kit ^2.1.13
  • @tiptap/vue-3 ^2.1.13
  • @types/geojson ^7946.0.10
  • @types/markdown-it ^12.2.3
  • @vueuse/components ^6.7.6
  • @vueuse/core ^6.7.6
  • axios ^0.27.2
  • countries-list ^3.0.6
  • d3 ^7.1.1
  • dayjs ^1.11.7
  • element-plus ^2.2.36
  • flowbite-datepicker v1.2.6
  • geojson ^0.5.0
  • howler ^2.2.3
  • jszip ^3.7.1
  • lodash-es ^4.17.21
  • lodash.debounce ^4.0.8
  • mapbox-gl ^2.13.0
  • numeral ^2.0.6
  • pinia ^2.1.7
  • siriwave ^2.4.0
  • tiptap-markdown ^0.8.8
  • vue ^3.3.13
  • vue-class-component ^8.0.0-rc.1
  • vue-country-flag-next ^2.3.2
  • vue-gtag ^2.0.1
  • vue-property-decorator ^10.0.0-rc.3
  • vue-router ^4.2.5
  • vue3-markdown-it ^1.0.10
  • xlsx ^0.17.3
package.json npm
  • @babel/core ^7.16.0 development
  • @babel/preset-env ^7.16.4 development
  • @babel/preset-typescript ^7.16.0 development
  • @mixer/parallel-prettier ^2.0.1 development
  • @testing-library/vue ^8.0.1 development
  • @types/estree ^0.0.50 development
  • @types/lodash-es ^4.17.5 development
  • @types/node ^18.18.2 development
  • @types/webpack ^5.28.0 development
  • @typescript-eslint/eslint-plugin ^5.54.1 development
  • @typescript-eslint/parser ^5.54.1 development
  • @vitejs/plugin-vue ^4.0.0 development
  • @vitest/ui ^0.0.132 development
  • @vue/compiler-sfc ^3.3.13 development
  • @vue/eslint-config-standard ^8.0.1 development
  • @vue/eslint-config-typescript ^11.0.2 development
  • @vue/test-utils ^2.0.0-rc.16 development
  • concurrently ^6.4.0 development
  • cross-env ^7.0.3 development
  • cypress ^13.6.1 development
  • cypress-fail-on-console-error ^5.0.3 development
  • cypress-wait-until ^3.0.1 development
  • detect-browsers ^5.0.5 development
  • dotenv ^10.0.0 development
  • eslint ^8.35.0 development
  • eslint-config-standard-with-typescript ^34.0.0 development
  • eslint-plugin-cypress ^2.12.1 development
  • eslint-plugin-import ^2.27.5 development
  • eslint-plugin-import-newlines ^1.4.0 development
  • eslint-plugin-json-files ^1.3.0 development
  • eslint-plugin-n ^15.6.1 development
  • eslint-plugin-node ^11.1.0 development
  • eslint-plugin-promise ^6.1.1 development
  • eslint-plugin-regex ^1.10.0 development
  • eslint-plugin-simple-import-sort ^7.0.0 development
  • eslint-plugin-sort-class-members ^1.16.0 development
  • eslint-plugin-unicorn ^38.0.0 development
  • eslint-plugin-unused-imports ^2.0.0 development
  • eslint-plugin-vue ^9.9.0 development
  • nodemon ^2.0.15 development
  • open-cli ^7.0.1 development
  • postcss ^8.3.11 development
  • prettier ^2.4.1 development
  • rimraf ^3.0.2 development
  • sass ^1.43.4 development
  • sass-loader ^12.3.0 development
  • strip-json-comments ^4.0.0 development
  • stylelint ^14.0.1 development
  • stylelint-config-property-sort-order-smacss ^8.0.0 development
  • stylelint-config-standard-scss ^3.0.0 development
  • ts-node ^10.5.0 development
  • ts-patch ^2.0.1 development
  • ts-to-zod ^1.11.0 development
  • tsconfig-paths ^3.12.0 development
  • typescript 4.5 development
  • typescript-transform-paths ^3.3.1 development
  • vite ^4.0.0 development
  • vite-plugin-windicss ^1.8.10 development
  • vite-tsconfig-paths ^3.3.17 development
  • vitest ^0.13.1 development
  • vue ^3.2.47 development
  • vue-eslint-parser ^9.1.0 development
  • vue-tsc ^1.2.0 development
  • wait-port ^0.2.9 development
  • webpack ^5.61.0 development
packages/common/package.json npm
  • @rfcx-bio/utils workspace:^0.0.1
  • @types/pg ^8.6.4
  • axios ^0.27.2
  • dayjs ^1.11.7
  • lodash-es ^4.17.21
packages/node-common/package.json npm
  • @types/pg ^8.6.4 development
  • @aws-sdk/client-s3 ^3.567.0
  • @aws-sdk/s3-request-presigner ^3.567.0
  • @opensearch-project/opensearch ^2.5.0
  • @rfcx-bio/utils workspace:^0.0.1
  • kubernetes-client ^9.0.0
  • lodash-es ^4.17.21
  • pg ^8.7.1
  • pg-hstore ^2.3.4
  • sequelize 7.0.0-alpha.5
  • sharp ^0.33.3
packages/testing/package.json npm
  • @fastify/multipart 6.0.0
  • @fastify/routes ^4.0.0
  • @rfcx-bio/common workspace:^0.0.1
  • @rfcx-bio/node-common workspace:^0.0.1
  • fastify ^3.23.1
  • fastify-plugin ^3.0.1
packages/utils/package.json npm
  • @types/numeral ^2.0.2 development
  • axios ^0.27.2
  • dayjs ^1.11.7
  • jszip ^3.7.1
  • lodash-es ^4.17.21
  • numeral ^2.0.6
  • xlsx ^0.17.3
pnpm-lock.yaml npm