{"id":19740124,"url":"https://github.com/nceas/vegbank2","last_synced_at":"2026-04-02T22:03:52.431Z","repository":{"id":148058918,"uuid":"42611543","full_name":"NCEAS/vegbank2","owner":"NCEAS","description":"Design and development for VegBank","archived":false,"fork":false,"pushed_at":"2026-03-31T23:42:31.000Z","size":7571,"stargazers_count":3,"open_issues_count":38,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-04-01T01:28:53.328Z","etag":null,"topics":["vegbank"],"latest_commit_sha":null,"homepage":"http://vegbank.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NCEAS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"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":"2015-09-16T20:27:19.000Z","updated_at":"2026-03-27T23:47:41.000Z","dependencies_parsed_at":"2026-03-07T01:07:51.204Z","dependency_job_id":null,"html_url":"https://github.com/NCEAS/vegbank2","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/NCEAS/vegbank2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NCEAS%2Fvegbank2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NCEAS%2Fvegbank2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NCEAS%2Fvegbank2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NCEAS%2Fvegbank2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NCEAS","download_url":"https://codeload.github.com/NCEAS/vegbank2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NCEAS%2Fvegbank2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31317831,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T21:35:00.834Z","status":"ssl_error","status_checked_at":"2026-04-02T21:34:59.806Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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"}},"keywords":["vegbank"],"created_at":"2024-11-12T01:19:36.888Z","updated_at":"2026-04-02T22:03:52.419Z","avatar_url":"https://github.com/NCEAS.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![VegBank](https://raw.githubusercontent.com/NCEAS/vegbank2/refs/heads/main/assets/vegbank-favicon.svg)\n\n\n# VegBank\n\n- **License**: [Apache 2](http://opensource.org/licenses/Apache-2.0)\n- [Package source code on GitHub](https://github.com/NCEAS/vegbank2)\n- [**Submit Bugs and feature requests**](https://github.com/NCEAS/vegbank2/issues)\n- Contact us: help@vegbank.org\n\n## Citation and Overview\n\n\u003e *Jim Regetz, Robert Shelton, Darian Gill, Matthew B. Jones, Dou Mok, Matthew Brooke, Rushiraj Nenuji, Jeanette Clark, Maggie Klope, Michael T. Lee, Robert K. Peet*. 2026. **VegBank: the open-access vegetation plot database and API of the Ecological Society of America’s Panel on Vegetation Classification**. Version 2.1.1. VegBank. [doi:10.82902/J1WC7G](https://doi.org/10.82902/J1WC7G).\n\nThe [VegBank](http://vegbank.org) data system provides a community managed data portal for\nvegetation plot data, with special emphasis on supporting the U.S. National Vegetation\nClassification (USNVC) and validating standard USNVC vegetation types. VegBank is a product of the\nEcological Society of America (ESA) [Panel on Vegetation Classification](https://esa.org/vegpanel/)\nand is maintained and operated by the [National Center for Ecological Analysis and\nSynthesis](https://www.nceas.ucsb.edu) (NCEAS).\n\nVegBank provides a common storage system and services for accessing:\n\n- Plot data\n- Plant taxonomy data\n- Community data\n\nVegBank is an open source, community project. We [welcome contributions](./CONTRIBUTING.md) in many\nforms, including code, graphics, documentation, bug reports, testing, etc. Use the [VegBank\ndiscussions](https://github.com/NCEAS/vegbank2/discussions) to discuss these contributions with us.\n\n## Redesign\n\nVegBank was originally [designed and implemented](https://github.com/NCEAS/vegbank) in the early\n2000s using server technology of the time, particularly as a Java servlet providing access to data\nthat is stored in a backend PostgreSQL database, and using Apache Struts to build a web-based\ninterface for querying and viewing the data. While the system has served well, most of these\ntechnology components have become obsolete, and need to be replaced.\n\nAs part of the [VegBank redesign effort](vegbank2-plans.md), the original monolithic system has been\nrefactored into multiple standalone components:\n\n- [vegbank-service](.): the VegBank data storage system and REST API (this repository)\n- [vegbankr](https://github.com/NCEAS/vegbankr): the VegBank R package that accesses the service\n- [vegbank-web](https://github.com/NCEAS/vegbank-web): the VegBank web application that accesses the service\n\n## VegBank REST API\n\nThe VegBank REST API is the primary interface for interacting with the data system. While this\nrepository contains the service's source code, most users will interact with the production instance\nhosted and maintained by NCEAS. The API provides a programmatic way to search and retrieve\nvegetation plot records, plant concepts, community types, and other supporting information, as well\nas submit and upload new data to the archive.\n\n- **Comprehensive API documentation** (WIP): https://nceas.github.io/vegbank2/api/\n- **API Authorization Guide**: [api-authorization.md](./helm/docs/api-authorization.md) – Detailed authentication, token usage, and scope system\n- **Production API**: https://api.vegbank.org\n- **Development API**: https://api-dev.vegbank.org\n\n## Development build\n\nThis is a python package managed with [`uv`](https://docs.astral.sh/uv/), a fast Python package and\nenvironment manager.\n\nTo run tests, navigate to the root directory and run `uv run pytest`.\n\nThe GitHub repository has also been configured to run a [continuous integration\nbuild](https://github.com/NCEAS/vegbank2/actions) which executes `uv run pytest` in the\nuv-managed virtual environment. To test the action run locally, you can install\nthe `act` commandline client (e.g., `brew install act`) and then execute the actions from the local\ncommandline. This depends on a local docker instance being configured, and the first run will take\nlonger as the initial docker images are pulled. Thereafter, checking the action build before pushing\ncommits can be run, for example, for the Mac with:\n\n- `act --container-architecture linux/amd64`\n\n### Installing `vegbank` locally\n\nWe are using `uv` as our python environment and dependency manager. To get started locally:\n\n#### One-time setup\n\n1. Provision a local database - see [database/INSTALL.md](./database/INSTALL.md) for instructions on setting up a local postgres instance with the vegbank database and user.\n2. Set the following environment variables in the shell where you will start the application. You can do this manually, or in your `.bashrc` or `.zshrc` file, etc:\n   - `VB_DB_NAME`: database name (typically `vegbank`)\n   - `VB_DB_USER`: the user that owns the db (typically also `vegbank`)\n   - `VB_DB_PORT`: your psql port (typically `5432`)\n   - `VB_DB_PASS`: password for your db user\n   - `VB_ACCESS_MODE`: access mode. Set to `open` (or \"read_only\", if you don't need to do uploads)\n   (`VB_DB_HOST` is not needed for local development)\n3. Install `uv` (if not already installed)\n\n   ```shell\n   $ python -m pip install uv --root-user-action ignore\n   ```\n\n#### Update and Run the Application\n\n```shell\n# Navigate to your project root\n$ cd /path/to/vegbank2\n\n# Create a project-local virtual environment\n$ uv venv .venv\n\n# Activate the virtual environment\n$ source .venv/bin/activate\n\n# Install project dependencies\n$ uv sync --active\n\n# Run the application\nuv run flask --app src/vegbank/app.py run\n```\n\n### Adding project dependencies\n\nTo add a dependency to this project, you will need to update `pyproject.toml` with the library that you are trying to add, as well as the minimum version required.\n- Note: An easy way to add dependencies to pyproject.toml is to add them with `uv` or other package management tools using a command like `uv add some_package`.\n\n- If the library is required at runtime, add it under `dependencies`\n- If the library is used only for development or testing, add it under `dependency-groups.dev`\n\n```py\n# pyproject.toml\ndependencies = [\n    \"psycopg\u003e=3.3.2\",\n    \"flask\u003e=3.1.2\",\n    \"pandas\u003e=3.0.0\",\n    \"pyarrow\u003e=23.0.0\",\n    \"numpy\u003e=2.4.2\",\n    \"DEPENDENCYNAME\u003e=#.#.#\", # Add runtime dependencies here\n]\n\n[dependency-groups]\ndev = [\n    # Add development dependencies here\n    \"pytest\u003e=8.3.3\",\n    \"pylint\u003e=3.2.7\",\n    \"black\u003e=24.8.0\",\n]\n```\n\n### Building and Publishing the Docker Image\n\nThe `vegbank` service is published as a Docker image, for deployment via Helm on Kubernetes (see below). See the [Docker README](./docker/README.md) for instructions on building and publishing the image.\n\n### Installing `vegbank` on a Kubernetes Cluster, Using Helm\n\nThe vegbank Helm chart can be used to deploy the `vegbank` service on a Kubernetes cluster. See the [Helm README](./helm/README.md) for instructions. The deployment can use either:\n\n- the [local chart included](./helm) in the `vegbank` source code (useful for development and testing), or\n- a versioned, published chart from the [GitHub Container Registry](https://github.com/NCEAS/vegbank2/pkgs/container/charts%2Fvegbank). Details for packaging and publishing new charts can be found [in the Helm README](./helm/README.md#packaging-and-publishing-the-helm-chart).\n\n## Release Process\n\nSee the [Release Checklist](./release-checklist.md) and the [Contributing Guide](./CONTRIBUTING.md#-release-process) for details on the release process\n\n## Current Contributors\n\n- Jim Regetz (regetz@nceas.ucsb.edu): [ORCID: 0009-0008-2666-6229](https://orcid.org/0009-0008-2666-6229)\n- Robert Shelton (rshelton@nceas.ucsb.edu): [ORCID: 0009-0008-7478-8992](https://orcid.org/0009-0008-7478-8992)\n- Darian Gill (dgill@nceas.ucsb.edu): [ORCID: 0009-0005-7848-2163](https://orcid.org/0009-0005-7848-2163)\n- Matthew B. Jones (jones@nceas.ucsb.edu): [ORCID: 0000-0003-0077-4738](https://orcid.org/0000-0003-0077-4738)\n- Dou Mok (mok@nceas.ucsb.edu): [ORCID: 0000-0002-6076-8092](https://orcid.org/0000-0002-6076-8092)\n- Matthew Brooke (brooke@nceas.ucsb.edu): [ORCID: 0000-0002-1472-913X](https://orcid.org/0000-0002-1472-913X)\n- Rushiraj Nenuji (nenuji@nceas.ucsb.edu): [ORCID: 0000-0003-4678-5213](https://orcid.org/0000-0003-4678-5213)\n- Jeanette Clark (jclark@nceas.ucsb.edu): [ORCID: 0000-0003-4703-1974](https://orcid.org/0000-0003-4703-1974)\n- Maggie Klope (mmklope@nceas.ucsb.edu): [ORCID: 0000-0003-3926-7039](https://orcid.org/0000-0003-3926-7039)\n- Michael T. Lee (michael.lee@unc.edu): [ORCID: 0009-0003-3874-8604](https://orcid.org/0009-0003-3874-8604)\n- Robert K. Peet (peet@unc.edu): [ORCID: 0000-0003-2823-6587](https://orcid.org/0000-0003-2823-6587)\n\n\n## Previous Contributors\n\n- Michael D. Jennings\n- Dennis Grossman\n- Marilyn D. Walker\n- Mark Anderson\n- Gabriel Farrell\n- John Harris\n- Chad Berkley\n\n## License\n```\nCopyright [2026] [Regents of the University of California]\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttps://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n\n## Acknowledgments\n\nWork on this package was supported by:\n\n- California Department of Fish and Wildlife\n- DataONE Network\n- National Center for Ecological Analysis and Synthesis, a Center funded by the University of California, Santa Barbara, and the State of California.\n- National Science Foundation\n\n[![nceas_footer](https://www.nceas.ucsb.edu/sites/default/files/2020-03/NCEAS-full%20logo-4C.png)](https://www.nceas.ucsb.edu)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnceas%2Fvegbank2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnceas%2Fvegbank2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnceas%2Fvegbank2/lists"}