Mangrove Atlas
An online platform that provides the remote sensing data and tools for monitoring mangroves.
https://github.com/Vizzuality/mangrove-atlas
Category: Biosphere
Sub Category: Forest Observation and Management
Keywords from Contributors
climate-change redux forest-monitoring deforestation wri-api half-earth biodiversity arcgisjs conservation climate
Last synced: about 21 hours ago
JSON representation
Repository metadata
Global Mangrove Watch
- Host: GitHub
- URL: https://github.com/Vizzuality/mangrove-atlas
- Owner: Vizzuality
- License: mit
- Created: 2019-05-14T09:04:06.000Z (about 7 years ago)
- Default Branch: develop
- Last Pushed: 2025-10-15T06:18:36.000Z (9 months ago)
- Last Synced: 2025-10-23T12:35:37.106Z (9 months ago)
- Language: Jupyter Notebook
- Homepage: https://globalmangrovewatch.org
- Size: 95.5 MB
- Stars: 11
- Watchers: 8
- Forks: 6
- Open Issues: 10
- Releases: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
README.md
Mangrove Atlas
Overview
Global Mangrove Watch (GMW) is an online platform that provides remote sensing data and tools for monitoring mangroves. It gives universal access to near real-time information on where and what changes there are to mangroves across the world, and highlights why they are valuable.
Tech Stack
- Next.js (Pages Router) — framework
- React 18 — UI library
- TypeScript — type safety
- Tailwind CSS v4 — styling
- Recoil — client state management (URL-synced)
- React Query (
@tanstack/react-queryv4) — server state & data fetching - Mapbox GL JS v3 via
react-map-glv7 — map rendering - Recharts — charts & data visualization
- Radix UI — accessible UI primitives
- NextAuth v4 — authentication
- Transifex Native — internationalization (en, fr, es)
- Playwright — end-to-end testing
Getting Started
Requirements
- Node.js 22 (see
.nvmrc) - pnpm 10.x
Setup
- Clone the repository
- Use the correct Node.js version:
nvm use - Install dependencies:
pnpm install - Copy the environment file and fill in the required values:
cp .env.default .env - Start the development server:
pnpm dev
The app will be available at http://localhost:3000.
Commands
pnpm dev # Start dev server (port 3000)
pnpm build # Production build
pnpm lint # Run ESLint
pnpm check-types # TypeScript type checking
pnpm test # Run Playwright end-to-end tests
pnpm test-ui # Run Playwright tests with interactive UI
Run a single Playwright test:
npx playwright test tests/navigation.spec.ts
Project Structure
src/
├── pages/ # Next.js pages (catch-all route at [[...params]].tsx)
├── containers/
│ ├── datasets/ # Widget-specific code (data hooks, charts, map layers)
│ └── widgets/ # Widget system configuration & constants
├── components/ # Shared UI components
├── store/ # Recoil atoms organized by domain
├── services/ # API clients (Axios instances)
├── hooks/ # Shared React hooks
├── utils/ # Utility functions
├── types/ # TypeScript type definitions
└── styles/ # Global styles
cloud-functions/ # Google Cloud Functions (Node.js 22)
├── analysis/ # Geospatial analysis (habitat extent, net change, biomass)
├── alerts-tiler/ # Tile server for alert visualization
├── fetch-alerts/ # Deforestation alert data from Google Earth Engine
├── fetch-alerts-heatmap/
└── upload-alerts/
URL Patterns
The app uses a catch-all route (src/pages/[[...params]].tsx) with these patterns:
/— worldwide view/country/:id— country view/wdpa/:id— protected area view/custom-area/:id— user-drawn area
Environment Variables
Copy .env.default to .env for local development. Key variables:
| Variable | Description |
|---|---|
NEXT_PUBLIC_MAPBOX_ACCESS_TOKEN |
Mapbox token (required for map rendering) |
NEXT_PUBLIC_VERCEL_ENV |
Controls API URL selection (development / staging / production) |
NEXT_PUBLIC_API_URL |
Backend API URL (staging) |
NEXT_PUBLIC_API_URL |
Backend API URL (production) |
NEXT_PUBLIC_ANALYSIS_API_URL |
Analysis cloud function base URL (bare cloud-functions domain) |
NEXT_PUBLIC_ANALYSIS_API_PATH |
Analysis function name per env (analysis / analysis-staging / analysis-production) |
NEXT_PUBLIC_BLOG_API_URL |
WordPress blog API URL |
NEXT_PUBLIC_PLANET_API_KEY |
Planet satellite imagery API key |
NEXT_PUBLIC_TRANSIFEX_API_KEY |
Transifex API key for i18n |
NEXT_PUBLIC_GA_ID |
Google Analytics 4 tracking ID |
NEXTAUTH_SECRET |
Secret for NextAuth session encryption |
NEXTAUTH_URL |
NextAuth base URL |
See .env.default for the full list.
Analytics
This project uses Google Analytics 4 (GA4) via react-ga4. Analytics is initialized only when NEXT_PUBLIC_GA_ID is set. Custom events follow the trackEvent wrapper pattern with GA4-recommended structure.
Deployment
The app is deployed on Vercel. Cloud functions are deployed independently via GitHub Actions on push to develop/master when their files change.
Playwright tests run automatically on PRs to develop (after the Vercel preview deploy completes).
Contributing
Create a PR for any improvement or feature. Avoid committing directly to develop or master.
Code Style
- ESLint flat config with Prettier integration
- Prettier: single quotes, trailing commas (es5), 100 char line width, Tailwind CSS plugin
- Pre-commit hook runs lint on staged files via lint-staged
Vulnerability Mitigation
Dependabot alerts are configured for this repository.
To check for production vulnerabilities:
pnpm audit --prod
When a vulnerability is detected:
- Check if it affects production dependencies
- Try creating a Dependabot security update PR
- If automatic fixes fail, manually update the affected dependencies
Owner metadata
- Name: Vizzuality
- Login: Vizzuality
- Email: hello@vizzuality.com
- Kind: organization
- Description:
- Website: http://www.vizzuality.com
- Location: Madrid, Cambridge, Barcelona, Washington DC
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/305994?v=4
- Repositories: 424
- Last ynced at: 2026-02-21T06:51:57.226Z
- Profile URL: https://github.com/Vizzuality
GitHub Events
Total
- Issues event: 39
- Watch event: 1
- Delete event: 74
- Issue comment event: 97
- Push event: 134
- Gollum event: 1
- Pull request review event: 2
- Pull request event: 128
- Fork event: 1
- Discussion event: 1
- Create event: 69
Last Year
- Issues event: 38
- Watch event: 1
- Delete event: 74
- Issue comment event: 97
- Push event: 134
- Gollum event: 1
- Pull request review event: 2
- Pull request event: 128
- Fork event: 1
- Discussion event: 1
- Create event: 69
Committers metadata
Last synced: 9 months ago
Total Commits: 2,130
Total Committers: 20
Avg Commits per committer: 106.5
Development Distribution Score (DDS): 0.577
Commits in past year: 143
Committers in past year: 3
Avg Commits per committer in past year: 47.667
Development Distribution Score (DDS) in past year: 0.105
| Name | Commits | |
|---|---|---|
| mluena | m****d@g****m | 900 |
| anamontiaga | a****a@g****m | 460 |
| mluena | m****a@v****m | 202 |
| David Inga | d****a@v****m | 131 |
| Alicia | a****a@g****m | 118 |
| Migsar | m****o@v****m | 92 |
| Andrés González Muñoz | a****z@v****m | 68 |
| dependabot[bot] | 4****] | 58 |
| AngelArcones | a****s@g****m | 36 |
| moose | t****e@g****m | 16 |
| Melissa Nunes | m****s@s****m | 10 |
| barbara-chaves | b****0@g****m | 8 |
| tamaramegan | t****e@g****m | 8 |
| Maria Sola | m****a@v****m | 7 |
| “mluena” | “****d@g****” | 7 |
| Lammert Hilarides | l****s@g****m | 4 |
| Edward P. Morris | 8****s | 2 |
| AbdoKousara | 5****a | 1 |
| Clément Prod'homme | c****t@c****r | 1 |
| Miguel Barrenechea Sánchez | m****a@v****m | 1 |
Committer domains:
- vizzuality.com: 6
- clementprodhomme.fr: 1
- gmail.com”: 1
- sparkgeo.com: 1
Issue and Pull Request metadata
Last synced: 9 months ago
Total issues: 124
Total pull requests: 514
Average time to close issues: about 1 year
Average time to close pull requests: 24 days
Total issue authors: 9
Total pull request authors: 8
Average comments per issue: 3.43
Average comments per pull request: 1.0
Merged pull request: 389
Bot issues: 1
Bot pull requests: 103
Past year issues: 15
Past year pull requests: 146
Past year average time to close issues: about 2 months
Past year average time to close pull requests: 15 days
Past year issue authors: 5
Past year pull request authors: 3
Past year average comments per issue: 2.13
Past year average comments per pull request: 0.92
Past year merged pull request: 101
Past year bot issues: 0
Past year bot pull requests: 33
Top Issue Authors
- lhilarides (72)
- klongleywood (23)
- dhakelila (11)
- larranz-vizz (9)
- mluena (4)
- aagm (2)
- agnlez (1)
- AngelArcones (1)
- dependabot[bot] (1)
Top Pull Request Authors
- mluena (325)
- dependabot[bot] (103)
- anamontiaga (72)
- barbara-chaves (4)
- lhilarides (4)
- aagm (3)
- mariasola (2)
- davidsingal (1)
Top Issue Labels
- QC (84)
- bug (25)
- data (7)
- GMW8 JULY 2025 (4)
- WIP (3)
- enhancement (3)
- OLD (2)
- N/A (1)
- dependencies (1)
Top Pull Request Labels
- dependencies (103)
- javascript (46)
- ready to review (27)
- WIP (2)
- don't merge (2)
- python (2)
- priority (1)
Package metadata
- Total packages: 2
- Total downloads: unknown
- Total dependent packages: 0 (may contain duplicates)
- Total dependent repositories: 0 (may contain duplicates)
- Total versions: 4
proxy.golang.org: github.com/Vizzuality/mangrove-atlas
- Homepage:
- Documentation: https://pkg.go.dev/github.com/Vizzuality/mangrove-atlas#section-documentation
- Licenses: mit
- Latest release: v0.0.2 (published almost 7 years ago)
- Last Synced: 2025-10-29T20:07:56.422Z (9 months ago)
- Versions: 2
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
proxy.golang.org: github.com/vizzuality/mangrove-atlas
- Homepage:
- Documentation: https://pkg.go.dev/github.com/vizzuality/mangrove-atlas#section-documentation
- Licenses: mit
- Latest release: v0.0.2 (published almost 7 years ago)
- Last Synced: 2025-10-29T20:07:56.871Z (9 months ago)
- Versions: 2
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
Dependencies
- @google-cloud/functions-framework 1.6.0 development
- accepts 1.3.7 development
- array-flatten 1.1.1 development
- body-parser 1.19.0 development
- bytes 3.1.0 development
- content-disposition 0.5.3 development
- content-type 1.0.4 development
- cookie 0.4.0 development
- cookie-signature 1.0.6 development
- debug 2.6.9 development
- depd 1.1.2 development
- destroy 1.0.4 development
- ee-first 1.1.1 development
- encodeurl 1.0.2 development
- escape-html 1.0.3 development
- etag 1.8.1 development
- express 4.17.1 development
- finalhandler 1.1.2 development
- forwarded 0.1.2 development
- fresh 0.5.2 development
- http-errors 1.7.2 development
- iconv-lite 0.4.24 development
- inherits 2.0.3 development
- ipaddr.js 1.9.1 development
- media-typer 0.3.0 development
- merge-descriptors 1.0.1 development
- methods 1.1.2 development
- mime 1.6.0 development
- mime-db 1.44.0 development
- mime-types 2.1.27 development
- minimist 1.2.5 development
- ms 2.0.0 development
- ms 2.1.1 development
- negotiator 0.6.2 development
- on-finished 2.3.0 development
- parseurl 1.3.3 development
- path-to-regexp 0.1.7 development
- proxy-addr 2.0.6 development
- range-parser 1.2.1 development
- raw-body 2.4.0 development
- safer-buffer 2.1.2 development
- send 0.17.1 development
- serve-static 1.14.1 development
- setprototypeof 1.1.1 development
- statuses 1.5.0 development
- toidentifier 1.0.0 development
- type-is 1.6.18 development
- unpipe 1.0.0 development
- utils-merge 1.0.1 development
- vary 1.1.2 development
- @google/earthengine 0.1.227
- abort-controller 3.0.0
- agent-base 6.0.1
- arrify 2.0.1
- base64-js 1.3.1
- bignumber.js 9.0.0
- buffer-equal-constant-time 1.0.1
- debug 4.1.1
- ecdsa-sig-formatter 1.0.11
- event-target-shim 5.0.1
- extend 3.0.2
- fast-text-encoding 1.0.3
- gaxios 2.3.4
- gcp-metadata 3.5.0
- google-auth-library 5.10.1
- google-p12-pem 2.0.4
- googleapis 42.0.0
- googleapis-common 3.2.2
- gtoken 4.1.4
- https-proxy-agent 5.0.0
- is-stream 2.0.0
- json-bigint 0.3.1
- jwa 2.0.0
- jws 4.0.0
- lru-cache 5.1.1
- mime 2.4.6
- ms 2.1.2
- node-fetch 2.6.1
- node-forge 0.9.1
- qs 6.7.0
- safe-buffer 5.1.2
- url-template 2.0.8
- uuid 7.0.3
- xmlhttprequest 1.8.0
- yallist 3.1.1
- @google-cloud/functions-framework ^1.6.0 development
- @google/earthengine ^0.1.227
- 111 dependencies
- @google-cloud/functions-framework ^1.6.0 development
- @google-cloud/bigquery ^5.0.0
- axios ^0.21.1
- turf-reverse ^1.0.0
- 111 dependencies
- @google-cloud/functions-framework ^1.6.0 development
- @google-cloud/bigquery ^5.0.0
- axios ^0.21.1
- turf-reverse ^1.0.0
- 102 dependencies
- @google-cloud/bigquery ^5.0.0
- @google-cloud/storage ^5.1.1
- date-fns ^2.14.0
- stream-chain ^2.2.2
- stream-json ^1.6.0
- @babel/core ^7.5.5 development
- @babel/eslint-parser ^7.12.13 development
- @babel/eslint-plugin ^7.12.13 development
- @storybook/addon-actions ^5.0.11 development
- @storybook/addon-centered ^5.1.9 development
- @storybook/addon-cssresources ^5.1.9 development
- @storybook/addon-knobs ^5.1.9 development
- @storybook/addon-notes ^5.0.11 development
- @storybook/addons ^5.0.11 development
- @storybook/react ^5.1.9 development
- eslint-config-airbnb 17.1.0 development
- eslint-config-vizzuality ^1.3.0 development
- eslint-plugin-import ^2.17.2 development
- eslint-plugin-jsx-a11y 6.1.1 development
- eslint-plugin-react ^7.21.1 development
- eslint-plugin-react-hooks 3.0.0 development
- sass ^1.50.1 development
- typescript ^3.5.3 development
- @fortawesome/fontawesome-svg-core ^1.2.19
- @fortawesome/free-solid-svg-icons ^5.9.0
- @fortawesome/react-fontawesome ^0.1.4
- @turf/bbox ^6.0.1
- axios ^0.21.2
- babel-loader 8.0.5
- bowser ^2.6.1
- chroma-js ^2.4.2
- classnames ^2.2.6
- d3-ease ^1.0.5
- d3-format ^1.3.2
- deck.gl ^7.1.4
- eslint-utils ^1.4.2
- express ^4.17.1
- express-favicon ^2.0.1
- framer-motion ^1.11.1
- lodash ^4.17.21
- moment ^2.29.2
- node-sass 4.14.1
- prop-types ^15.7.2
- query-string ^6.5.0
- react ^16.8.6
- react-bootstrap ^1.0.0-beta.9
- react-csv ^1.1.1
- react-dangerous-html ^1.0.0
- react-datepicker ^2.8.0
- react-dom ^16.8.6
- react-intersection-observer ^8.33.1
- react-map-gl ^5.0.3
- react-modal ^3.9.1
- react-on-scroll ^0.2.2
- react-redux ^8.0.1
- react-responsive ^7.0.0
- react-scripts 3.0.1
- react-select ^3.0.4
- recharts ^1.6.2
- redux ^4.0.1
- redux-devtools-extension ^2.13.8
- redux-first-router ^2.1.1
- redux-first-router-link ^2.1.1
- redux-saga ^1.0.2
- reselect ^4.0.0
- viewport-mercator-project ^6.1.1
- vizzuality-redux-tools ^4.0.2
- 2016 dependencies
- earthengine-api *
- gcsfs *
- geemap *
- geopandas ==0.10.2
- google-api-python-client *
- google-cloud-storage *
- iso8601 *
- matplotlib ==3.3.4
- pandas ==1.2.2
- pandera *
- pandera ==0.8.1
- pystac *
- python-dotenv >=0.5.1
- python_jsonschema_objects *
- rio-cogeo *
- s3fs *
- shapely *
- simpledbf *
- tqdm ==4.62.3
- uuid *
- zenodo_get *
- actions/checkout v3 composite
- finnp/create-file-action master composite
- google-github-actions/auth v0.8.0 composite
- google-github-actions/deploy-cloud-functions v0.10.1 composite
- actions/checkout v3 composite
- google-github-actions/auth v0.8.0 composite
- google-github-actions/deploy-cloud-functions v0.10.1 composite
- actions/checkout v3 composite
- google-github-actions/auth v0.8.0 composite
- google-github-actions/deploy-cloud-functions v0.10.1 composite
- osgeo/gdal alpine-normal-latest build
- postgis/postgis 14-3.2
- base latest build
- jupyter/datascience-notebook python-3.8.6 build
- stage_1 latest build
- stage_2 latest build
- actions/checkout v3 composite
- google-github-actions/auth v0.8.0 composite
- google-github-actions/deploy-cloud-functions v0.10.1 composite
- actions/checkout v3 composite
- actions/setup-node v3 composite
- actions/upload-artifact v3 composite
- patrickedqvist/wait-for-vercel-preview v1.3.1 composite
- node 18.12.1-bullseye build
- 338 dependencies
- @google-cloud/functions-framework ^3.3.0 development
- @mapbox/vector-tile ^1.3.0 development
- c8 ^8.0.0 development
- mocha ^10.0.0 development
- sinon ^15.0.0 development
- @google-cloud/bigquery ^5.0.0
- axios ^0.21.4
- concurrently ^7.2.2
- nodemon ^2.0.20
- vt-pbf 3.1.3
- zlib ^1.0.5
Score: -Infinity