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 3 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.
  • Expert-driven weighting using AHP.
  • Data-driven and hybrid weight calculation.
  • Species-specific exclusion rules.
  • Exclusion rule and dependency management.
  • Biological dependency enforcement.
  • Ecological function integration.
  • Species management through the API and user interface.

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.
  • DEM data integration and result storage.
  • GEE baseline analysis.
  • Farm spatial visualisation.
  • Riparian zone identification.
  • Environmental data imputation and data flagging.

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.
  • Interactive single-farm sapling estimator.
  • Sapling estimation algorithm performance optimisation.
  • Riparian calculation improvements.

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.
  • Farm record management UI.
  • Farm spatial visualisation.
  • Species management UI.
  • Compatibility matrix editor UI.
  • Exclusion rules and dependencies UI.
  • Admin dashboard foundation and core settings.
  • Confirmation dialog before deleting a farm.

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
  • Farm record management.
  • Farm spatial visualisation.
  • Species management.
  • Compatibility matrix management.
  • Exclusion rules and dependency management.
  • Admin dashboard and core settings.

Data Science / ML Features

  • Suitability scoring models
  • Farm archetypes and plant functional types
  • Exploratory and predictive modelling
  • Expert-driven weight calculation using AHP.
  • Data-driven and hybrid weight calculation.
  • ML-based environmental data imputation.
  • Survivability model data remediation and baseline retraining.
  • Survivability model training logic improvements.
  • Survivability model feature engineering.
  • Growth model development.

GIS / Remote Sensing

  • Extraction of rainfall, soil, elevation, slope, and temperature layers from raster and geospatial datasets
  • Spatial aggregation for farm-level profile generation
  • DEM data integration and results storing.
  • GEE baseline analysis.
  • Riparian zone identification.
  • Farm spatial visualisation.

Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 1 day ago

Total Commits: 326
Total Committers: 20
Avg Commits per committer: 16.3
Development Distribution Score (DDS): 0.534

Commits in past year: 326
Committers in past year: 20
Avg Commits per committer in past year: 16.3
Development Distribution Score (DDS) in past year: 0.534

Name Email Commits
Lee Copland l****e@l****m 152
Darrin Stephens d****5@g****m 49
Naresh Barua 6****a 27
Chinthika Rathnayake c****i@g****m 16
CAHAT0002 C****2@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
Tamil5102000 t****i@g****m 5
Rachith2005 r****t@g****m 4
Vasmai1610 v****0@g****m 4
cbasadeakin 1****n 3
swasti-ajmera s****6@g****m 3
JohnMS-IT s****2@d****u 2
Mi Vo v****k@g****m 2
Nyanashi4849 b****6@g****m 2
chenmuy7 1****7 2
Manshi m****4@g****m 1
hav717 1****7 1

Committer domains:


Issue and Pull Request metadata

Last synced: 1 day ago

Total issues: 122
Total pull requests: 79
Average time to close issues: 2 months
Average time to close pull requests: 4 days
Total issue authors: 6
Total pull request authors: 14
Average comments per issue: 0.13
Average comments per pull request: 2.46
Merged pull request: 53
Bot issues: 0
Bot pull requests: 0

Past year issues: 122
Past year pull requests: 79
Past year average time to close issues: 2 months
Past year average time to close pull requests: 4 days
Past year issue authors: 6
Past year pull request authors: 14
Past year average comments per issue: 0.13
Past year average comments per pull request: 2.46
Past year merged pull request: 53
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 (83)
  • CAHAT0002 (15)
  • leecopland (11)
  • Chinthika (7)
  • Vasmai1610 (4)
  • JohnMS-IT (2)

Top Pull Request Authors

  • Naresh-Barua (15)
  • leecopland (15)
  • dwstephens (10)
  • Chinthika (10)
  • CAHAT0002 (6)
  • JoshPDang (4)
  • Nyanashi4849 (3)
  • Tamil5102000 (3)
  • Vasmai1610 (3)
  • Rachith2005 (3)
  • Lightsm (2)
  • JohnMS-IT (2)
  • FelixHendrawan (2)
  • hav717 (1)

Top Issue Labels

  • backend (13)
  • frontend (8)
  • bug (6)
  • 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/pyproject.toml pypi

Score: 7.3395376954076745