{"id":318695,"name":"bioenergy.org","description":"A site dedicated to creating FAIR datasets to share across bioenergy research centers and to the global research community.","url":"https://github.com/bioenergy-research-centers/bioenergy.org","last_synced_at":"2026-04-20T09:02:46.848Z","repository":{"id":279893144,"uuid":"679319243","full_name":"bioenergy-research-centers/bioenergy.org","owner":"bioenergy-research-centers","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-02T16:40:23.000Z","size":8140,"stargazers_count":8,"open_issues_count":14,"forks_count":2,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-04-07T03:03:05.595Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://bioenergy.org/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bioenergy-research-centers.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-08-16T15:15:41.000Z","updated_at":"2026-04-02T16:40:28.000Z","dependencies_parsed_at":"2026-02-17T03:01:16.931Z","dependency_job_id":"4e50832c-aec8-4464-bff1-cbbe1827a01c","html_url":"https://github.com/bioenergy-research-centers/bioenergy.org","commit_stats":null,"previous_names":["bioenergy-research-centers/bioenergy.org"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bioenergy-research-centers/bioenergy.org","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bioenergy-research-centers%2Fbioenergy.org","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bioenergy-research-centers%2Fbioenergy.org/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bioenergy-research-centers%2Fbioenergy.org/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bioenergy-research-centers%2Fbioenergy.org/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bioenergy-research-centers","download_url":"https://codeload.github.com/bioenergy-research-centers/bioenergy.org/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bioenergy-research-centers%2Fbioenergy.org/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31584816,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"online","status_checked_at":"2026-04-09T02:00:06.848Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"bioenergy-research-centers","name":"bioenergy-research-centers","uuid":"142427124","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/142427124?v=4","repositories_count":1,"last_synced_at":"2025-02-28T04:07:26.082Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/bioenergy-research-centers","funding_links":[],"total_stars":2,"followers":4,"following":0,"created_at":"2025-02-28T04:07:26.103Z","updated_at":"2025-02-28T04:07:26.103Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bioenergy-research-centers","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bioenergy-research-centers/repositories"},"packages":[],"commits":{"id":10358114,"full_name":"bioenergy-research-centers/bioenergy.org","default_branch":"main","total_commits":92,"total_committers":14,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":6.571428571428571,"dds":0.7282608695652174,"past_year_total_commits":36,"past_year_total_committers":9,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":4.0,"past_year_dds":0.6111111111111112,"last_synced_at":"2026-04-13T06:03:14.622Z","last_synced_commit":"bf31dcde234d5eb1bccadae0db506014d7f3210d","created_at":"2025-06-16T00:02:46.269Z","updated_at":"2026-04-13T06:03:03.573Z","committers":[{"name":"Nick Thrower","email":"throwern@msu.edu","login":"throwern","count":25},{"name":"Clint Cecil","email":"ccecil@wisc.edu","login":"thatRailsGuy","count":13},{"name":"Hector Plahar","email":"hplahar","login":"hplahar","count":11},{"name":"Chuck Parker","email":"ct-parker","login":"ct-parker","count":10},{"name":"Nathan Hillson","email":"njhillson@lbl.gov","login":"njhillson","count":9},{"name":"Valerie Autumn Skye","email":"12895168+valerie-autumn-skye","login":"valerie-autumn-skye","count":8},{"name":"Harry Caufield","email":"j.harry.caufield@gmail.com","login":"caufieldjh","count":5},{"name":"mkulawik","email":"121195+mkulawik","login":"mkulawik","count":2},{"name":"ianderthal","email":"ianderthal","login":"ianderthal","count":2},{"name":"StantonMartin","email":"62398353+StantonMartin","login":"StantonMartin","count":2},{"name":"Mark A. Miller","email":"MAM@lbl.gov","login":"turbomam","count":2},{"name":"franflame","email":"81339239+franflame","login":"franflame","count":1},{"name":"Leslie Stoecker","email":"lensor@illinois.edu","login":"lensor","count":1},{"name":"Dirk Norman (GLBRC)","email":"142447582+dnorman-glbrc","login":"dnorman-glbrc","count":1}],"past_year_committers":[{"name":"Nick Thrower","email":"throwern@msu.edu","login":"throwern","count":14},{"name":"Valerie Autumn Skye","email":"12895168+valerie-autumn-skye","login":"valerie-autumn-skye","count":8},{"name":"Charles Parker","email":"ct-parker","login":"ct-parker","count":5},{"name":"ianderthal","email":"ianderthal","login":"ianderthal","count":2},{"name":"Harry Caufield","email":"j.harry.caufield@gmail.com","login":"caufieldjh","count":2},{"name":"Clinton Cecil","email":"ccecil@wisc.edu","login":"thatRailsGuy","count":2},{"name":"mkulawik","email":"121195+mkulawik","login":"mkulawik","count":1},{"name":"franflame","email":"81339239+franflame","login":"franflame","count":1},{"name":"Hector Plahar","email":"hplahar","login":"hplahar","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/bioenergy-research-centers%2Fbioenergy.org/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-15T00:00:09.512Z","repositories_count":6213593,"commits_count":903370865,"contributors_count":34924174,"owners_count":1144562,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"bioenergy-research-centers/bioenergy.org","html_url":"https://github.com/bioenergy-research-centers/bioenergy.org","last_synced_at":"2026-04-11T05:01:15.682Z","status":"active","issues_count":98,"pull_requests_count":70,"avg_time_to_close_issue":4064239.573770492,"avg_time_to_close_pull_request":804728.0163934426,"issues_closed_count":61,"pull_requests_closed_count":61,"pull_request_authors_count":9,"issue_authors_count":13,"avg_comments_per_issue":1.3061224489795917,"avg_comments_per_pull_request":0.7857142857142857,"merged_pull_requests_count":61,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":52,"past_year_pull_requests_count":39,"past_year_avg_time_to_close_issue":2972673.5714285714,"past_year_avg_time_to_close_pull_request":533001.0,"past_year_issues_closed_count":21,"past_year_pull_requests_closed_count":30,"past_year_pull_request_authors_count":9,"past_year_issue_authors_count":11,"past_year_avg_comments_per_issue":0.8653846153846154,"past_year_avg_comments_per_pull_request":0.9487179487179487,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":30,"created_at":"2025-06-16T00:02:49.852Z","updated_at":"2026-04-11T05:01:15.682Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/bioenergy-research-centers%2Fbioenergy.org","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/bioenergy-research-centers%2Fbioenergy.org/issues","issue_labels_count":{"enhancement":18,"bug":13,"help wanted":5,"question":2,"good first issue":2,"invalid":1,"documentation":1},"pull_request_labels_count":{"enhancement":14,"documentation":3,"bug":2},"issue_author_associations_count":{"CONTRIBUTOR":74,"MEMBER":22,"NONE":1,"COLLABORATOR":1},"pull_request_author_associations_count":{"CONTRIBUTOR":61,"MEMBER":8,"NONE":1},"issue_authors":{"ct-parker":21,"caufieldjh":19,"valerie-autumn-skye":17,"throwern":16,"hplahar":12,"dnorman-glbrc":3,"thatRailsGuy":3,"ianderthal":2,"StantonMartin":1,"njhillson":1,"mkulawik":1,"lensor":1,"franflame":1},"pull_request_authors":{"throwern":27,"hplahar":11,"ct-parker":10,"valerie-autumn-skye":7,"caufieldjh":6,"mkulawik":3,"thatRailsGuy":2,"ianderthal":2,"franflame":2},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-13T00:00:15.727Z","repositories_count":14240319,"issues_count":34631349,"pull_requests_count":113115597,"authors_count":11233269,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"enhancement":13,"bug":10,"help wanted":5,"good first issue":2,"question":2,"documentation":1},"past_year_pull_request_labels_count":{"enhancement":10,"bug":1,"documentation":1},"past_year_issue_author_associations_count":{"CONTRIBUTOR":38,"MEMBER":13,"NONE":1},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":32,"MEMBER":6,"NONE":1},"past_year_issue_authors":{"valerie-autumn-skye":17,"caufieldjh":10,"ct-parker":9,"hplahar":4,"thatRailsGuy":3,"throwern":3,"ianderthal":2,"dnorman-glbrc":1,"franflame":1,"lensor":1,"mkulawik":1},"past_year_pull_request_authors":{"throwern":14,"valerie-autumn-skye":7,"caufieldjh":4,"ct-parker":4,"franflame":2,"hplahar":2,"ianderthal":2,"mkulawik":2,"thatRailsGuy":2},"maintainers":[{"login":"caufieldjh","count":25,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/caufieldjh"},{"login":"thatRailsGuy","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/thatRailsGuy"},{"login":"njhillson","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/njhillson"}],"active_maintainers":[{"login":"caufieldjh","count":14,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/caufieldjh"},{"login":"thatRailsGuy","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/thatRailsGuy"}]},"events":{"total":{"DeleteEvent":5,"PullRequestEvent":44,"ForkEvent":2,"IssuesEvent":66,"WatchEvent":3,"IssueCommentEvent":87,"PushEvent":63,"PublicEvent":1,"PullRequestReviewCommentEvent":7,"PullRequestReviewEvent":27,"CreateEvent":25},"last_year":{"DeleteEvent":5,"PullRequestEvent":36,"ForkEvent":1,"IssuesEvent":56,"WatchEvent":2,"IssueCommentEvent":81,"PushEvent":59,"PullRequestReviewEvent":26,"PullRequestReviewCommentEvent":7,"CreateEvent":20}},"keywords":[],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/qc.yaml","sha":null,"kind":"manifest","created_at":"2025-02-28T10:49:51.827Z","updated_at":"2025-02-28T10:49:51.827Z","repository_link":"https://github.com/bioenergy-research-centers/bioenergy.org/blob/main/.github/workflows/qc.yaml","dependencies":[{"id":22062833345,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3.0.2","direct":true,"kind":"composite","optional":false},{"id":22062833397,"package_name":"actions/setup-node","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"api/Dockerfile","sha":null,"kind":"manifest","created_at":"2025-02-28T10:49:52.288Z","updated_at":"2025-02-28T10:49:52.288Z","repository_link":"https://github.com/bioenergy-research-centers/bioenergy.org/blob/main/api/Dockerfile","dependencies":[{"id":22062833457,"package_name":"node","ecosystem":"docker","requirements":"20","direct":true,"kind":"build","optional":false}]},{"ecosystem":"docker","filepath":"client/Dockerfile","sha":null,"kind":"manifest","created_at":"2025-02-28T10:49:52.797Z","updated_at":"2025-02-28T10:49:52.797Z","repository_link":"https://github.com/bioenergy-research-centers/bioenergy.org/blob/main/client/Dockerfile","dependencies":[{"id":22062833557,"package_name":"node","ecosystem":"docker","requirements":"20","direct":true,"kind":"build","optional":false},{"id":22062833558,"package_name":"nginx","ecosystem":"docker","requirements":"stable-alpine","direct":true,"kind":"build","optional":false}]},{"ecosystem":"docker","filepath":"docker-compose.dev.yml","sha":null,"kind":"manifest","created_at":"2025-02-28T10:49:53.241Z","updated_at":"2025-02-28T10:49:53.241Z","repository_link":"https://github.com/bioenergy-research-centers/bioenergy.org/blob/main/docker-compose.dev.yml","dependencies":[]},{"ecosystem":"docker","filepath":"docker-compose.yml","sha":null,"kind":"manifest","created_at":"2025-02-28T10:49:53.332Z","updated_at":"2025-02-28T10:49:53.332Z","repository_link":"https://github.com/bioenergy-research-centers/bioenergy.org/blob/main/docker-compose.yml","dependencies":[]},{"ecosystem":"npm","filepath":"api/package.json","sha":null,"kind":"manifest","created_at":"2025-02-28T10:49:53.496Z","updated_at":"2025-02-28T10:49:53.496Z","repository_link":"https://github.com/bioenergy-research-centers/bioenergy.org/blob/main/api/package.json","dependencies":[{"id":22062833846,"package_name":"sanitize-html","ecosystem":"npm","requirements":"^2.14.0","direct":true,"kind":"runtime","optional":false},{"id":22062833847,"package_name":"sequelize","ecosystem":"npm","requirements":"^6.37.0","direct":true,"kind":"runtime","optional":false},{"id":22062833848,"package_name":"swagger-jsdoc","ecosystem":"npm","requirements":"^6.2.8","direct":true,"kind":"runtime","optional":false},{"id":22062833849,"package_name":"swagger-ui-express","ecosystem":"npm","requirements":"^5.0.0","direct":true,"kind":"runtime","optional":false},{"id":22062833930,"package_name":"sync-fetch","ecosystem":"npm","requirements":"^0.5.2","direct":true,"kind":"runtime","optional":false},{"id":22062833931,"package_name":"@faker-js/faker","ecosystem":"npm","requirements":"^8.4.1","direct":true,"kind":"development","optional":false},{"id":22062833706,"package_name":"@octokit/rest","ecosystem":"npm","requirements":"^21.1.0","direct":true,"kind":"runtime","optional":false},{"id":22062833707,"package_name":"ajv","ecosystem":"npm","requirements":"^8.17.1","direct":true,"kind":"runtime","optional":false},{"id":22062833708,"package_name":"ajv-formats","ecosystem":"npm","requirements":"^3.0.1","direct":true,"kind":"runtime","optional":false},{"id":22062833709,"package_name":"axios","ecosystem":"npm","requirements":"^1.7.7","direct":true,"kind":"runtime","optional":false},{"id":22062833710,"package_name":"body-parser","ecosystem":"npm","requirements":"^1.20.2","direct":true,"kind":"runtime","optional":false},{"id":22062833711,"package_name":"cors","ecosystem":"npm","requirements":"^2.8.5","direct":true,"kind":"runtime","optional":false},{"id":22062833712,"package_name":"dotenv","ecosystem":"npm","requirements":"^16.4.5","direct":true,"kind":"runtime","optional":false},{"id":22062833713,"package_name":"express","ecosystem":"npm","requirements":"^4.18.2","direct":true,"kind":"runtime","optional":false},{"id":22062833714,"package_name":"nodemon","ecosystem":"npm","requirements":"^3.1.7","direct":true,"kind":"runtime","optional":false},{"id":22062833715,"package_name":"pg","ecosystem":"npm","requirements":"^8.11.3","direct":true,"kind":"runtime","optional":false},{"id":22062833716,"package_name":"pg-hstore","ecosystem":"npm","requirements":"^2.3.4","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"npm","filepath":"client/package.json","sha":null,"kind":"manifest","created_at":"2025-02-28T10:49:54.613Z","updated_at":"2025-02-28T10:49:54.613Z","repository_link":"https://github.com/bioenergy-research-centers/bioenergy.org/blob/main/client/package.json","dependencies":[{"id":22062833978,"package_name":"@popperjs/core","ecosystem":"npm","requirements":"^2.11.8","direct":true,"kind":"runtime","optional":false},{"id":22062833979,"package_name":"axios","ecosystem":"npm","requirements":"^1.6.7","direct":true,"kind":"runtime","optional":false},{"id":22062833980,"package_name":"bootstrap","ecosystem":"npm","requirements":"^5.3.2","direct":true,"kind":"runtime","optional":false},{"id":22062834074,"package_name":"bootstrap-icons","ecosystem":"npm","requirements":"^1.11.3","direct":true,"kind":"runtime","optional":false},{"id":22062834075,"package_name":"dotenv","ecosystem":"npm","requirements":"^16.4.5","direct":true,"kind":"runtime","optional":false},{"id":22062834076,"package_name":"jquery","ecosystem":"npm","requirements":"^3.7.1","direct":true,"kind":"runtime","optional":false},{"id":22062834077,"package_name":"pinia","ecosystem":"npm","requirements":"^2.2.4","direct":true,"kind":"runtime","optional":false},{"id":22062834155,"package_name":"pinia-plugin-persistedstate","ecosystem":"npm","requirements":"^4.1.2","direct":true,"kind":"runtime","optional":false},{"id":22062834197,"package_name":"vue","ecosystem":"npm","requirements":"^3.4.15","direct":true,"kind":"runtime","optional":false},{"id":22062834245,"package_name":"vue-router","ecosystem":"npm","requirements":"^4.2.5","direct":true,"kind":"runtime","optional":false},{"id":22062834299,"package_name":"@rushstack/eslint-patch","ecosystem":"npm","requirements":"^1.3.3","direct":true,"kind":"development","optional":false},{"id":22062834428,"package_name":"@vitejs/plugin-vue","ecosystem":"npm","requirements":"^5.0.3","direct":true,"kind":"development","optional":false},{"id":22062834429,"package_name":"@vue/eslint-config-prettier","ecosystem":"npm","requirements":"^8.0.0","direct":true,"kind":"development","optional":false},{"id":22062834447,"package_name":"@vue/test-utils","ecosystem":"npm","requirements":"^2.4.4","direct":true,"kind":"development","optional":false},{"id":22062834448,"package_name":"cypress","ecosystem":"npm","requirements":"^13.6.3","direct":true,"kind":"development","optional":false},{"id":22062834449,"package_name":"eslint","ecosystem":"npm","requirements":"^8.49.0","direct":true,"kind":"development","optional":false},{"id":22062834450,"package_name":"eslint-plugin-cypress","ecosystem":"npm","requirements":"^2.15.1","direct":true,"kind":"development","optional":false},{"id":22062834476,"package_name":"eslint-plugin-vue","ecosystem":"npm","requirements":"^9.17.0","direct":true,"kind":"development","optional":false},{"id":22062834477,"package_name":"jsdom","ecosystem":"npm","requirements":"^24.0.0","direct":true,"kind":"development","optional":false},{"id":22062834478,"package_name":"prettier","ecosystem":"npm","requirements":"^3.0.3","direct":true,"kind":"development","optional":false},{"id":22062834479,"package_name":"start-server-and-test","ecosystem":"npm","requirements":"^2.0.3","direct":true,"kind":"development","optional":false},{"id":22062834480,"package_name":"vite","ecosystem":"npm","requirements":"^5.0.11","direct":true,"kind":"development","optional":false},{"id":22062834487,"package_name":"vitest","ecosystem":"npm","requirements":"^1.2.2","direct":true,"kind":"development","optional":false}]},{"ecosystem":"npm","filepath":"package.json","sha":null,"kind":"manifest","created_at":"2025-02-28T10:50:01.631Z","updated_at":"2025-02-28T10:50:01.631Z","repository_link":"https://github.com/bioenergy-research-centers/bioenergy.org/blob/main/package.json","dependencies":[{"id":22062834522,"package_name":"mvp","ecosystem":"npm","requirements":"file:api","direct":true,"kind":"runtime","optional":false}]}],"score":5.730099782973575,"created_at":"2025-06-16T00:02:00.704Z","updated_at":"2026-04-20T09:02:46.899Z","avatar_url":"https://github.com/bioenergy-research-centers.png","language":"JavaScript","category":"Renewable Energy","sub_category":"Bioenergy","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# [bioenergy.org](https://bioenergy.org/)\n\nA site dedicated to creating FAIR datasets to share across bioenergy research centers (BRCs) and to the global research community.\n\n## Resources\n\n- [Github group](https://github.com/bioenergy-research-centers)\n- [Slack workspace](https://join.slack.com/t/cross-brc/shared_invite/zt-3axq9jgvp-GjNN9RlDPwLSDVXC9fZUkw)\n- [Mailing list - Developers (google group)](dev@bioenergy.org)\n- [Contribution Guide](CONTRIBUTING.md)\n- [Contributors (have emailed license agreement to Nathan Hillson)](CONTRIBUTING.txt)\n\n## Points of contact at each BRC\n\n- JBEI (lead) = Nathan Hillson (njhillson@lbl.gov)\n- GLBRC = Dirk Norman (dirk.norman@wisc.edu)\n- CABBI = Leslie Stoecker (lensor@illinois.edu)\n- CBI = Stanton Martin (martins@ornl.gov)\n\n## Tech contacts\n\n- Hector Plahar\n- Nick Thrower\n- Clint Cecil\n\n## MVP Product Definition\n\nFrom discussion on 01/30/2024:\n\n- In scope\n  - Build a basic website on a server running at JBEI using a tech stack that is \"modern\" but also one one that is new to all of the technical personnel working on it.\n  - Use agreed upon processes, defined in the contribution guide.\n  - Include all tech components needed to be a database-driven site.\n  - Secrets management for database connectivity on the server.\n- Out of scope\n  - Automation (CI/CD pipelines).\n  - Authentication and authorization within the application.\n  - Admin interface.\n  - Data import capabilities.\n  - Access to the server to deploy outside of JBEI users.\n- Tech stack\n  - VM with nginx and Docker installed.\n  - Postgres database.\n  - Vue.js, node.js, express as language stack.\n  - Container-first approach for all components.\n\n## Development\n\nPrerequisites:\n\n- Docker\n- Docker Compose\n- Node.js (version in .nvmrc), recommend using a version manager like nvm or asdf\n- Postman is useful for testing the api.\n\nThe application is a monorepo with two main components. The client is a Vue.js application and the API is an Express application.\n\n### Running a postgres container\n\nThe following command will run a postgres container with the password `mysecretpassword` and expose the database on port 6432.\n\n`docker run --name postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 6432:5432 postgres`\n\n### Running the application\n\n- Copy the `.env.sample` file to `.env` and fill in the environment variables. These can also be set as environment variables on your system.\n- Docker Compose:\n  - To run the application in production mode, run `docker-compose up` in the root directory of the project. This will start the nginx server for the client, the express server for the API, and the Postgres database.\n  - To run the application in development mode, run `docker compose -f docker-compose.dev.yml up --build --watch`. This will start the client and API in development mode with hot reloading.\n  - You can run `docker-compose down` to stop the application and destroy the containers and volumes.\n  - Running `docker-compose up --build` will rebuild the containers and restart the application.\n\n### Import BRC Data Feeds\n\n- run `docker compose run api node scripts/import_datafeeds.js` from the root folder of the project.\n- To redirect validation errors to a file, run `docker compose run api node scripts/import_datafeeds.js 2\u003e\u00261 \u003e import_datafeeds.txt`\n\n### Resources Used to Build This Application\n\n- \u003chttps://expressjs.com/\u003e\n- \u003chttps://sequelize.org/\u003e\n  - \u003chttps://sequelize.org/docs/v6/core-concepts/model-querying-basics/#operators\u003e\n- \u003chttps://vuejs.org/\u003e\n  - \u003chttps://v2.vuejs.org/v2/cookbook\u003e\n\n## BRC Data End Points\n\n- CABBI: \u003chttps://cabbitools.igb.illinois.edu/brc/cabbi.json\u003e\n- CBI: \u003chttps://fair.ornl.gov/CBI/cbi.json\u003e\n- GLBRC: \u003chttps://fair-data.glbrc.org/glbrc.json\u003e\n- JBEI: \u003chttps://bioenergy.org/JBEI/jbei.json\u003e\n\n## Validating Data\n\nValidating data against the BRC schema can be done with the LinkML framework.\n- LinkML has a docker image available here: https://hub.docker.com/r/linkml/linkml\n\nNote for Windows users: To run the validator script on Windows:\n- First install WSL: wsl --install\n- Then run the Ubuntu terminal: wsl -d Ubuntu\n- Then follow the Unix instructions below.\n- Note that WSL does not (by default) route traffic through VPNs. If you encounter connection timeouts when running this script under WSL,\n  either disconnect from your VPN or follow these instructions: https://learn.microsoft.com/en-us/windows/wsl/troubleshooting#wsl-has-no-network-connectivity-once-connected-to-a-vpn\n\nThis process, including installing LinkML, can be done with the validation script in this repo:\n\n```bash\n./validate.sh\n```\n\nAlternatively, the process may be done manually:\n\n- Install the [LinkML Python package as detailed here](https://linkml.io/linkml/intro/install.html).\n- Retrieve a local copy of the data collection in JSON format. For example, run `wget https://bioenergy.org/JBEI/jbei.json`\n- Retrieve the most recent version of the schema in YAML format. The schema is here: \u003chttps://github.com/bioenergy-research-centers/brc-schema/blob/main/src/brc_schema/schema/brc_schema.yaml\u003e\n- Run the following `linkml` command: `linkml validate --schema brc_schema.yaml -C Dataset \u003cdatafile\u003e`, replacing `\u003cdatafile\u003e` with the path to your data in JSON.\n  - For example, a fully valid `jbei.json` will yield the following result:\n    ```\n    $ linkml validate --schema brc_schema.yaml -C Dataset jbei.json\n    No issues found\n    ```\n  - Places where the data does not comply with the schema will be indicated like below:\n    ```\n    $ linkml validate --schema src/brc_schema/schema/brc_schema.yaml -C Dataset jbei-bad.json \n    [ERROR] [jbei-bad.json/0] Additional properties are not allowed ('DATE' was unexpected) in /\n    [ERROR] [jbei-bad.json/0] 'date' is a required property in /\n    [ERROR] [jbei-bad.json/1] 'yes' is not of type 'boolean', 'null' in /creator/0/primaryContact\n    [ERROR] [jbei-bad.json/8] Additional properties are not allowed ('BRC' was unexpected) in /\n    [ERROR] [jbei-bad.json/8] 'brc' is a required property in /\n    ```\n\n## Copyright Notice\nInterBRC Data Products Portal Copyright (c) 2025, The Regents of the University of California, through Lawrence Berkeley National Laboratory, and UT-Battelle LLC,  through Oak Ridge National Laboratory (both subject to receipt of any required approvals from the U.S. Dept. of Energy), University of Wisconsin - Madison, University of Illinois Urbana - Champaign, and Michigan State University. All rights reserved.\n\nIf you have questions about your rights to use or distribute this software,\nplease contact Berkeley Lab's Intellectual Property Office at\nIPO@lbl.gov.\n\nNOTICE.  This Software was developed under funding from the U.S. Department\nof Energy and the U.S. Government consequently retains certain rights.  As\nsuch, the U.S. Government has been granted for itself and others acting on\nits behalf a paid-up, nonexclusive, irrevocable, worldwide license in the\nSoftware to reproduce, distribute copies to the public, prepare derivative\nworks, and perform publicly and display publicly, and to permit others to do so.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["ontology"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/318695","html_url":"https://ost.ecosyste.ms/projects/318695"}