prism-app
PRISM is an interactive map-based dashboard that simplifies the integration of geospatial data on hazards, along with information on socioeconomic vulnerability
Science Score: 36.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
1 of 35 committers (2.9%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.0%) to scientific vocabulary
Repository
PRISM is an interactive map-based dashboard that simplifies the integration of geospatial data on hazards, along with information on socioeconomic vulnerability
Basic Info
Statistics
- Stars: 62
- Watchers: 6
- Forks: 39
- Open Issues: 150
- Releases: 0
Metadata Files
README.md
WFP PRISM Frontend
This project is the front-end interface for the World Food Programme's PRISM project. It displays data and impact projections on a configurable map interface.

Functionalities
The new PRISM frontend is built as a static website to minimize cross dependencies and simplify deployments as much as possible. Currently, PRISM frontend provides the ability to:
- Load administrative boundaries as GeoJSON (
src/config/admin_boundaries.json) - Load admin level (vector) data as JSON, and link it to administrative boundaries
- Display WMS layers from Geoserver or Open Data Cube endpoints, with date selection capabilities
- Display point layers by applying symbology to numeric values associated with a geographic coordinate
- Display CSV tables in a left side panel
To chose which country to run PRISM for, you can set the environment variable REACT_APP_COUNTRY. The current default country is mozambique
Configuration
The configuration is split into three files that you can find in src/config:
- 1.
prism.json - 2.
layers.json - 3.
tables.json
Since many layers are common across multiple countries, we created shared configuration files that any deployment can access. Many of these layers are generated by WFP globally and made available through the Humanitarian Data Cube. You can find the layers and their associated styles / legends in src/config/shared:
- 1.
legends.json - 2.
layers.json
prism.json
This is the primary configuration file. You can define:
- Map settings (starting point, zoom, default boundary layers)
- The server endpoints
- Categories and their respective icons which are used to organize the top navigation
- Alerts flag (to specify whether to activate the alerts module)
For each category, you can define sub categories as "subcategory_name":
[layers], a list of layers from layers.json.
{
"country": "Cambodia",
"map": {
"latitude": 12.058,
"longitude": 105.281,
"zoom": 6.49
},
"serversUrls": {
"wms": [
"https://geonode.wfp.org/geoserver/prism/wms/",
"https://ows.earthobservation.vam.wfp.org/wms"
]
},
"alertFormActive": false,
"hidePanel": false,
"icons": {
"vulnerability": "icon_vulnerable.png",
"exposure": "icon_basemap.png",
"hazards": "icon_climate.png",
"risk": "icon_impact.png",
"capacity": "icon_capacity.png",
"tables": "icon_table.png"
},
"categories": {
"hazards": {
"floods" ....
Map settings
For each country, you will need to specify the starting point (lat, long) and zoom. In addition, you can also set
- maxBounds
- minZoom
- maxZoom
To find these attributes, we created a help mode that you can activate by setting the env REACT_APP_SHOW_MAP_INFO=true
Boundary layers
- Configuring multiple boundary layers
If multiple boundary layers are configured in
layers.jsonyou can specify which should be displayed by default by definingdefaultDisplayBoundariesas an array of boundaries.
e.g.
json
{
...
"defaultDisplayBoundaries": [
"township_boundaries",
"district_boundaries",
"state_boundaries"
]
...
}
In some cases, a boundary file may load without any issues but fail to provide correct results in an exposure analysis, or correctly render the 'Go To' feature. Troubleshooting this is challenging. It is recommended to use a validation tool on your boundary file before utilizing it in PRISM. https://geojsonlint.com/ works well for this purpose.
In addition, boundary files sometimes carry more precise coordinates than is neccessary which makes for a large data file. PRISM will alert you with a message in the browser if the precision is too high. You can run bash /frontend/scripts/truncate_precision.sh to fix this. The script will update any boundary file in the /frontend/public/data folder
PMTiles Support for Boundaries
PRISM supports the PMTiles format for administrative boundaries. PMTiles is an efficient single-file format for hosting vector tiles, which can significantly improve load times.
To use PMTiles for boundaries, configure your boundary layer in layers.json:
json
{
"admin_boundaries": {
"type": "boundary",
"format": "pmtiles", // Specify PMTiles format
"path": "https://your-bucket.s3.region.amazonaws.com/path/to/boundaries.pmtiles", // HTTP path to file
"zones_path": "s3://bucket-name/path-to.parquet", // S3 path to source data for analysis zonal stats
"disableAnalysis": false, // Optionally hide from analysis option if performance concern
"opacity": 0.8,
"admin_code": "admin_code_field",
"admin_level_names": ["ADMIN0", "ADMIN1", "ADMIN2"],
"admin_level_local_names": ["admin0Name", "admin1Name", "admin2Name"],
"styles": {
"fill": {
"fill-opacity": 0
},
"line": {
"line-color": "gray",
"line-width": 0.5,
"line-opacity": 0.8
}
}
}
}
Data Layers
Under categories, you can specify the menu structure and reference to any layer by ID that is defined under the country country specific or shared layers.json. You can also create groups that can be activated all at once, or selectively.
"categories": {
"rainfall": {
"forecasts": ["daily_rainfall_forecast", "dekad_rainfall_forecast"],
"rainfall_amount": [
{
"group_title": "Rainfall Aggregate",
"activate_all": false,
"layers": [
{
"id": "rainfall_dekad",
"label": "10-day",
"main": true
},
{
"id": "rainfall_agg_1month",
"label": "1-month"
},
{
"id": "rainfall_agg_3month",
"label": "3-month"
},
{
"id": "rainfall_agg_6month",
"label": "6-month"
},
{
"id": "rainfall_agg_9month",
"label": "9-month"
},
{
"id": "rainfall_agg_1year",
"label": "1-year"
}
]
}
],
}
}
layers.json
In this file, we define the specific layer settings for data access, titles, and legends. You can define a new layer from scratch, or override a layer that exists in the shared/layers.json. In that case, you only need to specify the fields that need to be overriden. Similarly, legends can be predefined in shared/legends.json and simply reference to by id. The "legend_text" attribute describes the source of the data and can use Markdown syntax to render links, italics, and bold text within our H5 typography.
There are 4 main types of layers.
raster
These layers are simply processed as raster images from a WMS server and are referred to as type 'wms'
"pasture_anomaly": {
"title": "Pasture anomaly",
"server_type": "wms",
"server_layer": "ModisAnomaly",
"server_uri": "https://mongolia.sibelius-datacube.org:5000/wms?layers=ModisAnomaly",
"has_date": true,
"date_interval": "days",
"opacity": 0.3,
"legend_text": "Converts NDVI to pasture (kg/ha) values and divides the current period by the long term average to calculate pasture anomaly.",
"legend": [
{ "value": "12000", "color": "#ff0000" },
{ "value": "14000", "color": "#ff5900" },
{ "value": "16000", "color": "#ff8400" },
{ "value": "18000", "color": "#ffce63" },
{ "value": "19000", "color": "#ffdd94" },
{ "value": "20000", "color": "#ffffbf" },
{ "value": "21000", "color": "#dee09f" },
{ "value": "22000", "color": "#bbbf7c" },
{ "value": "24000", "color": "#9da360" },
{ "value": "26000", "color": "#7e8745" },
{ "value": "28000", "color": "#5b6e00" }
]
}
admin level
These layers are referred to as admin_level_data in PRISM and represent a data value for a polygon. The layers are obtained by matching data from the data_field and admin_code fields of the admin_level_data layer with the administrative boundaries. The default admin boundary file will be used unless otherwise specifed in the admin_level_data configuration using the boundary attribute
"improved_drinking_water": {
"title": "Improved drinking water",
"type": "admin_level_data",
"path": "data/myanmar/nso/vulnerability-layers.json",
"data_field": "improved_drinking_water",
"admin_level": 3,
"admin_code": "TS_PCODE",
"opacity": 0.7,
"legend": [
{ "label": "<20%", "value": 0, "color": "#a50f15" },
{ "label": "21 to 40%", "value": 21, "color": "#de2d26" },
{ "label": "41 to 60%", "value": 41, "color": "#fb6a4a" },
{ "label": "61 to 80%", "value": 61, "color": "#fcae91" },
{ "label": "81 to 100%", "value": 81, "color": "#fee5d9" }
],
"legend_text": "Percent of households with improved source of drinking water. Source: Myanmar Population and Housing Census 2014, Department of Population, Ministry of Immigration and Population"
}
point
These layers are referred to as point_data in PRISM and represent a data value for a given latitude and longitude coordinate. Point data layers visualize values specified as measure_field as points on a map based on the geom_field which expect a lat, long coordinate.
"disaster_report": {
"title": "Disaster impact report",
"type": "point_data",
"data": "https://prism-api.ovio.org/kobo/forms",
"additional_query_params": {
"form_name": "PRISM-KHM-Disaster-Report-v1",
"datetime_field": "disaster_date",
"geom_field": "location",
"measure_field": "num_ppl_affected",
}
"opacity": 0.9,
"legend_text": "Number of people affected",
"legend": [
{"value": "0", "color": "#909090"},
{"value": "< 100", "color": "#ffeda0"},
{"value": "100 - 500", "color": "#feb24c"},
{"value": "500 or more", "color": "#f03b20"}
]
boundaries
Boundary layers are loaded by defaul when the application starts and typically show administrative boundaries and are defined as type boundary. Multiple boundary files can be configured in layers.json. Multiple boundary files can be used to create different styles for each boundary, or to toggle between adminleveldata layers which correspond to a separate geographic specification; for example to use one boundary file for district level data, and another boundary file for ecological data.
When more than one boundary is specified, an array of boundaries needs to also be set in prism.json using with the defaultDisplayBoundaries attribute.
{
"state_admin_boundaries": {
"type": "boundary",
"path": "data/myanmar/mmr_admin1_boundaries.json",
"opacity": 0.8,
"admin_code": "ST_PCODE",
"admin_level_names": ["ST"],
"admin_level_local_names": ["mmr_polbnd"],
"styles:": {
"fill": {
"fill-opacity": 0
},
"line": {
"line-color": "gray",
"line-width": 1.5,
"line-opacity": 0.8
}
}
},
"district_admin_boundaries": {
"type": "boundary",
"path": "data/myanmar/mmr_admin2_boundaries.json",
"opacity": 0.8,
"admin_code": "DT_PCODE",
"admin_level_names": ["ST", "DT"],
"admin_level_local_names": ["DT_MMR4", "TS_MMR4"],
"styles:": {
"fill": {
"fill-opacity": 0
},
"line": {
"line-color": "gray",
"line-width": 1,
"line-opacity": 0.8
}
}
},
"admin_boundaries": {
"type": "boundary",
"path": "data/myanmar/admin_boundaries.json",
"opacity": 0.8,
"admin_code": "TS_PCODE",
"admin_level_names": ["ST", "DT", "TS"],
"admin_level_local_names": ["mmr_polbnd", "DT_MMR4", "TS_MMR4"],
"styles:": {
"fill": {
"fill-opacity": 0
},
"line": {
"line-color": "gray",
"line-width": 0.5,
"line-opacity": 0.8
}
}
}
impact
Impact layers are computed by combining a raster layer with a vector layer based on raster values bound by the zones of the vector layer. The impact layer computes zonal statistics for the raster, and based on a configured threshold, will display zones where the threshold has been exceeded.
"herd_pasture_impact": {
"title": "Number of herder households exposed to severe pasture anomaly",
"hazard_layer": "pasture_anomaly",
"baseline_layer": "nsoHerders",
"threshold": " <= 25000",
"opacity": 0.3,
"legend_text": "Number of herder households within ADMIN2 in an area where the median pasture anomaly is <= -50%",
"legend": [
{ "value": "25", "color": "#ffeda0" },
{ "value": "30", "color": "#feb24c" },
{ "value": "35", "color": "#f03b20" }
]
}
Additional layer content
Add Layer Contents
To display additional metadata about a layer, you can add a content_path attribute to any layer. The attribute expects a path to a .md or .html file that is stored in public/data/${REACT_APP_COUNTRY}/filename.ext directory. For example: public/data/myanmar/contents.md
The application will show an icon next to the layer in the legend if this attribute is configured, and will display the content in a modal window if the icon is clicked.
Technical - Packages/Dependencies
This project was bootstrapped with Create React App, using the Redux and Redux Toolkit template with TypeScript.
- Styling & UI Library Use Material UI. Note that to use the styles API you can
import @material-ui/core/styles. - Routing Uses React Router.
- Monitoring Uses Sentry.io. To send monitoring info to Sentry, simply set the
Sentryurl by adding it asREACT_APP_SENTRY_URLin a.envfile at the root folder. - State Management Uses Redux
- Testing Uses Jest
- Mapping Uses MapLibre. The app supports Maptiler and Mapbox styles. To use Mapbox styles, you will need to create a token and add it as
REACT_APP_MAPBOX_TOKENin a.envfile at the root folder. Then specify your style url usingREACT_APP_DEFAULT_STYLE. - WFP authentication Uses msal. You need to include within your .env file the variables
REACT_APP_OAUTH_CLIENT_ID,REACT_APP_OAUTH_AUTHORITYandREACT_APP_OAUTH_REDIRECT_URI. Also, set theWFPAuthRequiredflag within the country prism.json file
Developing the frontend
The following commands should get you a local development instance of the frontend:
cd frontend
yarn clean
yarn install
yarn setup:common
REACT_APP_COUNTRY=cambodia yarn start
Available Scripts
In the project directory, you can run:
yarn start
Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.
The page will reload if you make edits.
You will also see any lint errors in the console.
yarn test
Launches the test runner in the interactive watch mode.
See the section about running tests for more information.
yarn build
Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.
Your app is ready to be deployed!
See the section about deployment for more information.
yarn lint
Runs eslint for all the source files. We use a custom Eslint configuration in ./eslintrc along with prettier (configured with ./.prettierrc) to enforce consistency and code quality. If you would like eslint to try to automatically "fix" files if it can, run yarn lint --fix.
Committing Code
By default, a pre-commit hook is defined to run linting tasks on all staged code before allowing a commit. This occurs using the lint-staged package, and can be configured in ./package.json#lint-staged. The precommit task can be run manually using yarn precommit.
Creating pull requests and deploying to Firebase
By default, everytime a pull request is created, a CI/CD pipeline will run tests and deploy the code to a Firebase channel preview (http://staging-prism-frontend--prism-[pr number]-[random hash].web.app). To specify a country that the build will be run on, start your pull request title with COUNTRY=[country name]. For example: COUNTRY=cambodia Add new config options.
Owner
- Name: WFP-VAM
- Login: WFP-VAM
- Kind: organization
- Email: wfp.vaminfo@wfp.org
- Location: At the end of the rainbow
- Website: vam.wfp.org
- Repositories: 60
- Profile: https://github.com/WFP-VAM
VAM Code Dev
GitHub Events
Total
- Create event: 95
- Issues event: 61
- Watch event: 10
- Delete event: 98
- Member event: 3
- Issue comment event: 266
- Push event: 808
- Pull request review comment event: 193
- Pull request review event: 249
- Pull request event: 188
- Fork event: 9
Last Year
- Create event: 95
- Issues event: 61
- Watch event: 10
- Delete event: 98
- Member event: 3
- Issue comment event: 266
- Push event: 808
- Pull request review comment event: 193
- Pull request review event: 249
- Pull request event: 188
- Fork event: 9
Committers
Last synced: 6 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Amit Wadhwa | a****a@g****m | 218 |
| Eric Boucher | e****r@g****m | 178 |
| dependabot[bot] | 4****]@u****m | 92 |
| Jorge Martínez Gómez | j****7@g****m | 56 |
| echaidemenos | 8****s@u****m | 39 |
| HarryMytilinaios | c****s@p****m | 35 |
| Will Gislason | 8****l@u****m | 15 |
| Laurent Savaete | l****t@w****f | 14 |
| Ben Peters | b****s@g****m | 13 |
| sifelix | 4****x@u****m | 13 |
| Daniel J. Dufour | d****r@g****m | 11 |
| Ridwan Mulyadi | r****i@l****m | 11 |
| hav142 | h****2@g****m | 11 |
| Linh Tran | 3****2@u****m | 10 |
| Ryan Samarakoon | S****c@u****m | 9 |
| jbperidypathtech | 1****h@u****m | 9 |
| Eugene Rwagasore | 1****e@u****m | 8 |
| PysarenkoDS-BWT | 9****T@u****m | 8 |
| Mamadou Ouologuem | 4****m@u****m | 7 |
| Ajani Motta | 8****m@u****m | 6 |
| JulienPathtech | 1****h@u****m | 5 |
| Chris Lowrie | l****h@m****u | 4 |
| Max | c****v@g****m | 2 |
| Doniaab | 1****b@u****m | 1 |
| Eleftherios Chaidemenos | e****s@p****m | 1 |
| Elvira | e****m@u****m | 1 |
| Ricardo Mirón | r****u@g****m | 1 |
| Ridwan Mulyadi | r****r@g****m | 1 |
| Ryan Samarakoon | r****s@g****m | 1 |
| Tasos Boulis | t****s@h****m | 1 |
| and 5 more... | ||
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 555
- Total pull requests: 1,206
- Average time to close issues: 4 months
- Average time to close pull requests: 16 days
- Total issue authors: 25
- Total pull request authors: 42
- Average comments per issue: 1.18
- Average comments per pull request: 2.11
- Merged pull requests: 952
- Bot issues: 0
- Bot pull requests: 149
Past Year
- Issues: 51
- Pull requests: 233
- Average time to close issues: 12 days
- Average time to close pull requests: 12 days
- Issue authors: 5
- Pull request authors: 10
- Average comments per issue: 0.27
- Average comments per pull request: 1.36
- Merged pull requests: 136
- Bot issues: 0
- Bot pull requests: 55
Top Authors
Issue Authors
- wadhwamatic (378)
- ericboucher (104)
- gislawill (11)
- Ry-DS (7)
- laurentS (7)
- reed1 (5)
- valpesendorfer (4)
- JorgeMartinezG (4)
- JulienPathtech (4)
- echaidemenos (4)
- mamadOuologuem (3)
- lowriech (3)
- jbperidypathtech (3)
- DanielJDufour (3)
- bencpeters (2)
Pull Request Authors
- ericboucher (297)
- wadhwamatic (277)
- dependabot[bot] (149)
- echaidemenos (84)
- JorgeMartinezG (68)
- gislawill (41)
- HarryMytilinaios (36)
- Doniaab (29)
- Max-Z80 (25)
- laurentS (21)
- erwagasore (19)
- reed1 (16)
- sifelix (14)
- Ry-DS (14)
- tdlinh2712 (13)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/checkout v2 composite
- actions/setup-node v2 composite
- actions-ecosystem/action-regex-match v2 composite
- actions/cache v2 composite
- actions/checkout v2 composite
- actions/setup-node v3 composite
- dswistowski/surge-sh-action v1 composite
- marocchino/sticky-pull-request-comment v1 composite
- snok/install-poetry v1 composite
- node 12 build
- kartoza/postgis 12.1
- osgeo/gdal ubuntu-small-latest build
- traefik v2.4
- kartoza/postgis 12.1
- @types/node-fetch ^2.5.8 development
- @types/nodemailer ^6.4.1 development
- faker ^4.1.0 development
- glob ^7.1.6 development
- jest 27.0.4 development
- rimraf ^3.0.2 development
- supertest ^4.0.2 development
- ts-jest ^24.0 development
- ts-loader ^6.2.1 development
- ts-node ^8.10.2 development
- tsconfig-paths ^3.9.0 development
- typeorm-seeding ^1.6.1 development
- typescript ~3.8.2 development
- yargs ^15.4.1 development
- @turf/bbox ^6.3.0
- geojson ^0.5.0
- lodash ^4.17.21
- moment ^2.29.4
- node-fetch ^2.6.7
- nodemailer ^6.6.1
- pg ^8.5.1
- prism-common file:../common
- typeorm ^0.2.25
- typeorm-naming-strategies ^1.1.0
- xml-js ^1.6.11
- 493 dependencies
- @types/eslint ^8.4.6 development
- @types/eslint-scope ^3.7.4 development
- @types/estree ^1.0.0 development
- @types/lodash ^4.14.149 development
- @types/node ^18.7.20 development
- @types/webpack ^5.28.0 development
- cpy-cli ^4.1.0 development
- cross-fetch ^3.1.5 development
- find-and-read ^1.2.0 development
- flug ^2.3.1 development
- rimraf ^3.0.2 development
- srvd ^0.4.0 development
- typescript ^4.7.4 development
- lodash ^4.17.21
- moment ^2.29.4
- xml-utils ^1.6.0-0
- 224 dependencies
- @react-pdf/types ^2.1.0 development
- @testing-library/dom ^6.15.0 development
- @testing-library/jest-dom ^4.2.4 development
- @testing-library/react ^9.3.2 development
- @testing-library/user-event ^7.1.2 development
- @turf/helpers ^6.5.0 development
- @types/chart.js ^2.9.21 development
- @types/colormap ^2.3.1 development
- @types/d3 ^5.7.2 development
- @types/dompurify ^2.2.3 development
- @types/geojson ^7946.0.7 development
- @types/jest ^24.0.0 development
- @types/lodash ^4.14.149 development
- @types/mapbox-gl ^1.8.0 development
- @types/marked ^4.0.2 development
- @types/node ^16.0.0 development
- @types/papaparse ^5.0.3 development
- @types/react ^16.9.0 development
- @types/react-datepicker ^2.11.0 development
- @types/react-dom ^16.9.0 development
- @types/react-pdf ^5.7.2 development
- @types/react-redux ^7.1.7 development
- @types/react-router-dom ^5.1.3 development
- @typescript-eslint/eslint-plugin ^2.23.0 development
- @typescript-eslint/parser ^2.25.0 development
- cross-env ^7.0.2 development
- eslint ^6.8.0 development
- eslint-config-airbnb ^18.0.1 development
- eslint-config-prettier ^6.11.0 development
- eslint-config-react-app ^5.2.0 development
- eslint-import-resolver-typescript ^2.0.0 development
- eslint-plugin-flowtype ^3.0 development
- eslint-plugin-fp ^2.3.0 development
- eslint-plugin-import ^2.20.1 development
- eslint-plugin-jsx-a11y ^6.2.3 development
- eslint-plugin-prettier ^3.1.4 development
- eslint-plugin-react ^7.19.0 development
- eslint-plugin-react-hooks ^1.7 development
- typescript ^3.9.7 development
- @azure/msal-browser ^2.19.0
- @azure/msal-react ^1.1.1
- @fortawesome/fontawesome-svg-core ^1.2.28
- @fortawesome/free-brands-svg-icons ^5.13.0
- @fortawesome/free-solid-svg-icons ^5.13.0
- @fortawesome/react-fontawesome ^0.1.9
- @material-ui/core 4.12.4
- @material-ui/icons ^4.11.3
- @material-ui/lab 4.0.0-alpha.61
- @material-ui/styles 4.11.5
- @react-pdf/font 2.2.0
- @react-pdf/renderer 2.1.0
- @reduxjs/toolkit ^1.4.0
- @sentry/browser ^5.15.5
- @turf/bbox ^6.5.0
- @turf/bbox-polygon ^6.5.0
- @turf/boolean-point-in-polygon ^6.5.0
- @turf/clone ^6.5.0
- @turf/meta ^6.5.0
- @turf/union ^6.5.0
- babel-eslint 10.0.3
- chart.js ^2.9.3
- colormap ^2.3.1
- comlink ^4.3.1
- customize-cra ^1.0.0
- d3-fetch ^1.1.2
- date-fns ^2.28.0
- domhandler ^4.2.2
- dompurify ^2.3.1
- enzyme ^3.11.0
- enzyme-adapter-react-16 ^1.15.2
- enzyme-to-json ^3.4.4
- geojson ^0.5.0
- geotiff ^1.0.0-beta.11
- html-react-parser ^1.3.0
- husky ^4.2.3
- i18next ^21.6.11
- i18next-browser-languagedetector ^6.1.3
- i18next-http-backend ^1.3.2
- jspdf ^2.3.0
- lint-staged ^10.0.8
- lodash ^4.17.21
- mapbox-gl npm:maplibre-gl@1.15.2
- marked ^4.0.10
- moment ^2.29.4
- moment-range ^4.0.2
- papaparse ^5.2.0
- prettier 2.0.5
- prism-common file:../common
- prop-types ^15.7.2
- react ^16.13.0
- react-app-rewired ^2.2.1
- react-chartjs-2 ^2.9.0
- react-datepicker ^2.14.1
- react-dom ^16.13.0
- react-draggable ^4.4.3
- react-i18next ^11.15.4
- react-mapbox-gl ^4.8.2
- react-pdf ^5.7.2
- react-redux ^7.2.0
- react-router-dom ^5.1.2
- react-scripts 3.4.0
- redux ^4.0.5
- reflect-metadata ^0.1.13
- remove-files-webpack-plugin ^1.5.0
- rimraf ^3.0.2
- url ^0.11.0
- xml-js ^1.6.11
- 1919 dependencies
- black ^22.6.0 develop
- isort ^5.10.1 develop
- PyJWT 2.4.0
- python <3.11,>=3.7.2
- requests ^2.25.1
- Fiona ==1.8.22
- PyYAML ==6.0
- Shapely ==1.8.2
- black ==22.6.0
- boto3 ==1.26.26
- cachetools ==5.2.0
- certifi ==2023.5.7
- charset-normalizer ==3.2.0
- exceptiongroup ==1.1.2
- fastapi ==0.95.2
- greenlet ==2.0.2
- gunicorn ==20.1.0
- idna ==3.4
- iniconfig ==2.0.0
- isort ==5.10.1
- mock ==4.0.3
- mypy ==0.971
- odc-geo ==0.3.2
- odc-stac ==0.3.6
- packaging ==23.1
- playwright ==1.35.0
- pluggy ==1.2.0
- psycopg2 ==2.9.3
- py ==1.11.0
- pydantic ==1.9.2
- pydocstyle ==6.1.1
- pyee ==9.0.4
- pyparsing ==3.1.0
- pyrsistent ==0.19.3
- pystac ==1.8.1
- pystac-client ==0.7.2
- pytest ==7.4.0
- pytest-asyncio ==0.21.1
- pytest-base-url ==2.0.0
- pytest-cov ==3.0.0
- pytest-playwright ==0.3.3
- python-dateutil ==2.8.2
- python-dotenv ==1.0.0
- python-slugify ==8.0.1
- pytz ==2023.3
- rasterstats ==0.17.0
- requests ==2.31.0
- schemathesis ==3.19.5
- six ==1.16.0
- sniffio ==1.3.0
- snowballstemmer ==2.2.0
- sqlalchemy ==1.4.40
- sqlalchemy2-stubs ==0.0.2a25
- text-unidecode ==1.3
- tomli ==2.0.1
- tomli_w ==1.0.0
- types-python-dateutil ==2.8.19
- types-requests ==2.28.8
- types-urllib3 ==1.26.25.13
- typing_extensions ==4.7.1
- urllib3 ==1.26.16
- uvicorn ==0.18.2