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 12 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: 5 days ago

Total Commits: 293
Total Committers: 15
Avg Commits per committer: 19.533
Development Distribution Score (DDS): 0.481

Commits in past year: 293
Committers in past year: 15
Avg Commits per committer in past year: 19.533
Development Distribution Score (DDS) in past year: 0.481

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

Committer domains:


Issue and Pull Request metadata

Last synced: 2 days ago

Total issues: 93
Total pull requests: 52
Average time to close issues: about 1 month
Average time to close pull requests: 3 days
Total issue authors: 5
Total pull request authors: 9
Average comments per issue: 0.13
Average comments per pull request: 2.73
Merged pull request: 29
Bot issues: 0
Bot pull requests: 0

Past year issues: 93
Past year pull requests: 52
Past year average time to close issues: about 1 month
Past year average time to close pull requests: 3 days
Past year issue authors: 5
Past year pull request authors: 9
Past year average comments per issue: 0.13
Past year average comments per pull request: 2.73
Past year merged pull request: 29
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 (71)
  • leecopland (9)
  • CAHAT0002 (6)
  • Vasmai1610 (4)
  • Chinthika (3)

Top Pull Request Authors

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

Top Issue Labels

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

Top Pull Request Labels


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

Score: 7.26192709270275