Planting Optimisation Tool

A data-driven recommendation system designed to support sustainable reforestation and agroforestry planning in Timor-Leste.
https://github.com/chameleon-company/planting-optimisation-tool

Category: Biosphere
Sub Category: Deforestation and Reforestation

Last synced: about 14 hours ago
JSON representation

Repository metadata

Developer Repository for Planting Optimisation Tool Project.

README.md

Planting Optimisation Tool

POT frontend infrastructure
POT Back-end Testing

POT Data Science Testing
POT GIS Testing

A data-driven recommendation system designed to support sustainable reforestation and agroforestry planning in Timor-Leste. The tool identifies the most suitable tree species for a given farm by analysing environmental conditions, species requirements, and geospatial datasets.

This project is developed in collaboration with the xPand Foundation under the Rai Matak Program.

For contribution guidelines and to get started working on the project, see CONTRIBUTING.md

Purpose

Smallholder farmers in Timor-Leste face low tree-survival rates due to poor environmental matching and limited access to ecological data. The Planting Optimisation Tool addresses this challenge by:

  • Analysing farm-level conditions (rainfall, soil pH, elevation, temperature, slope, area);
  • Matching farms with optimal, cautionary, and unsuitable tree species;
  • Explaining limiting factors that may affect survival;
  • Generating simple, accessible reports for field officers and supervisors.

Core Features

Species Recommendation

  • Suitability scoring based on rainfall, pH, temperature, elevation, soil class, and other variables.
  • Automatic exclusion of species that cannot survive under the farm’s limiting conditions.
  • Identification of key limiting factors for each species.

Environmental Profiling

  • Extraction of environmental variables from geospatial datasets and hybrid GIS/GEE data sources (e.g., rainfall, elevation, slope, and soil).
  • Integration with national datasets such as Seeds of Life.
  • Farm-level environmental profiles for decision support.

Sapling Estimation

  • Calculates recommended sapling count based on farm area, terrain, planting profile (e.g. 3m × 3m spacing).
  • Calculates recommended sapling counts using configurable planting spacing, terrain slope limits, and farm geometry.

User-Facing Web Interface

  • Input forms for farm conditions and environmental parameters.
  • Species recommendation and environmental profile pages.
  • Interactive frontend built with React and Vite.
  • Visualization of environmental profile and sapling estimation outputs.

Technology Stack

Backend

  • FastAPI, Python
  • PostgreSQL / PostGIS
  • Docker

Frontend

  • React (Vite)

Data Science / ML

  • NumPy, Pandas, scikit-learn

GIS / Remote Sensing

  • Rasterio, GeoPandas

Key Features

User-Facing Web Interface

  • Responsive UI, dashboards, forms, PDF report generation

Data Science / ML Features

  • Suitability scoring models
  • Farm archetypes and plant functional types
  • Exploratory and predictive modelling

GIS / Remote Sensing

  • Extraction of rainfall, soil, elevation, slope, and temperature layers from raster and geospatial datasets
  • Spatial aggregation for farm-level profile generation

Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 6 days ago

Total Commits: 301
Total Committers: 17
Avg Commits per committer: 17.706
Development Distribution Score (DDS): 0.495

Commits in past year: 301
Committers in past year: 17
Avg Commits per committer in past year: 17.706
Development Distribution Score (DDS) in past year: 0.495

Name Email Commits
Lee Copland l****e@l****m 152
Darrin Stephens d****5@g****m 49
Naresh Barua 6****a 20
Chinthika Rathnayake c****i@g****m 11
Felix Hendrawan f****5@g****m 11
Josh Dang 6****g 11
dependabot[bot] 4****] 11
Thai Duy Vo v****3@g****m 9
CAHAT0002 C****2@g****m 6
Tamil5102000 t****i@g****m 5
Vasmai1610 v****0@g****m 4
cbasadeakin 1****n 3
swasti-ajmera s****6@g****m 3
Mi Vo v****k@g****m 2
chenmuy7 1****7 2
JohnMS-IT s****2@d****u 1
Rachith2005 r****t@g****m 1

Committer domains:


Issue and Pull Request metadata

Last synced: 1 day ago

Total issues: 106
Total pull requests: 61
Average time to close issues: about 2 months
Average time to close pull requests: 3 days
Total issue authors: 5
Total pull request authors: 11
Average comments per issue: 0.14
Average comments per pull request: 2.64
Merged pull request: 36
Bot issues: 0
Bot pull requests: 0

Past year issues: 106
Past year pull requests: 61
Past year average time to close issues: about 2 months
Past year average time to close pull requests: 3 days
Past year issue authors: 5
Past year pull request authors: 11
Past year average comments per issue: 0.14
Past year average comments per pull request: 2.64
Past year merged pull request: 36
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/chameleon-company/planting-optimisation-tool

Top Issue Authors

  • dwstephens (81)
  • leecopland (10)
  • CAHAT0002 (8)
  • Vasmai1610 (4)
  • Chinthika (3)

Top Pull Request Authors

  • leecopland (15)
  • Naresh-Barua (12)
  • dwstephens (10)
  • Chinthika (8)
  • JoshPDang (4)
  • Tamil5102000 (3)
  • Vasmai1610 (3)
  • CAHAT0002 (2)
  • FelixHendrawan (2)
  • JohnMS-IT (1)
  • Rachith2005 (1)

Top Issue Labels

  • backend (6)
  • bug (5)
  • frontend (5)
  • datascience (1)
  • documentation (1)

Top Pull Request Labels

  • frontend (2)

Dependencies

.github/workflows/cascading-assignment.yml actions
.github/workflows/gis-coverage-comment.yml actions
  • actions/download-artifact v4 composite
  • actions/github-script v7 composite
  • marocchino/sticky-pull-request-comment v3 composite
backend/docker-compose.yml docker
  • postgis/postgis 15-3.4-alpine
  • redis 7-alpine
backend/package-lock.json npm
backend/pyproject.toml pypi
  • alembic >=1.17.2
  • asyncpg >=0.31.0
  • bcrypt ==4.0.1
  • datascience *
  • diff-cover >=9.2.0
  • earthengine-api >=1.7.4, !=1.7.9
  • fastapi [standard]>=0.122.0
  • fpdf2 >=2.7.0
  • geoalchemy2 >=0.18.1
  • gis *
  • google-auth >=2.47.0
  • httpx >=0.28.1
  • locust >=2.32.0
  • mermaid-cli >=0.1.2
  • numpy >=1.26.0
  • paracelsus >=0.14.0
  • psutil >=7.1.3
  • psycopg >=3.3.2
  • psycopg-binary >=3.3.2
  • pydantic-settings >=2.12.0
  • pyjwt >=2.10.1
  • pytest >=9.0.1
  • pytest-asyncio >=1.3.0
  • pytest-cov >=7.0.0
  • pytest-mock >=3.15.1
  • python-docx >=1.1.0
  • python-dotenv >=1.2.1
  • rasterio >=1.3.0
  • redis >=5.0.0
  • ruff >=0.14.5
  • slowapi >=0.1.9
  • sqlalchemy >=2.0.44
  • sqlalchemy-schemadisplay >=2.0
  • sqlalchemy-utils >=0.42.1
.github/workflows/backend-ci.yml actions
  • actions/cache v4 composite
  • actions/checkout v4 composite
  • actions/upload-artifact v4 composite
  • astral-sh/setup-uv v6 composite
  • postgis/postgis 15-3.4-alpine docker
  • redis 7-alpine docker
.github/workflows/backend-coverage-comment.yml actions
  • actions/download-artifact v4 composite
  • actions/github-script v7 composite
  • marocchino/sticky-pull-request-comment v3 composite
.github/workflows/ds-ci.yml actions
  • actions/checkout v4 composite
  • actions/upload-artifact v4 composite
  • astral-sh/setup-uv v6 composite
.github/workflows/frontend-ci.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v3 composite
  • actions/upload-artifact v4 composite
.github/workflows/review_checklist.yml actions
  • actions/github-script v7 composite
.github/workflows/gis-ci.yml actions
  • actions/checkout v4 composite
  • actions/upload-artifact v4 composite
  • astral-sh/setup-uv v6 composite
.github/workflows/pr-template-validation.yml actions
  • actions/github-script v7 composite
backend/uv.lock pypi
  • 209 dependencies
.github/workflows/ds-coverage-comment.yml actions
  • actions/download-artifact v4 composite
  • actions/github-script v7 composite
  • marocchino/sticky-pull-request-comment v3 composite
backend/Dockerfile docker
  • python 3.12-slim build
datascience/pyproject.toml pypi
  • adjusttext >=1.3.0
  • diff-cover >=9.2.0
  • geopandas >=1.1.3
  • ipykernel >=7.1.0
  • joblib >=1.5.2
  • matplotlib >=3.10.7
  • mermaid-cli >=0.1.2
  • mpltern >=1.0.4
  • nbconvert >=7.17.0
  • numpy >=2.3.5
  • openpyxl >=3.1.5
  • pandas >=2.3.3
  • pygam >=0.12.0
  • pytest >=9.0.1
  • pytest-cov >=7.0.0
  • pytest-mock >=3.15.1
  • pyyaml >=6.0.3
  • rasterio >=1.5.0
  • rasterstats >=0.20.0
  • reportlab >=4.4.10
  • ruff >=0.14.5
  • scikit-learn >=1.7.2
  • scipy <1.17
  • seaborn >=0.13.2
  • shapely >=2.1.2
  • statsmodels >=0.14.5
  • xgboost >=3.1.1
.github/workflows/frontend-coverage-comment.yml actions
  • actions/download-artifact v4 composite
  • actions/github-script v7 composite
  • marocchino/sticky-pull-request-comment v3 composite
frontend/package-lock.json npm
  • 688 dependencies
datascience/uv.lock pypi
  • 110 dependencies
frontend/package.json npm
  • @testing-library/dom ^10.4.1 development
  • @testing-library/jest-dom ^6.9.1 development
  • @testing-library/react ^16.3.2 development
  • @testing-library/user-event ^14.6.1 development
  • @types/jsdom ^21.1.7 development
  • @types/leaflet ^1.9.21 development
  • @types/node ^24.0.10 development
  • @types/react ^19.2.14 development
  • @types/react-dom ^19.2.3 development
  • @vitejs/plugin-react ^4.7.0 development
  • @vitest/coverage-v8 ^3.2.4 development
  • copyfiles ^2.4.1 development
  • eslint ^9.30.1 development
  • eslint-config-prettier ^10.1.5 development
  • eslint-plugin-prettier ^5.5.1 development
  • eslint-plugin-react ^7.37.5 development
  • eslint-plugin-react-hooks ^7.1.1 development
  • husky ^9.1.7 development
  • jiti ^2.4.2 development
  • jsdom ^27.4.0 development
  • lint-staged ^16.1.2 development
  • postcss ^8.5.6 development
  • postcss-scss ^4.0.9 development
  • prettier ^3.6.2 development
  • rimraf ^6.0.1 development
  • stylelint ^16.21.1 development
  • stylelint-config-recommended ^16.0.0 development
  • stylelint-config-sass-guidelines ^12.1.0 development
  • stylelint-order ^7.0.0 development
  • stylelint-prettier ^5.0.3 development
  • ts-node ^10.9.2 development
  • typescript ^5.8.3 development
  • typescript-eslint ^8.36.0 development
  • vite ^7.3.1 development
  • vitest ^3.2.4 development
  • contentful ^11.10.2
  • leaflet ^1.9.4
  • lucide-react ^1.14.0
  • react ^19.2.4
  • react-dom ^19.2.4
  • react-error-boundary ^6.1.1
  • react-helmet-async ^3.0.0
  • react-leaflet ^5.0.0
  • react-router-dom ^7.13.1
gis/uv.lock pypi
  • affine 2.4.0
  • attrs 26.1.0
  • certifi 2026.4.22
  • cffi 2.0.0
  • chardet 7.4.3
  • charset-normalizer 3.4.7
  • click 8.3.3
  • cligj 0.7.2
  • colorama 0.4.6
  • contourpy 1.3.3
  • coverage 7.14.0
  • cryptography 48.0.0
  • cycler 0.12.1
  • diff-cover 10.2.0
  • earthengine-api 1.7.26
  • fonttools 4.62.1
  • geopandas 1.1.3
  • gis 0.1.0
  • google-api-core 2.30.3
  • google-api-python-client 2.196.0
  • google-auth 2.52.0
  • google-auth-httplib2 0.4.0
  • google-cloud-core 2.6.0
  • google-cloud-storage 3.10.1
  • google-crc32c 1.8.0
  • google-resumable-media 2.9.0
  • googleapis-common-protos 1.75.0
  • httplib2 0.31.2
  • idna 3.15
  • iniconfig 2.3.0
  • jinja2 3.1.6
  • joblib 1.5.3
  • kiwisolver 1.5.0
  • markupsafe 3.0.3
  • matplotlib 3.10.9
  • numpy 2.4.4
  • packaging 26.2
  • pandas 3.0.3
  • pillow 12.2.0
  • pluggy 1.6.0
  • proto-plus 1.28.0
  • protobuf 7.34.1
  • pyasn1 0.6.3
  • pyasn1-modules 0.4.2
  • pycparser 3.0
  • pygments 2.20.0
  • pyogrio 0.12.1
  • pyparsing 3.3.2
  • pyproj 3.7.2
  • pytest 9.0.3
  • pytest-cov 7.1.0
  • pytest-mock 3.15.1
  • python-dateutil 2.9.0.post0
  • python-dotenv 1.2.2
  • rasterio 1.5.0
  • requests 2.34.0
  • ruff 0.15.12
  • scikit-learn 1.8.0
  • scipy 1.16.3
  • seaborn 0.13.2
  • shapely 2.1.2
  • six 1.17.0
  • threadpoolctl 3.6.0
  • tzdata 2026.2
  • uritemplate 4.2.0
  • urllib3 2.7.0
package-lock.json npm
gis/pyproject.toml pypi

Score: 7.252053951852814