{"id":348410,"name":"Planting Optimisation Tool","description":"A data-driven recommendation system designed to support sustainable reforestation and agroforestry planning in Timor-Leste.","url":"https://github.com/chameleon-company/planting-optimisation-tool","last_synced_at":"2026-04-07T09:30:15.636Z","repository":{"id":325313002,"uuid":"1089313147","full_name":"Chameleon-company/Planting-Optimisation-Tool","owner":"Chameleon-company","description":"Developer Repository for Planting Optimisation Tool Project.","archived":false,"fork":false,"pushed_at":"2026-04-03T05:21:09.000Z","size":52488,"stargazers_count":5,"open_issues_count":168,"forks_count":20,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-03T13:25:43.126Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Chameleon-company.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-04T07:09:05.000Z","updated_at":"2026-04-03T05:21:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Chameleon-company/Planting-Optimisation-Tool","commit_stats":null,"previous_names":["chameleon-company/planting-optimisation-tool"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Chameleon-company/Planting-Optimisation-Tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chameleon-company%2FPlanting-Optimisation-Tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chameleon-company%2FPlanting-Optimisation-Tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chameleon-company%2FPlanting-Optimisation-Tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chameleon-company%2FPlanting-Optimisation-Tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Chameleon-company","download_url":"https://codeload.github.com/Chameleon-company/Planting-Optimisation-Tool/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chameleon-company%2FPlanting-Optimisation-Tool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31392188,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T04:26:24.776Z","status":"ssl_error","status_checked_at":"2026-04-04T04:23:34.147Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"Chameleon-company","name":"Chameleon","uuid":"103407139","kind":"organization","description":"","email":null,"website":null,"location":"Australia","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/103407139?v=4","repositories_count":7,"last_synced_at":"2023-03-08T18:50:50.349Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/Chameleon-company","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-18T09:08:32.891Z","updated_at":"2023-03-08T18:50:50.361Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Chameleon-company","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Chameleon-company/repositories"},"packages":[],"commits":{"id":11685968,"full_name":"Chameleon-company/Planting-Optimisation-Tool","default_branch":"master","total_commits":203,"total_committers":15,"total_bot_commits":11,"total_bot_committers":1,"mean_commits":13.533333333333333,"dds":0.40886699507389157,"past_year_total_commits":203,"past_year_total_committers":15,"past_year_total_bot_commits":11,"past_year_total_bot_committers":1,"past_year_mean_commits":13.533333333333333,"past_year_dds":0.40886699507389157,"last_synced_at":"2026-04-04T08:03:46.841Z","last_synced_commit":"d0d95646616d3b66efe84bf5d3c8b83bef4a2940","created_at":"2026-03-14T10:02:04.401Z","updated_at":"2026-04-04T08:03:10.118Z","committers":[{"name":"Lee Copland","email":"lee@leecopland.com","login":"leecopland","count":120},{"name":"Darrin Stephens","email":"dwstephens75@gmail.com","login":"dwstephens","count":31},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":11},{"name":"Thai Duy Vo","email":"vothaiduy0803@gmail.com","login":"DuyVo080303","count":9},{"name":"Felix Hendrawan","email":"felix.hendrawan.2005@gmail.com","login":"FelixHendrawan","count":8},{"name":"Josh Dang","email":"69253231+JoshPDang","login":"JoshPDang","count":6},{"name":"Naresh Barua","email":"69834028+Naresh-Barua","login":"Naresh-Barua","count":5},{"name":"cbasadeakin","email":"126678141+cbasadeakin","login":"cbasadeakin","count":3},{"name":"chenmuy7","email":"166546244+chenmuy7","login":"chenmuy7","count":2},{"name":"Mi Vo","email":"vochautrami.work@gmail.com","login":"mivo1101","count":2},{"name":"Chinthika Rathnayake","email":"chinthika.jayani@gmail.com","login":"Chinthika","count":2},{"name":"swasti-ajmera","email":"swastiajmera246@gmail.com","login":"swasti-ajmera","count":1},{"name":"Vasmai1610","email":"vasmai.1610@gmail.com","login":"Vasmai1610","count":1},{"name":"Tamil5102000","email":"tamilelakkiyaganapathi@gmail.com","login":"Tamil5102000","count":1},{"name":"CAHAT0002","email":"CAHAT0002@gmail.com","login":"CAHAT0002","count":1}],"past_year_committers":[{"name":"Lee Copland","email":"lee@leecopland.com","login":"leecopland","count":120},{"name":"Darrin Stephens","email":"dwstephens75@gmail.com","login":"dwstephens","count":31},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":11},{"name":"Thai Duy Vo","email":"vothaiduy0803@gmail.com","login":"DuyVo080303","count":9},{"name":"Felix Hendrawan","email":"felix.hendrawan.2005@gmail.com","login":"FelixHendrawan","count":8},{"name":"Josh Dang","email":"69253231+JoshPDang","login":"JoshPDang","count":6},{"name":"Naresh Barua","email":"69834028+Naresh-Barua","login":"Naresh-Barua","count":5},{"name":"cbasadeakin","email":"126678141+cbasadeakin","login":"cbasadeakin","count":3},{"name":"chenmuy7","email":"166546244+chenmuy7","login":"chenmuy7","count":2},{"name":"Mi Vo","email":"vochautrami.work@gmail.com","login":"mivo1101","count":2},{"name":"Chinthika Rathnayake","email":"chinthika.jayani@gmail.com","login":"Chinthika","count":2},{"name":"swasti-ajmera","email":"swastiajmera246@gmail.com","login":"swasti-ajmera","count":1},{"name":"Vasmai1610","email":"vasmai.1610@gmail.com","login":"Vasmai1610","count":1},{"name":"Tamil5102000","email":"tamilelakkiyaganapathi@gmail.com","login":"Tamil5102000","count":1},{"name":"CAHAT0002","email":"CAHAT0002@gmail.com","login":"CAHAT0002","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chameleon-company%2FPlanting-Optimisation-Tool/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-06T00:00:08.903Z","repositories_count":6211379,"commits_count":922116282,"contributors_count":35690388,"owners_count":1143713,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"Chameleon-company/Planting-Optimisation-Tool","html_url":"https://github.com/Chameleon-company/Planting-Optimisation-Tool","last_synced_at":"2026-04-03T10:05:15.278Z","status":null,"issues_count":29,"pull_requests_count":18,"avg_time_to_close_issue":2087165.1666666667,"avg_time_to_close_pull_request":293266.0,"issues_closed_count":18,"pull_requests_closed_count":11,"pull_request_authors_count":8,"issue_authors_count":2,"avg_comments_per_issue":0.3793103448275862,"avg_comments_per_pull_request":3.0,"merged_pull_requests_count":10,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":29,"past_year_pull_requests_count":18,"past_year_avg_time_to_close_issue":2087165.1666666667,"past_year_avg_time_to_close_pull_request":293266.0,"past_year_issues_closed_count":18,"past_year_pull_requests_closed_count":11,"past_year_pull_request_authors_count":8,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":0.3793103448275862,"past_year_avg_comments_per_pull_request":3.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":10,"created_at":"2025-11-10T11:00:10.754Z","updated_at":"2026-04-03T10:05:15.278Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chameleon-company%2FPlanting-Optimisation-Tool","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chameleon-company%2FPlanting-Optimisation-Tool/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{"COLLABORATOR":29},"pull_request_author_associations_count":{"COLLABORATOR":17,"CONTRIBUTOR":1},"issue_authors":{"dwstephens":28,"Chinthika":1},"pull_request_authors":{"leecopland":8,"dwstephens":3,"Naresh-Barua":2,"Tamil5102000":1,"JoshPDang":1,"FelixHendrawan":1,"Chinthika":1,"Vasmai1610":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-06T00:00:09.270Z","repositories_count":14101833,"issues_count":34422643,"pull_requests_count":112354408,"authors_count":11227327,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"COLLABORATOR":29},"past_year_pull_request_author_associations_count":{"COLLABORATOR":17,"CONTRIBUTOR":1},"past_year_issue_authors":{"dwstephens":28,"Chinthika":1},"past_year_pull_request_authors":{"leecopland":8,"dwstephens":3,"Naresh-Barua":2,"Chinthika":1,"FelixHendrawan":1,"JoshPDang":1,"Tamil5102000":1,"Vasmai1610":1},"maintainers":[{"login":"dwstephens","count":31,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dwstephens"},{"login":"leecopland","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/leecopland"},{"login":"Naresh-Barua","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Naresh-Barua"},{"login":"Chinthika","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Chinthika"},{"login":"FelixHendrawan","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/FelixHendrawan"},{"login":"Vasmai1610","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Vasmai1610"},{"login":"Tamil5102000","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Tamil5102000"}],"active_maintainers":[{"login":"dwstephens","count":31,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/dwstephens"},{"login":"leecopland","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/leecopland"},{"login":"Chinthika","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Chinthika"},{"login":"Naresh-Barua","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Naresh-Barua"},{"login":"FelixHendrawan","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/FelixHendrawan"},{"login":"Tamil5102000","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Tamil5102000"},{"login":"Vasmai1610","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Vasmai1610"}]},"events":{"total":{"DeleteEvent":9,"MemberEvent":3,"PullRequestEvent":108,"ForkEvent":4,"IssuesEvent":111,"WatchEvent":3,"IssueCommentEvent":62,"PushEvent":88,"PullRequestReviewCommentEvent":86,"PullRequestReviewEvent":91,"CreateEvent":6},"last_year":{"DeleteEvent":9,"MemberEvent":3,"PullRequestEvent":108,"ForkEvent":4,"IssuesEvent":111,"WatchEvent":3,"IssueCommentEvent":62,"PushEvent":88,"PullRequestReviewCommentEvent":86,"PullRequestReviewEvent":91,"CreateEvent":6}},"keywords":[],"dependencies":[],"score":7.861341795599989,"created_at":"2026-03-14T10:02:05.041Z","updated_at":"2026-04-07T09:30:15.638Z","avatar_url":"https://github.com/Chameleon-company.png","language":"Jupyter Notebook","category":"Biosphere","sub_category":"Deforestation and Reforestation","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# Planting Optimisation Tool\n[![POT frontend infrastructure](https://github.com/Chameleon-company/Planting-Optimisation-Tool/actions/workflows/frontend-ci.yml/badge.svg)](https://github.com/Chameleon-company/Planting-Optimisation-Tool/actions/workflows/frontend-ci.yml)\n[![POT Back-end Testing](https://github.com/Chameleon-company/Planting-Optimisation-Tool/actions/workflows/backend-ci.yml/badge.svg)](https://github.com/Chameleon-company/Planting-Optimisation-Tool/actions/workflows/backend-ci.yml)\n\n[![POT Data Science Testing](https://github.com/Chameleon-company/Planting-Optimisation-Tool/actions/workflows/ds-ci.yml/badge.svg)](https://github.com/Chameleon-company/Planting-Optimisation-Tool/actions/workflows/ds-ci.yml)\n[![POT GIS Testing](https://github.com/Chameleon-company/Planting-Optimisation-Tool/actions/workflows/gis-ci.yml/badge.svg)](https://github.com/Chameleon-company/Planting-Optimisation-Tool/actions/workflows/gis-ci.yml)\n\nA 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.\n\nThis project is developed in collaboration with the xPand Foundation under the Rai Matak Program.\n\nFor contribution guidelines and to get started working on the project, see [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## Purpose\n\nSmallholder 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:\n\n- Analysing farm-level conditions (rainfall, soil pH, elevation, temperature, slope, area);\n- Matching farms with optimal, cautionary, and unsuitable tree species;\n- Explaining limiting factors that may affect survival;\n- Generating simple, accessible reports for field officers and supervisors.\n\n## Core Features\n\n### Species Recommendation\n- Suitability scoring based on rainfall, pH, temperature, elevation, soil class, and other variables.  \n- Automatic exclusion of species that cannot survive under the farm’s limiting conditions.  \n- Identification of key limiting factors for each species.\n\n### Environmental Profiling\n- Extraction of environmental variables from geospatial datasets (e.g., rainfall, elevation, soil).  \n- Integration with national datasets such as Seeds of Life.  \n- Farm-level environmental profiles for decision support.\n\n### Sapling Estimation\n- Calculates recommended sapling count based on farm area, terrain, planting profile (e.g. 3m × 3m spacing).\n\n### User-Facing Web Interface\n- Input forms for farm conditions.  \n- Dashboards showing suitable, cautionary, and excluded species.  \n- Visual indicators highlighting limiting environmental factors.  \n- PDF report generation with species images and charts.  \n- Mobile-friendly layout for field use.\n\n## Technology Stack\n\n### Backend\n- **FastAPI**, **Python**\n- **PostgreSQL / PostGIS**\n- **Docker**\n\n### Frontend\n- **React** (Vite)\n- Responsive UI, dashboards, forms, PDF report generation\n\n### Data Science / ML\n- **NumPy**, **Pandas**, **scikit-learn**\n- Suitability scoring models  \n- Farm archetypes and plant functional types  \n- Exploratory and predictive modelling\n\n### GIS / Remote Sensing\n- **QGIS**, **GDAL**, **Rasterio**, **GeoPandas**\n- Extraction of rainfall, soil, elevation, and temperature layers  \n- Spatial aggregation for farm-level profile generation\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/348410","html_url":"https://ost.ecosyste.ms/projects/348410"}