arbimon
Ecoacoustic analysis platform empowering conservationists to analyze acoustic data and to derive insights about the ecosystem at scale
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
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
Metadata Files
README.md
Arbimon
Website for exploring biodiversity data; built with Vue 3, Typescript, Vite, pnpm, Pinia, Windi CSS.
Currently depends on Arbimon Legacy.

Contributing
Sprint DoD (The Definition of Done)
The following must be true to consider a feature "DONE":
- Code follows CONTRIBUTING.md
- Updated CHANGELOG.md
- Code deployed to staging
- Demo video sent to #biodiversity-vision
Resources
Installation
One-Time Setup
- Install tools:
- node 18 or higher: https://nodejs.org. For anyone using nvm, simply do
nvm useand you will get the current recommended version. - pnpm 9 or higher:
npm i -g pnpm@9 - VSCode & extensions:
pnpm node init-vscode(requirescodecommand in path)- If you have Vetur installed, disable it for this workspace
- Docker Desktop: https://www.docker.com/products/docker-desktop
- Install/update dependencies:
pnpm i
- Create local environment:
- Copy
apps/api/.env.exampleto.env, and fill missing variables
- (optional) Override default environment:
- Create
apps/cli/.env.local(and override variables as necessary) - Create
apps/website/.env.local(and override variables as necessary)
- (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!
- 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.
- 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
-rto 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, ortest:
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_(orpnpm --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:
- Open the "Actions" tab on GitHub
- Select the "Build-Deploy" action
- 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
stagingbranch =>stagingdeploy - every push to
masterbranch =>productiondeploy
Environment (Config and Secrets)
Local Environment
Developers can override configuration and secrets locally using:
/apps/api/.env(copy.env.exampleto 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 oftools/deployment/api/secrets.example.yaml) - Website secrets can be set manually as GitHub secrets
- Secrets should never be committed to Git
- API secrets can be set manually via
Feature toggle
- Developers can add a feature toggle environments to control component displayment by following this step:
- Add vite environment inside
.env - Add the toggle key inside
website/src/_services/feature-toggles - 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/
yarnYou can install yarn with homebrew
brew install yarn
Or with npm
npm i -g yarn
python3andsetuptoolsYou can installpython3frompyenvor use a local install ofpython3inside of your OSpip 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_IDandAUTH0_CLIENT_SECRETenvironment 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 ofaaaaaaaaaaa6and role_id of1. - In the file
./core/_cli/seeds/08-user-project-roles.sql. Add yourself into Puerto rico project (idzy5jbxx4cs9f) with role_id of1.
- In the file
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_URLtohttp://localhost:8080inside./apps/api/.env - Change
VITE_CORE_API_BASE_URLtohttp://loaclhost:8080inside./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
- Website: https://rfcx.org/
- Twitter: RainforestCx
- Repositories: 22
- Profile: https://github.com/rfcx
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
Top Committers
| Name | 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
Pull Request Labels
Dependencies
- actions-hub/kubectl 2d1ce94ead5b3ba03de25df993a359c1b4657b05 composite
- actions/checkout b4ffde65f46336ab88eb53be808477a3936bae11 composite
- actions-hub/kubectl 6fd9eb2486a67fab3b011befdf3cfcc4e64d9655 composite
- kanga333/variable-mapper 3681b75f5c6c00162721168fb91ab74925eaebcb composite
- actions/cache 704facf57e6136b1bc63b828d79edcd491f0ee84 composite
- actions/checkout b4ffde65f46336ab88eb53be808477a3936bae11 composite
- actions/setup-node 8f152de45cc393bb48ce5d89d36b731f54556e65 composite
- actions/upload-artifact v3 composite
- pnpm/action-setup d882d12c64e032187b2edb46d3a0d003b7a43598 composite
- 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
- 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
- build latest build
- nginx 1.21-alpine build
- node 18-alpine build
- node-pnpm latest build
- with-deps latest build
- nginx 1.21-alpine build
- @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
- @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
- @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
- @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
- @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
- @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
- @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