{"id":193869,"name":"Plastics Prototype","description":"This tool explores different policy interventions both regionally and globally to help countries exploring ways to reduce the impact of plastic.","url":"https://github.com/schmidtdse/plastics-prototype","last_synced_at":"2026-06-13T05:00:35.927Z","repository":{"id":200879859,"uuid":"657345553","full_name":"SchmidtDSE/plastics-prototype","owner":"SchmidtDSE","description":"Decision support tool for plastics policy.","archived":false,"fork":false,"pushed_at":"2025-08-05T17:10:50.000Z","size":5943,"stargazers_count":9,"open_issues_count":3,"forks_count":1,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-06-09T03:04:01.890Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/SchmidtDSE.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":"support/README.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-06-22T21:32:49.000Z","updated_at":"2026-05-08T12:29:24.000Z","dependencies_parsed_at":"2023-10-20T07:05:10.255Z","dependency_job_id":"e5421d33-cd69-4ddb-b3ac-b0c6ed324545","html_url":"https://github.com/SchmidtDSE/plastics-prototype","commit_stats":{"total_commits":1177,"total_committers":5,"mean_commits":235.4,"dds":0.3432455395072217,"last_synced_commit":"f03fdf1131d3e213e1beb76b62228e1c79fefddf"},"previous_names":["schmidtdse/plastics-prototype"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SchmidtDSE/plastics-prototype","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SchmidtDSE%2Fplastics-prototype","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SchmidtDSE%2Fplastics-prototype/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SchmidtDSE%2Fplastics-prototype/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SchmidtDSE%2Fplastics-prototype/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SchmidtDSE","download_url":"https://codeload.github.com/SchmidtDSE/plastics-prototype/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SchmidtDSE%2Fplastics-prototype/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34272603,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"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":"SchmidtDSE","name":"DSE","uuid":"124641794","kind":"organization","description":"The Eric and Wendy Schmidt Center for Data Science \u0026 Environment at Berkeley","email":"dse@berkeley.edu","website":"https://dse.berkeley.edu/","location":"United States of America","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/124641794?v=4","repositories_count":7,"last_synced_at":"2023-08-07T03:56:15.442Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/SchmidtDSE","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-02-22T23:22:14.300Z","updated_at":"2023-08-07T03:56:15.553Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SchmidtDSE","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SchmidtDSE/repositories"},"packages":[],"commits":{"id":1549364,"full_name":"schmidtdse/plastics-prototype","default_branch":"main","total_commits":1189,"total_committers":3,"total_bot_commits":1,"total_bot_committers":1,"mean_commits":396.3333333333333,"dds":0.001682085786375076,"past_year_total_commits":5,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":5.0,"past_year_dds":0.0,"last_synced_at":"2026-06-11T04:12:54.348Z","last_synced_commit":"3860e09c5f992ff943cdd23e1655a4e4544ac83b","created_at":"2024-06-05T00:07:21.538Z","updated_at":"2026-06-11T04:12:41.161Z","committers":[{"name":"A Samuel Pottinger","email":"sam@gleap.org","login":"sampottinger","count":1187},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":1},{"name":"Magali de Bruyn","email":"debruyn@berkeley.edu","login":null,"count":1}],"past_year_committers":[{"name":"A Samuel Pottinger","email":"sam.pottinger@berkeley.edu","login":"sampottinger","count":5}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/schmidtdse%2Fplastics-prototype/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-13T00:00:12.063Z","repositories_count":6257917,"commits_count":882318665,"contributors_count":35075763,"owners_count":1165806,"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":"schmidtdse/plastics-prototype","html_url":"https://github.com/schmidtdse/plastics-prototype","last_synced_at":"2026-05-17T16:00:57.515Z","status":"error","issues_count":5,"pull_requests_count":325,"avg_time_to_close_issue":843.0,"avg_time_to_close_pull_request":12717.063897763577,"issues_closed_count":2,"pull_requests_closed_count":313,"pull_request_authors_count":2,"issue_authors_count":2,"avg_comments_per_issue":0.0,"avg_comments_per_pull_request":0.015384615384615385,"merged_pull_requests_count":302,"bot_issues_count":0,"bot_pull_requests_count":2,"past_year_issues_count":1,"past_year_pull_requests_count":10,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":747.2,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":10,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.1,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":10,"created_at":"2024-06-05T00:07:30.734Z","updated_at":"2026-05-17T16:00:57.516Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/schmidtdse%2Fplastics-prototype","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/schmidtdse%2Fplastics-prototype/issues","issue_labels_count":{"enhancement":1},"pull_request_labels_count":{"dependencies":3,"ruby":1},"issue_author_associations_count":{"CONTRIBUTOR":4,"NONE":1},"pull_request_author_associations_count":{"CONTRIBUTOR":324,"NONE":1},"issue_authors":{"sampottinger":4,"NielsRogge":1},"pull_request_authors":{"sampottinger":322,"dependabot[bot]":3},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-05T00:00:10.689Z","repositories_count":14754695,"issues_count":33336450,"pull_requests_count":109989561,"authors_count":11292307,"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":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"NONE":1},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":4},"past_year_issue_authors":{"NielsRogge":1},"past_year_pull_request_authors":{"sampottinger":4},"maintainers":[],"active_maintainers":[]},"events":{"total":{"PullRequestEvent":18,"WatchEvent":1,"IssueCommentEvent":1,"PushEvent":16,"CreateEvent":5},"last_year":{"PullRequestEvent":1,"PushEvent":2}},"keywords":[],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/build.yaml","sha":null,"kind":"manifest","created_at":"2023-10-20T07:05:03.554Z","updated_at":"2023-10-20T07:05:03.554Z","repository_link":"https://github.com/SchmidtDSE/plastics-prototype/blob/main/.github/workflows/build.yaml","dependencies":[{"id":14262707254,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":14262707258,"package_name":"actions/setup-node","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":14262707259,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":14262707260,"package_name":"actions/setup-java","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":14262707261,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":14262707262,"package_name":"actions/download-artifact","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":14262707263,"package_name":"Creepios/sftp-action","ecosystem":"actions","requirements":"v1.0.3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/build_trigger.yaml","sha":null,"kind":"manifest","created_at":"2023-10-20T07:05:04.897Z","updated_at":"2023-10-20T07:05:04.897Z","repository_link":"https://github.com/SchmidtDSE/plastics-prototype/blob/main/.github/workflows/build_trigger.yaml","dependencies":[{"id":14262707264,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":14262707265,"package_name":"actions/setup-node","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":14262707266,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":14262707267,"package_name":"actions/setup-java","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":14262707268,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":14262707269,"package_name":"actions/download-artifact","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":14262707270,"package_name":"Creepios/sftp-action","ecosystem":"actions","requirements":"v1.0.3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"Dockerfile","sha":null,"kind":"manifest","created_at":"2023-10-20T07:05:04.983Z","updated_at":"2023-10-20T07:05:04.983Z","repository_link":"https://github.com/SchmidtDSE/plastics-prototype/blob/main/Dockerfile","dependencies":[{"id":14262707271,"package_name":"ubuntu","ecosystem":"docker","requirements":"jammy-20230916","direct":true,"kind":"build","optional":false}]},{"ecosystem":"docker","filepath":"docker-compose.yml","sha":null,"kind":"manifest","created_at":"2023-10-20T07:05:05.042Z","updated_at":"2023-10-20T07:05:05.042Z","repository_link":"https://github.com/SchmidtDSE/plastics-prototype/blob/main/docker-compose.yml","dependencies":[{"id":14262707272,"package_name":"globalplasticstool","ecosystem":"docker","requirements":"latest","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"npm","filepath":"js_standalone/package.json","sha":null,"kind":"manifest","created_at":"2023-10-20T07:05:05.776Z","updated_at":"2023-10-20T07:05:05.776Z","repository_link":"https://github.com/SchmidtDSE/plastics-prototype/blob/main/js_standalone/package.json","dependencies":[{"id":14262707273,"package_name":"antlr4","ecosystem":"npm","requirements":"^4.13.0","direct":true,"kind":"runtime","optional":false},{"id":14262707275,"package_name":"handlebars","ecosystem":"npm","requirements":"^4.7.8","direct":true,"kind":"runtime","optional":false},{"id":14262707276,"package_name":"package.json","ecosystem":"npm","requirements":"^0.0.0","direct":true,"kind":"runtime","optional":false},{"id":14262707277,"package_name":"papaparse","ecosystem":"npm","requirements":"^5.4.1","direct":true,"kind":"runtime","optional":false},{"id":14262707278,"package_name":"@babel/core","ecosystem":"npm","requirements":"^7.16.5","direct":true,"kind":"development","optional":false},{"id":14262707279,"package_name":"@babel/plugin-proposal-class-properties","ecosystem":"npm","requirements":"^7.16.5","direct":true,"kind":"development","optional":false},{"id":14262707280,"package_name":"@babel/preset-env","ecosystem":"npm","requirements":"^7.16.5","direct":true,"kind":"development","optional":false},{"id":14262707284,"package_name":"babel-loader","ecosystem":"npm","requirements":"^9.1.2","direct":true,"kind":"development","optional":false},{"id":14262707285,"package_name":"eslint","ecosystem":"npm","requirements":"^8.44.0","direct":true,"kind":"development","optional":false},{"id":14262707286,"package_name":"eslint-config-google","ecosystem":"npm","requirements":"^0.14.0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"npm","filepath":"package.json","sha":null,"kind":"manifest","created_at":"2023-10-20T07:05:08.174Z","updated_at":"2023-10-20T07:05:08.174Z","repository_link":"https://github.com/SchmidtDSE/plastics-prototype/blob/main/package.json","dependencies":[{"id":14262707287,"package_name":"antlr4","ecosystem":"npm","requirements":"^4.13.0","direct":true,"kind":"runtime","optional":false},{"id":14262707288,"package_name":"grunt","ecosystem":"npm","requirements":"^1.5.2","direct":true,"kind":"runtime","optional":false},{"id":14262707289,"package_name":"grunt-contrib-connect","ecosystem":"npm","requirements":"^3.0.0","direct":true,"kind":"runtime","optional":false},{"id":14262707294,"package_name":"grunt-contrib-qunit","ecosystem":"npm","requirements":"^6.1.0","direct":true,"kind":"runtime","optional":false},{"id":14262707301,"package_name":"package.json","ecosystem":"npm","requirements":"^0.0.0","direct":true,"kind":"runtime","optional":false},{"id":14262707302,"package_name":"@babel/core","ecosystem":"npm","requirements":"^7.16.5","direct":true,"kind":"development","optional":false},{"id":14262707303,"package_name":"@babel/plugin-proposal-class-properties","ecosystem":"npm","requirements":"^7.16.5","direct":true,"kind":"development","optional":false},{"id":14262707304,"package_name":"@babel/preset-env","ecosystem":"npm","requirements":"^7.16.5","direct":true,"kind":"development","optional":false},{"id":14262707305,"package_name":"babel-loader","ecosystem":"npm","requirements":"^9.1.2","direct":true,"kind":"development","optional":false},{"id":14262707306,"package_name":"eslint","ecosystem":"npm","requirements":"^8.44.0","direct":true,"kind":"development","optional":false},{"id":14262707307,"package_name":"eslint-config-google","ecosystem":"npm","requirements":"^0.14.0","direct":true,"kind":"development","optional":false},{"id":14262707308,"package_name":"webpack","ecosystem":"npm","requirements":"^5.65.0","direct":true,"kind":"development","optional":false},{"id":14262707309,"package_name":"webpack-cli","ecosystem":"npm","requirements":"^4.9.1","direct":true,"kind":"development","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2023-10-20T07:05:09.913Z","updated_at":"2023-10-20T07:05:09.913Z","repository_link":"https://github.com/SchmidtDSE/plastics-prototype/blob/main/requirements.txt","dependencies":[{"id":14262707310,"package_name":"matplotlib","ecosystem":"pypi","requirements":"==3.8.0","direct":true,"kind":"runtime","optional":false},{"id":14262707311,"package_name":"pandas","ecosystem":"pypi","requirements":"==2.1.1","direct":true,"kind":"runtime","optional":false}]}],"score":3.58351893845611,"created_at":"2024-06-05T00:07:19.827Z","updated_at":"2026-06-13T05:00:35.929Z","avatar_url":"https://github.com/SchmidtDSE.png","language":"JavaScript","category":"Industrial Ecology","sub_category":"Circular Economy and Waste","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"Plastics Prototype\n===============================================================================\nPrototype for the plastics decision support tool with transparent intervention code / authoring. The tool is primarily available at [https://global-plastics-tool.org/](https://global-plastics-tool.org/). This tool is in pre-release (like preprint), feedback welcome!\n\n\u003cbr\u003e\n\nRelated\n--------------------------------------------------------------------------------\nSee also [source code for \"main\" pipeline](https://github.com/SchmidtDSE/plastics-pipeline) and [source code for the GHG pipeline](https://github.com/SchmidtDSE/plastics-ghg-pipeline). Further documentation for this effort can be found in our [supplemental scripts](https://github.com/SchmidtDSE/plastics-supplemental-scripts) and [documentation](https://github.com/SchmidtDSE/plastics-interventions-doc) repositories. This final repository produces the following documentation chapters:\n\n - [Machine learning base model for business as usual](https://global-plastics-tool.org/pdf/ml.pdf)\n - [Sectorizing secondary material](https://global-plastics-tool.org/pdf/sectorizing_secondary_material.pdf)\n - [Polymer-level estimation and GHG calculations](https://global-plastics-tool.org/pdf/polymers_and_ghg.pdf)\n - [Policy engine overview](https://global-plastics-tool.org/pdf/engine.pdf)\n - [Additives](https://global-plastics-tool.org/pdf/additives.pdf)\n - [Consumption tax](https://global-plastics-tool.org/pdf/consumption_tax.pdf)\n - [Incineration investment](https://global-plastics-tool.org/pdf/incineration_investment.pdf)\n - [Maximum mismanaged rate](https://global-plastics-tool.org/pdf/max_mismanaged_rate.pdf)\n - [Minimum recycled content](https://global-plastics-tool.org/pdf/min_recycled_content.pdf)\n - [Minimum recycling (collection) rate](https://global-plastics-tool.org/pdf/min_recycling_rate.pdf)\n - [Minimum reuse rate](https://global-plastics-tool.org/pdf/min_reuse_rate.pdf)\n - [Recycling investment](https://global-plastics-tool.org/pdf/recycling_investment.pdf)\n - [Reduced packaging](https://global-plastics-tool.org/pdf/reduce_packaging.pdf)\n - [Virgin plastic production cap](https://global-plastics-tool.org/pdf/virgin_plastic_cap.pdf)\n - [Waste management investment](https://global-plastics-tool.org/pdf/waste_management_investment.pdf)\n - [Waste trade](https://global-plastics-tool.org/pdf/waste_trade.pdf)\n\n\u003cbr\u003e\n\nPurpose\n--------------------------------------------------------------------------------\nThis tool allows users to explore potential future plastic outcomes including waste and consumption under different policy scenarios. It does this primarily through an [interactive browser-based tool](https://global-plastics-tool.org/) but also offers some [static visualizations](https://github.com/SchmidtDSE/plastics-prototype/tree/main/image_gen) and the ability to run these policy scenarios through Node [outside the browser](https://github.com/SchmidtDSE/plastics-prototype/tree/main/js_standalone). Altogther, this tool provides new perspective to policy makers and other stakeholders on how to address global plastic waste, hoping to help inform efforts such as [UN INC on Plastic Pollution](https://www.unep.org/inc-plastic-pollution).\n\n\u003cbr\u003e\n\nUsage\n--------------------------------------------------------------------------------\nThere are multiple ways to interact with the tool. Note that many of these require `pt/index.json` rendered via `support/render_index.py`.\n\n### In-browser\nThe primary way to interact with the tool is through the browser. See https://global-plastics-tool.org/ for the publicly available hosted version. To host it yourself or run it on your own machine, see the instructions below.\n\n### Command line\nThe policy simulation engine can also run externally to the browswer through Node. See [js_standlaone](https://github.com/SchmidtDSE/plastics-prototype/tree/main/js_standalone) for more details.\n\n### Writing new interventions\nSee the [pt subdirectory](https://github.com/SchmidtDSE/plastics-prototype/tree/main/pt) (`pt`) for more details on how to add new interventions.\n\n\u003cbr\u003e\n\nModeling\n--------------------------------------------------------------------------------\nNote that the model repository including data and source code is available at [https://github.com/SchmidtDSE/plastics-pipeline](https://github.com/SchmidtDSE/plastics-pipeline).\n\n\u003cbr\u003e\n\nContainer Environment\n--------------------------------------------------------------------------------\nA containerized environment is available for both local execution of the application as well as development.\n\n### Containerized execution\nThe application can be run through a Docker container. This will build the application as well as generate the static [supporting graphs](https://github.com/SchmidtDSE/plastics-prototype/tree/main/image_gen) and selected [static scenario outputs](https://github.com/SchmidtDSE/plastics-prototype/tree/main/js_standalone). \n\n### Containerized development\nNote that a containerized cloud development environment is also available. See `.gitpod.yml` and [GitPod](https://gitpod.io/) for more details. After opening the repository, start running the application with `python -m http.server`.\n\n\u003cbr\u003e\n\nManual Environment\n--------------------------------------------------------------------------------\nTo run the tool locally with a custom or manual environment setup, some prerequisites are required:\n\n - [Java](https://adoptium.net/) allows for ANTLR source generation as required for the plastics intervention language.\n - [Node](https://nodejs.org/en) is required in order to run grunt and webpack, enabling preparation of the front-end.\n - [Python](https://docs.python-guide.org/starting/installation/) acts as automation scripting.\n\nHaving installed the above, execute the following to start the local server:\n\n - Install Python dependencies: `pip install -r requirements.txt`.\n - Setup the local environment with `bash support/setup_local.sh` which includes downloading a copy of the underlying data.\n - Execute a local web server for example `python -m http.server`.\n\nNote that optional static visualizations are also available under [image_gen](https://github.com/SchmidtDSE/plastics-prototype/tree/main/image_gen). See that sub-directory's README for more details.\n\n\u003cbr\u003e\n\nDeployment\n--------------------------------------------------------------------------------\nThere are two options for deploying the application.\n\n### CI / CD\nCI / CD can deploy changes after they merge to `deploy`, releasing to the [public version](https://global-plastics-tool.org/). Note that this tool does not have a backend and the contents of this repository simply need to be hosted as static files after building (see `support/setup_local.sh` for a minimal build).\n\n### Container\nThe Docker container can also be deployed to various different environments. By default, it will use [nginx](https://nginx.org/en/) to host the static files on port 8080 but this may require port forwarding in your hosting environment. Furthermore, it does not run in a daemon. Please adjust `Dockerfile` and `docker-compose.yml` to fit your desired secuirty profile and hosting environment before deployment.\n\n\u003cbr\u003e\n\nDevelopment standards\n--------------------------------------------------------------------------------\nThis project uses the following:\n\n - Primarily, front-end tests are supported through Grunt (`grunt`) and QUnit. Meanwhile style is generally enforced eslint (`npx eslint ./js/*.js`).\n - Note that CI / CD may execute other tests and all pull requests should be passing all test and lint operations before merge.\n - When in doubt, please follow the [JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html).\n - Try to provide docstrings / JSDoc for public members (note that the `support` directory is excluded from this requirement at this time).\n - Reviewers may also impose certain requirements around usability and accessibility as to be discussed during reviews.\n\nPlease be kind. Open source is an act of love.\n\n\u003cbr\u003e\n\nData and Citation\n--------------------------------------------------------------------------------\nPlease cite \u003ca href=\"https://www.science.org/doi/10.1126/science.adr3837\"\u003ePottinger et al 2024\u003c/a\u003e. Thank you! This tool's other repositories use the following:\n\n - [DESA, World Population Prospects 2022 (2022).](https://population.un.org/wpp/Download)\n - [R. Geyer, J. R. Jambeck, K. L. Law, Production, use, and fate of all plastics ever made. Sci. Adv. 3, e1700782 (2017).](https://www.science.org/doi/10.1126/sciadv.1700782)\n - C. Liu, S. Hu, R. Geyer. Manuscript in Process (2024).\n - [OECD, Real GDP long-term forecast (2023).](https://doi.org/10.1787/d927bc18-en)\n - [J. Zheng, S. Suh, Strategies to reduce the global carbon footprint of plastics. Nat. Clim. Chang. 9, 374–378 (2019).](https://www.nature.com/articles/s41558-019-0459-z)\n\nWe thank the community and authors for their contribution.\n\n\u003cbr\u003e\n\nOpen source\n--------------------------------------------------------------------------------\nThe project uses the following:\n\n - [ANTLR](https://www.antlr.org/index.html) under the [BSD License](https://www.antlr.org/license.html).\n - [Ace Editor](https://ace.c9.io/) under the [BSD License](https://github.com/ajaxorg/ace/blob/master/LICENSE).\n - [Chart.js](https://www.chartjs.org) under the [MIT License](https://github.com/chartjs/Chart.js/blob/master/LICENSE.md).\n - [ColorBrewer](https://colorbrewer2.org) under the [Apache v2 License](https://github.com/axismaps/colorbrewer/blob/master/LICENCE.txt).\n - [d3](https://d3js.org/) under the [ISC License](https://github.com/d3/d3/blob/main/LICENSE).\n - [es-module-shims](https://www.npmjs.com/package/es-module-shims) under the [MIT License](https://github.com/guybedford/es-module-shims/blob/main/LICENSE).\n - [Handlebars](https://handlebarsjs.com/) under the [MIT License](https://github.com/handlebars-lang/handlebars.js/blob/master/LICENSE).\n - [League Spartan](https://www.theleagueofmoveabletype.com/league-spartan) under the [OFL License](https://opensource.org/license/ofl-1-1/).\n - [Matplotlib](https://matplotlib.org/) under the [PSF License](https://matplotlib.org/stable/users/project/license.html).\n - [Pandas](https://pandas.pydata.org/) under the [BSD License](https://github.com/pandas-dev/pandas/blob/main/LICENSE).\n - [Papa Parse](https://www.papaparse.com/) under the [MIT License](https://github.com/mholt/PapaParse/blob/master/LICENSE).\n - [Popper](https://popper.js.org/) under the [MIT License](https://github.com/floating-ui/floating-ui/blob/master/LICENSE).\n - [Pure CSS Custom Dropdown Arrow](https://codepen.io/code-boxx/pen/RwxbpOz) under the [MIT License](https://codepen.io/code-boxx/pen/RwxbpOz).\n - [Qunit](https://qunitjs.com/) under the [MIT License](https://github.com/qunitjs/qunit/blob/main/LICENSE.txt).\n - [Simplebar](https://grsmto.github.io/simplebar/) under the [MIT License](https://github.com/Grsmto/simplebar/blob/master/LICENSE).\n - [Tabby](https://github.com/cferdinandi/tabby) under the [MIT License](https://github.com/cferdinandi/tabby/blob/master/LICENSE.md).\n - [Tippy](https://atomiks.github.io/tippyjs/) under the [MIT License](https://github.com/atomiks/tippyjs/blob/master/LICENSE).\n - [ua-parser 1.0.36](https://uaparser.js.org/) under the [MIT License](https://www.npmjs.com/package/ua-parser-js).\n\nNote that the following may be invoked as executables like via the command line through CI / CD or by users of this tool but are not statically linked with the tool (and are not used during the execution of the web-based interactive tool):\n\n - [Grunt](https://gruntjs.com/) under the [MIT License](https://github.com/gruntjs/grunt/blob/main/LICENSE).\n - [grunt-contrib-connect](https://github.com/gruntjs/grunt-contrib-connect) under the \n - [grunt-contrib-qunit](https://github.com/gruntjs/grunt-contrib-qunit) under the [MIT License](https://github.com/gruntjs/grunt-contrib-qunit/blob/main/LICENSE-MIT).\n - [Node](https://nodejs.org/en) under an [open source set of licenses](https://github.com/nodejs/node/blob/main/LICENSE).\n - [npm](https://www.npmjs.com/) under [Artistic v2 License](https://docs.npmjs.com/policies/npm-license).\n - [OpenJDK](https://openjdk.org/) under the [GPL License](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html).\n - [Processing](https://processing.org/) under the [GPL License](https://github.com/benfry/processing4/blob/main/LICENSE.md).\n - [Webpack](https://webpack.js.org/) under the [MIT License](https://github.com/webpack/webpack/blob/main/LICENSE).\n\nOur CI / CD systems via [GitHub Actions](https://docs.github.com/en/actions) also use the libraries described in `build.yml`.\n\nMeanwhile, the optional containerized environment uses the following:\n\n - [Docker](https://docs.docker.com/engine/) under the [Apache v2 License](https://github.com/moby/moby/blob/master/LICENSE).\n - [Docker Compose](https://docs.docker.com/compose/) under the [Apache v2 License](https://github.com/docker/compose/blob/main/LICENSE).\n - [Nginx](https://nginx.org/en/) under a [BSD-like License](https://nginx.org/LICENSE).\n\nFinally, thanks to the following some basic boilerplates / inspiration:\n\n - [ANTLR Mega Tutorial](https://github.com/gabriele-tomassetti/antlr-mega-tutorial) by Gabriele Tomassetti under the [MIT License](https://github.com/gabriele-tomassetti/antlr-mega-tutorial/blob/master/LICENSE.md).\n - [AntlrCalc](https://snorristurluson.github.io/AntlrCalc/) (the article) by Snorri Sturluson under the [MIT License](https://github.com/snorristurluson/snorristurluson.github.io).\n - [arithmetic](https://github.com/antlr/grammars-v4/blob/master/arithmetic/arithmetic.g4) by Tom Everett under inline BSD License.\n - Bret Victor's [Inventing on Principle](https://www.youtube.com/watch?v=PUv66718DII).\n - Fernando Pérez's work on [reproducible research](https://www.youtube.com/watch?t=1521\u0026v=GUyt_VXU8Aw\u0026feature=youtu.be).\n - Maggie Appleton's [Programming Portals](https://maggieappleton.com/programming-portals).\n - [PlantLang](https://github.com/sampottinger/PlantLang) under the [MIT License](https://github.com/sampottinger/PlantLang/blob/main/LICENSE.txt).\n - [Pyafscgap](https://pyafscgap.org/) under the [BSD License](https://github.com/SchmidtDSE/afscgap/blob/main/LICENSE.md).\n - [Tiny ANTLR Language](https://github.com/bkiers/tiny-language-antlr4/tree/master) under the [Unlicense License](https://github.com/bkiers/tiny-language-antlr4/blob/master/UNLICENSE).\n\nNote that additional open source libraries used by the model pipeline are discussed at [https://github.com/SchmidtDSE/plastics-pipeline](https://github.com/SchmidtDSE/plastics-pipeline).\n\n\u003cbr\u003e\n\nRetrospectives\n--------------------------------------------------------------------------------\nAs an open source project, we record major security or reliability incidents publicly. We have 1 report to mention: we had a near-miss as described in [20250611-GlobalPlasticsTool-Polyfill](https://github.com/SchmidtDSE/retrospectives/blob/main/20250611_GlobalPlasticsTool_Polyfill.md) in which we do not believe users were impacted.\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.1787/d927bc18-en"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["optimize","archiving","measur","transforms","generic","compose","observation","conversion","animals","projection"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/193869","html_url":"https://ost.ecosyste.ms/projects/193869"}