{"id":75173,"name":"terraso-backend","description":"A Django project that powers the backend of Terraso platform.","url":"https://github.com/techmatters/terraso-backend","last_synced_at":"2025-09-08T16:29:44.383Z","repository":{"id":38172595,"uuid":"428864575","full_name":"techmatters/terraso-backend","owner":"techmatters","description":"A Django project that powers the backend of Terraso platform.","archived":false,"fork":false,"pushed_at":"2025-09-02T06:35:36.000Z","size":5688,"stargazers_count":20,"open_issues_count":77,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-02T09:52:13.436Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/techmatters.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}},"created_at":"2021-11-17T01:04:13.000Z","updated_at":"2025-08-28T16:24:40.000Z","dependencies_parsed_at":"2024-01-22T19:34:21.538Z","dependency_job_id":"d6bd9568-c452-4b1b-a636-365858a36381","html_url":"https://github.com/techmatters/terraso-backend","commit_stats":{"total_commits":1091,"total_committers":16,"mean_commits":68.1875,"dds":0.4207149404216315,"last_synced_commit":"74fc2fc640d86729ecacc74d6d450e0e5657173a"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/techmatters/terraso-backend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techmatters%2Fterraso-backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techmatters%2Fterraso-backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techmatters%2Fterraso-backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techmatters%2Fterraso-backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/techmatters","download_url":"https://codeload.github.com/techmatters/terraso-backend/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techmatters%2Fterraso-backend/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274207936,"owners_count":25241524,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"techmatters","name":"Tech Matters","uuid":"53062258","kind":"organization","description":"We help social change leaders understand what tech can and can’t do, and build the tech solutions behind solving a social problem.","email":null,"website":"https://techmatters.org/","location":null,"twitter":"techmatters","company":null,"icon_url":"https://avatars.githubusercontent.com/u/53062258?v=4","repositories_count":31,"last_synced_at":"2024-04-28T03:07:07.876Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/techmatters","funding_links":[],"total_stars":63,"followers":39,"following":0,"created_at":"2022-11-14T09:02:18.450Z","updated_at":"2024-04-28T03:07:12.190Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/techmatters","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/techmatters/repositories"},"packages":[],"commits":{"id":1254581,"full_name":"techmatters/terraso-backend","default_branch":"main","committers":[{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":790},{"name":"Paul Schreiber","email":"paul@techmatters.org","login":"paulschreiber","count":227},{"name":"Caio Carrara","email":"cacarrara","login":"cacarrara","count":104},{"name":"Jose Buitron","email":"jose.buitron@gmail.com","login":"josebui","count":60},{"name":"David Code Howard","email":"david@techmatters.org","login":"david-code","count":50},{"name":"garo (they/them)","email":"3411715+shrouxm","login":"shrouxm","count":42},{"name":"Jodie Zhu","email":"82774370+jodiezhuu","login":"jodiezhuu","count":14},{"name":"Carissa Knipe","email":"carissa@techmatters.org","login":"knipec","count":11},{"name":"Jeancarlo Barrios","email":"JeancarloBarrios","login":"JeancarloBarrios","count":5},{"name":"ajabeckett","email":"31599074+ajabeckett","login":"ajabeckett","count":4},{"name":"tm-ruxandra","email":"ruxandra@techmatters.org","login":"tm-ruxandra","count":4},{"name":"Andrew Carter","email":"68627532+plentydone","login":"plentydone","count":2},{"name":"Caio Carrara","email":"caio@techmatters.org","login":"caiocarrara","count":2},{"name":"garo (they/them)","email":"3411715+garobrik","login":"garobrik","count":2},{"name":"Paul Schreiber","email":"paul@technmatters.org","login":null,"count":2},{"name":"Robert Bo Davis","email":"bo@interrobang.consulting","login":"robert-bo-davis","count":1}],"total_commits":1320,"total_committers":16,"total_bot_commits":790,"total_bot_committers":1,"mean_commits":82.5,"dds":0.4015151515151515,"past_year_committers":[{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":196},{"name":"Paul Schreiber","email":"paul@techmatters.org","login":"paulschreiber","count":73},{"name":"garo (they/them)","email":"3411715+shrouxm","login":"shrouxm","count":8},{"name":"Carissa Knipe","email":"carissa@techmatters.org","login":"knipec","count":5},{"name":"Jose Buitron","email":"jose.buitron@gmail.com","login":"josebui","count":4},{"name":"garo (they/them)","email":"3411715+garobrik","login":"garobrik","count":2},{"name":"tm-ruxandra","email":"ruxandra@techmatters.org","login":"tm-ruxandra","count":1}],"past_year_total_commits":289,"past_year_total_committers":7,"past_year_total_bot_commits":196,"past_year_total_bot_committers":1,"past_year_mean_commits":41.285714285714285,"past_year_dds":0.32179930795847755,"last_synced_at":"2025-09-02T09:53:03.897Z","last_synced_commit":"ad0ef33b35913c100cb8927011306a066074887f","created_at":"2023-03-27T11:49:52.256Z","updated_at":"2025-09-02T09:53:06.839Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/techmatters%2Fterraso-backend/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-02T00:00:07.521Z","repositories_count":5480031,"commits_count":853395369,"contributors_count":31098267,"owners_count":906561,"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":"techmatters/terraso-backend","html_url":"https://github.com/techmatters/terraso-backend","last_synced_at":"2025-09-05T05:33:07.394Z","status":null,"issues_count":239,"pull_requests_count":2006,"avg_time_to_close_issue":6980066.431818182,"avg_time_to_close_pull_request":324706.8383458647,"issues_closed_count":176,"pull_requests_closed_count":1862,"pull_request_authors_count":14,"issue_authors_count":14,"avg_comments_per_issue":0.7656903765690377,"avg_comments_per_pull_request":0.24277168494516452,"merged_pull_requests_count":1573,"bot_issues_count":9,"bot_pull_requests_count":1302,"past_year_issues_count":28,"past_year_pull_requests_count":549,"past_year_avg_time_to_close_issue":1300232.4,"past_year_avg_time_to_close_pull_request":373584.91780821915,"past_year_issues_closed_count":15,"past_year_pull_requests_closed_count":438,"past_year_pull_request_authors_count":7,"past_year_issue_authors_count":6,"past_year_avg_comments_per_issue":0.39285714285714285,"past_year_avg_comments_per_pull_request":0.12932604735883424,"past_year_bot_issues_count":6,"past_year_bot_pull_requests_count":392,"past_year_merged_pull_requests_count":361,"created_at":"2023-05-09T10:35:03.667Z","updated_at":"2025-09-05T05:33:07.396Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/techmatters%2Fterraso-backend","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/techmatters%2Fterraso-backend/issues","issue_labels_count":{"landpks":58,"Engineering":43,"tech-debt":30,"slim MVP":24,"High":17,"enhancement":12,"site creation":10,"Medium":10,"python":9,"dependencies":9,"project management":7,"good first issue":6,"bug":6,"profiles":6,"1000L":6,"audit log":5,"Low":3,"needs triage":2,"kobotoolbox":1,"testing":1,"stale":1,"Capri MVP":1,"Research":1},"pull_request_labels_count":{"dependencies":1302,"python":1172,"blocked":66,"github_actions":8,"Engineering":1},"issue_author_associations_count":{"CONTRIBUTOR":101,"MEMBER":84,"NONE":42,"COLLABORATOR":12},"pull_request_author_associations_count":{"CONTRIBUTOR":1561,"MEMBER":387,"COLLABORATOR":52,"NONE":6},"issue_authors":{"david-code":64,"paulschreiber":40,"shrouxm":39,"ltseng":28,"caiocarrara":20,"josebui":13,"DerekCaelin":12,"dependabot[bot]":9,"garobrik":5,"JeancarloBarrios":3,"Hanal-code":2,"knipec":2,"tm-ruxandra":1,"robert-bo-davis":1},"pull_request_authors":{"dependabot[bot]":1302,"paulschreiber":317,"caiocarrara":114,"josebui":82,"shrouxm":67,"david-code":59,"knipec":22,"jodiezhuu":12,"JeancarloBarrios":9,"tm-ruxandra":7,"ajabeckett":6,"robert-bo-davis":4,"garobrik":3,"plentydone":2},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-05T00:00:10.444Z","repositories_count":10100117,"issues_count":31473266,"pull_requests_count":97445500,"authors_count":10702683,"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":{"Engineering":18,"tech-debt":8,"dependencies":6,"python":6,"bug":2,"enhancement":1,"needs triage":1},"past_year_pull_request_labels_count":{"dependencies":392,"python":388,"blocked":32,"github_actions":4},"past_year_issue_author_associations_count":{"MEMBER":16,"CONTRIBUTOR":8,"NONE":4},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":412,"MEMBER":137},"past_year_issue_authors":{"shrouxm":12,"dependabot[bot]":6,"DerekCaelin":4,"garobrik":2,"knipec":2,"paulschreiber":2},"past_year_pull_request_authors":{"dependabot[bot]":392,"paulschreiber":119,"shrouxm":15,"knipec":10,"josebui":8,"garobrik":3,"tm-ruxandra":2},"maintainers":[{"login":"paulschreiber","count":357,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/paulschreiber"},{"login":"shrouxm","count":106,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/shrouxm"},{"login":"josebui","count":64,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/josebui"},{"login":"garobrik","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/garobrik"}],"active_maintainers":[{"login":"paulschreiber","count":121,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/paulschreiber"},{"login":"shrouxm","count":27,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/shrouxm"},{"login":"garobrik","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/garobrik"}]},"events":{"total":{"IssuesEvent":30,"WatchEvent":1,"DeleteEvent":213,"IssueCommentEvent":71,"PushEvent":374,"PullRequestReviewCommentEvent":69,"PullRequestReviewEvent":247,"PullRequestEvent":442,"ForkEvent":1,"CreateEvent":231},"last_year":{"IssuesEvent":30,"WatchEvent":1,"DeleteEvent":213,"IssueCommentEvent":71,"PushEvent":374,"PullRequestReviewCommentEvent":69,"PullRequestReviewEvent":247,"PullRequestEvent":442,"ForkEvent":1,"CreateEvent":231}},"keywords":[],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/build.yml","sha":null,"kind":"manifest","created_at":"2023-02-16T09:31:35.630Z","updated_at":"2023-02-16T09:31:35.630Z","repository_link":"https://github.com/techmatters/terraso-backend/blob/main/.github/workflows/build.yml","dependencies":[{"id":7709940349,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7709940350,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/check-commits.yml","sha":null,"kind":"manifest","created_at":"2023-02-16T09:31:35.906Z","updated_at":"2023-02-16T09:31:35.906Z","repository_link":"https://github.com/techmatters/terraso-backend/blob/main/.github/workflows/check-commits.yml","dependencies":[{"id":7709944877,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7709944878,"package_name":"agenthunt/conventional-commit-checker-action","ecosystem":"actions","requirements":"v1.0.0","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"Dockerfile","sha":null,"kind":"manifest","created_at":"2023-02-16T09:31:36.025Z","updated_at":"2023-02-16T09:31:36.025Z","repository_link":"https://github.com/techmatters/terraso-backend/blob/main/Dockerfile","dependencies":[{"id":7709946309,"package_name":"python","ecosystem":"docker","requirements":"3.11.1-slim-bullseye","direct":true,"kind":"build","optional":false}]},{"ecosystem":"pypi","filepath":"requirements/base.in","sha":null,"kind":"manifest","created_at":"2023-02-16T09:31:36.236Z","updated_at":"2023-02-16T09:31:36.236Z","repository_link":"https://github.com/techmatters/terraso-backend/blob/main/requirements/base.in","dependencies":[{"id":7709948061,"package_name":"graphene-django","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948062,"package_name":"httpx","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948063,"package_name":"django","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948064,"package_name":"django-cors-headers","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948065,"package_name":"django-filter","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948066,"package_name":"django-oauth-toolkit","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948103,"package_name":"django-safedelete","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948104,"package_name":"django-storages","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948105,"package_name":"django-structlog","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948106,"package_name":"django-dirtyfields","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948107,"package_name":"dj-database-url","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948108,"package_name":"prettyconf","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948109,"package_name":"psycopg2","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948110,"package_name":"pyjwt","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948111,"package_name":"python-magic","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948112,"package_name":"rules","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948113,"package_name":"boto3","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948114,"package_name":"pyproj","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948115,"package_name":"shapely","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709948116,"package_name":"geopandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"requirements/deploy.in","sha":null,"kind":"manifest","created_at":"2023-02-16T09:31:36.429Z","updated_at":"2023-02-16T09:31:36.429Z","repository_link":"https://github.com/techmatters/terraso-backend/blob/main/requirements/deploy.in","dependencies":[{"id":7709950395,"package_name":"ddtrace","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":7709950429,"package_name":"gunicorn","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"requirements/dev.in","sha":null,"kind":"manifest","created_at":"2023-02-16T09:31:36.486Z","updated_at":"2023-02-16T09:31:36.486Z","repository_link":"https://github.com/techmatters/terraso-backend/blob/main/requirements/dev.in","dependencies":[{"id":7709951392,"package_name":"black","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":7709951393,"package_name":"flake8","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":7709951394,"package_name":"freezegun","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":7709951395,"package_name":"ipdb","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":7709951396,"package_name":"isort","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":7709951397,"package_name":"mixer","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":7709951419,"package_name":"moto","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":7709951420,"package_name":"pytest","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":7709951421,"package_name":"pytest-cov","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":7709951422,"package_name":"pytest-django","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false},{"id":7709951423,"package_name":"respx","ecosystem":"pypi","requirements":"*","direct":true,"kind":"development","optional":false}]},{"ecosystem":"pypi","filepath":"requirements-dev.txt","sha":null,"kind":"manifest","created_at":"2023-02-16T09:31:36.575Z","updated_at":"2023-02-16T09:31:36.575Z","repository_link":"https://github.com/techmatters/terraso-backend/blob/main/requirements-dev.txt","dependencies":[{"id":7709951515,"package_name":"anyio","ecosystem":"pypi","requirements":"==3.6.2","direct":true,"kind":"development","optional":false},{"id":7709951516,"package_name":"appnope","ecosystem":"pypi","requirements":"==0.1.3","direct":true,"kind":"development","optional":false},{"id":7709951517,"package_name":"asttokens","ecosystem":"pypi","requirements":"==2.2.1","direct":true,"kind":"development","optional":false},{"id":7709951518,"package_name":"attrs","ecosystem":"pypi","requirements":"==22.2.0","direct":true,"kind":"development","optional":false},{"id":7709951519,"package_name":"backcall","ecosystem":"pypi","requirements":"==0.2.0","direct":true,"kind":"development","optional":false},{"id":7709951520,"package_name":"black","ecosystem":"pypi","requirements":"==23.1.0","direct":true,"kind":"development","optional":false},{"id":7709951521,"package_name":"boto3","ecosystem":"pypi","requirements":"==1.26.64","direct":true,"kind":"development","optional":false},{"id":7709951522,"package_name":"botocore","ecosystem":"pypi","requirements":"==1.29.69","direct":true,"kind":"development","optional":false},{"id":7709951523,"package_name":"certifi","ecosystem":"pypi","requirements":"==2022.12.7","direct":true,"kind":"development","optional":false},{"id":7709951524,"package_name":"cffi","ecosystem":"pypi","requirements":"==1.15.1","direct":true,"kind":"development","optional":false},{"id":7709951525,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"==3.0.1","direct":true,"kind":"development","optional":false},{"id":7709951526,"package_name":"click","ecosystem":"pypi","requirements":"==8.1.3","direct":true,"kind":"development","optional":false},{"id":7709951527,"package_name":"coverage","ecosystem":"pypi","requirements":"==7.1.0","direct":true,"kind":"development","optional":false},{"id":7709951528,"package_name":"cryptography","ecosystem":"pypi","requirements":"==39.0.1","direct":true,"kind":"development","optional":false},{"id":7709951529,"package_name":"decorator","ecosystem":"pypi","requirements":"==5.1.1","direct":true,"kind":"development","optional":false},{"id":7709951530,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"==1.1.0","direct":true,"kind":"development","optional":false},{"id":7709951531,"package_name":"executing","ecosystem":"pypi","requirements":"==1.2.0","direct":true,"kind":"development","optional":false},{"id":7709951532,"package_name":"faker","ecosystem":"pypi","requirements":"==12.0.1","direct":true,"kind":"development","optional":false},{"id":7709951533,"package_name":"flake8","ecosystem":"pypi","requirements":"==6.0.0","direct":true,"kind":"development","optional":false},{"id":7709951534,"package_name":"freezegun","ecosystem":"pypi","requirements":"==1.2.2","direct":true,"kind":"development","optional":false},{"id":7709951535,"package_name":"h11","ecosystem":"pypi","requirements":"==0.14.0","direct":true,"kind":"development","optional":false},{"id":7709951536,"package_name":"httpcore","ecosystem":"pypi","requirements":"==0.16.3","direct":true,"kind":"development","optional":false},{"id":7709951537,"package_name":"httpx","ecosystem":"pypi","requirements":"==0.23.3","direct":true,"kind":"development","optional":false},{"id":7709951538,"package_name":"idna","ecosystem":"pypi","requirements":"==3.4","direct":true,"kind":"development","optional":false},{"id":7709951539,"package_name":"iniconfig","ecosystem":"pypi","requirements":"==2.0.0","direct":true,"kind":"development","optional":false},{"id":7709951540,"package_name":"ipdb","ecosystem":"pypi","requirements":"==0.13.11","direct":true,"kind":"development","optional":false},{"id":7709951541,"package_name":"ipython","ecosystem":"pypi","requirements":"==8.10.0","direct":true,"kind":"development","optional":false},{"id":7709951542,"package_name":"isort","ecosystem":"pypi","requirements":"==5.12.0","direct":true,"kind":"development","optional":false},{"id":7709951543,"package_name":"jedi","ecosystem":"pypi","requirements":"==0.18.2","direct":true,"kind":"development","optional":false},{"id":7709951544,"package_name":"jinja2","ecosystem":"pypi","requirements":"==3.1.2","direct":true,"kind":"development","optional":false},{"id":7709951545,"package_name":"jmespath","ecosystem":"pypi","requirements":"==1.0.1","direct":true,"kind":"development","optional":false},{"id":7709951546,"package_name":"markupsafe","ecosystem":"pypi","requirements":"==2.1.2","direct":true,"kind":"development","optional":false},{"id":7709951547,"package_name":"matplotlib-inline","ecosystem":"pypi","requirements":"==0.1.6","direct":true,"kind":"development","optional":false},{"id":7709951548,"package_name":"mccabe","ecosystem":"pypi","requirements":"==0.7.0","direct":true,"kind":"development","optional":false},{"id":7709951549,"package_name":"mixer","ecosystem":"pypi","requirements":"==7.2.2","direct":true,"kind":"development","optional":false},{"id":7709951550,"package_name":"moto","ecosystem":"pypi","requirements":"==4.1.2","direct":true,"kind":"development","optional":false},{"id":7709951551,"package_name":"mypy-extensions","ecosystem":"pypi","requirements":"==1.0.0","direct":true,"kind":"development","optional":false},{"id":7709951552,"package_name":"packaging","ecosystem":"pypi","requirements":"==23.0","direct":true,"kind":"development","optional":false},{"id":7709951553,"package_name":"parso","ecosystem":"pypi","requirements":"==0.8.3","direct":true,"kind":"development","optional":false},{"id":7709951554,"package_name":"pathspec","ecosystem":"pypi","requirements":"==0.11.0","direct":true,"kind":"development","optional":false},{"id":7709951555,"package_name":"pexpect","ecosystem":"pypi","requirements":"==4.8.0","direct":true,"kind":"development","optional":false},{"id":7709951556,"package_name":"pickleshare","ecosystem":"pypi","requirements":"==0.7.5","direct":true,"kind":"development","optional":false},{"id":7709951557,"package_name":"platformdirs","ecosystem":"pypi","requirements":"==3.0.0","direct":true,"kind":"development","optional":false},{"id":7709951558,"package_name":"pluggy","ecosystem":"pypi","requirements":"==1.0.0","direct":true,"kind":"development","optional":false},{"id":7709951559,"package_name":"prompt-toolkit","ecosystem":"pypi","requirements":"==3.0.36","direct":true,"kind":"development","optional":false},{"id":7709951560,"package_name":"ptyprocess","ecosystem":"pypi","requirements":"==0.7.0","direct":true,"kind":"development","optional":false},{"id":7709951561,"package_name":"pure-eval","ecosystem":"pypi","requirements":"==0.2.2","direct":true,"kind":"development","optional":false},{"id":7709951562,"package_name":"pycodestyle","ecosystem":"pypi","requirements":"==2.10.0","direct":true,"kind":"development","optional":false},{"id":7709951563,"package_name":"pycparser","ecosystem":"pypi","requirements":"==2.21","direct":true,"kind":"development","optional":false},{"id":7709951564,"package_name":"pyflakes","ecosystem":"pypi","requirements":"==3.0.1","direct":true,"kind":"development","optional":false},{"id":7709951565,"package_name":"pygments","ecosystem":"pypi","requirements":"==2.14.0","direct":true,"kind":"development","optional":false},{"id":7709951566,"package_name":"pytest","ecosystem":"pypi","requirements":"==7.2.1","direct":true,"kind":"development","optional":false},{"id":7709951567,"package_name":"pytest-cov","ecosystem":"pypi","requirements":"==4.0.0","direct":true,"kind":"development","optional":false},{"id":7709951568,"package_name":"pytest-django","ecosystem":"pypi","requirements":"==4.5.2","direct":true,"kind":"development","optional":false},{"id":7709951569,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"==2.8.2","direct":true,"kind":"development","optional":false},{"id":7709951570,"package_name":"requests","ecosystem":"pypi","requirements":"==2.28.2","direct":true,"kind":"development","optional":false},{"id":7709951571,"package_name":"responses","ecosystem":"pypi","requirements":"==0.22.0","direct":true,"kind":"development","optional":false},{"id":7709951572,"package_name":"respx","ecosystem":"pypi","requirements":"==0.20.1","direct":true,"kind":"development","optional":false},{"id":7709951573,"package_name":"rfc3986","ecosystem":"pypi","requirements":"==1.5.0","direct":true,"kind":"development","optional":false},{"id":7709951574,"package_name":"s3transfer","ecosystem":"pypi","requirements":"==0.6.0","direct":true,"kind":"development","optional":false},{"id":7709951575,"package_name":"six","ecosystem":"pypi","requirements":"==1.16.0","direct":true,"kind":"development","optional":false},{"id":7709951576,"package_name":"sniffio","ecosystem":"pypi","requirements":"==1.3.0","direct":true,"kind":"development","optional":false},{"id":7709951577,"package_name":"stack-data","ecosystem":"pypi","requirements":"==0.6.2","direct":true,"kind":"development","optional":false},{"id":7709951578,"package_name":"toml","ecosystem":"pypi","requirements":"==0.10.2","direct":true,"kind":"development","optional":false},{"id":7709951579,"package_name":"tomli","ecosystem":"pypi","requirements":"==2.0.1","direct":true,"kind":"development","optional":false},{"id":7709951580,"package_name":"traitlets","ecosystem":"pypi","requirements":"==5.9.0","direct":true,"kind":"development","optional":false},{"id":7709951581,"package_name":"types-toml","ecosystem":"pypi","requirements":"==0.10.8.3","direct":true,"kind":"development","optional":false},{"id":7709951582,"package_name":"urllib3","ecosystem":"pypi","requirements":"==1.26.14","direct":true,"kind":"development","optional":false},{"id":7709951583,"package_name":"wcwidth","ecosystem":"pypi","requirements":"==0.2.6","direct":true,"kind":"development","optional":false},{"id":7709951584,"package_name":"werkzeug","ecosystem":"pypi","requirements":"==2.2.3","direct":true,"kind":"development","optional":false},{"id":7709951585,"package_name":"xmltodict","ecosystem":"pypi","requirements":"==0.13.0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"lockfile","created_at":"2023-02-16T09:31:36.661Z","updated_at":"2023-02-16T09:31:36.661Z","repository_link":"https://github.com/techmatters/terraso-backend/blob/main/requirements.txt","dependencies":[{"id":7709951605,"package_name":"aniso8601","ecosystem":"pypi","requirements":"==9.0.1","direct":false,"kind":"runtime","optional":false},{"id":7709951606,"package_name":"anyio","ecosystem":"pypi","requirements":"==3.6.2","direct":false,"kind":"runtime","optional":false},{"id":7709951607,"package_name":"asgiref","ecosystem":"pypi","requirements":"==3.6.0","direct":false,"kind":"runtime","optional":false},{"id":7709951608,"package_name":"attrs","ecosystem":"pypi","requirements":"==22.2.0","direct":false,"kind":"runtime","optional":false},{"id":7709951609,"package_name":"boto3","ecosystem":"pypi","requirements":"==1.26.64","direct":false,"kind":"runtime","optional":false},{"id":7709951610,"package_name":"botocore","ecosystem":"pypi","requirements":"==1.29.69","direct":false,"kind":"runtime","optional":false},{"id":7709951611,"package_name":"bytecode","ecosystem":"pypi","requirements":"==0.14.0","direct":false,"kind":"runtime","optional":false},{"id":7709951612,"package_name":"cattrs","ecosystem":"pypi","requirements":"==22.2.0","direct":false,"kind":"runtime","optional":false},{"id":7709951613,"package_name":"certifi","ecosystem":"pypi","requirements":"==2022.12.7","direct":false,"kind":"runtime","optional":false},{"id":7709951614,"package_name":"cffi","ecosystem":"pypi","requirements":"==1.15.1","direct":false,"kind":"runtime","optional":false},{"id":7709951615,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"==3.0.1","direct":false,"kind":"runtime","optional":false},{"id":7709951616,"package_name":"click","ecosystem":"pypi","requirements":"==8.1.3","direct":false,"kind":"runtime","optional":false},{"id":7709951617,"package_name":"click-plugins","ecosystem":"pypi","requirements":"==1.1.1","direct":false,"kind":"runtime","optional":false},{"id":7709951618,"package_name":"cligj","ecosystem":"pypi","requirements":"==0.7.2","direct":false,"kind":"runtime","optional":false},{"id":7709951619,"package_name":"cryptography","ecosystem":"pypi","requirements":"==39.0.1","direct":false,"kind":"runtime","optional":false},{"id":7709951620,"package_name":"ddsketch","ecosystem":"pypi","requirements":"==2.0.4","direct":false,"kind":"runtime","optional":false},{"id":7709951621,"package_name":"ddtrace","ecosystem":"pypi","requirements":"==1.7.5","direct":false,"kind":"runtime","optional":false},{"id":7709951622,"package_name":"deprecated","ecosystem":"pypi","requirements":"==1.2.13","direct":false,"kind":"runtime","optional":false},{"id":7709951623,"package_name":"dj-database-url","ecosystem":"pypi","requirements":"==1.2.0","direct":false,"kind":"runtime","optional":false},{"id":7709951624,"package_name":"django","ecosystem":"pypi","requirements":"==4.1.7","direct":false,"kind":"runtime","optional":false},{"id":7709951625,"package_name":"django-cors-headers","ecosystem":"pypi","requirements":"==3.13.0","direct":false,"kind":"runtime","optional":false},{"id":7709951626,"package_name":"django-dirtyfields","ecosystem":"pypi","requirements":"==1.9.1","direct":false,"kind":"runtime","optional":false},{"id":7709951627,"package_name":"django-filter","ecosystem":"pypi","requirements":"==22.1","direct":false,"kind":"runtime","optional":false},{"id":7709951628,"package_name":"django-ipware","ecosystem":"pypi","requirements":"==4.0.2","direct":false,"kind":"runtime","optional":false},{"id":7709951629,"package_name":"django-oauth-toolkit","ecosystem":"pypi","requirements":"==2.2.0","direct":false,"kind":"runtime","optional":false},{"id":7709951630,"package_name":"django-safedelete","ecosystem":"pypi","requirements":"==1.3.1","direct":false,"kind":"runtime","optional":false},{"id":7709951631,"package_name":"django-storages","ecosystem":"pypi","requirements":"==1.13.2","direct":false,"kind":"runtime","optional":false},{"id":7709951632,"package_name":"django-structlog","ecosystem":"pypi","requirements":"==4.1.0","direct":false,"kind":"runtime","optional":false},{"id":7709951633,"package_name":"envier","ecosystem":"pypi","requirements":"==0.4.0","direct":false,"kind":"runtime","optional":false},{"id":7709951634,"package_name":"exceptiongroup","ecosystem":"pypi","requirements":"==1.1.0","direct":false,"kind":"runtime","optional":false},{"id":7709951635,"package_name":"fiona","ecosystem":"pypi","requirements":"==1.9.0","direct":false,"kind":"runtime","optional":false},{"id":7709951636,"package_name":"geopandas","ecosystem":"pypi","requirements":"==0.12.2","direct":false,"kind":"runtime","optional":false},{"id":7709951637,"package_name":"graphene","ecosystem":"pypi","requirements":"==3.2.1","direct":false,"kind":"runtime","optional":false},{"id":7709951642,"package_name":"graphene-django","ecosystem":"pypi","requirements":"==3.0.0","direct":false,"kind":"runtime","optional":false},{"id":7709951643,"package_name":"graphql-core","ecosystem":"pypi","requirements":"==3.2.3","direct":false,"kind":"runtime","optional":false},{"id":7709951644,"package_name":"graphql-relay","ecosystem":"pypi","requirements":"==3.2.0","direct":false,"kind":"runtime","optional":false},{"id":7709951645,"package_name":"gunicorn","ecosystem":"pypi","requirements":"==20.1.0","direct":false,"kind":"runtime","optional":false},{"id":7709951646,"package_name":"h11","ecosystem":"pypi","requirements":"==0.14.0","direct":false,"kind":"runtime","optional":false},{"id":7709951647,"package_name":"httpcore","ecosystem":"pypi","requirements":"==0.16.3","direct":false,"kind":"runtime","optional":false},{"id":7709951648,"package_name":"httpx","ecosystem":"pypi","requirements":"==0.23.3","direct":false,"kind":"runtime","optional":false},{"id":7709951649,"package_name":"idna","ecosystem":"pypi","requirements":"==3.4","direct":false,"kind":"runtime","optional":false},{"id":7709951650,"package_name":"jmespath","ecosystem":"pypi","requirements":"==1.0.1","direct":false,"kind":"runtime","optional":false},{"id":7709951651,"package_name":"jsonschema","ecosystem":"pypi","requirements":"==4.17.3","direct":false,"kind":"runtime","optional":false},{"id":7709951652,"package_name":"jwcrypto","ecosystem":"pypi","requirements":"==1.4.2","direct":false,"kind":"runtime","optional":false},{"id":7709951653,"package_name":"munch","ecosystem":"pypi","requirements":"==2.5.0","direct":false,"kind":"runtime","optional":false},{"id":7709951654,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.24.2","direct":false,"kind":"runtime","optional":false},{"id":7709951655,"package_name":"oauthlib","ecosystem":"pypi","requirements":"==3.2.2","direct":false,"kind":"runtime","optional":false},{"id":7709951656,"package_name":"packaging","ecosystem":"pypi","requirements":"==23.0","direct":false,"kind":"runtime","optional":false},{"id":7709951657,"package_name":"pandas","ecosystem":"pypi","requirements":"==1.5.3","direct":false,"kind":"runtime","optional":false},{"id":7709951658,"package_name":"prettyconf","ecosystem":"pypi","requirements":"==2.2.1","direct":false,"kind":"runtime","optional":false},{"id":7709951659,"package_name":"promise","ecosystem":"pypi","requirements":"==2.3","direct":false,"kind":"runtime","optional":false},{"id":7709951660,"package_name":"protobuf","ecosystem":"pypi","requirements":"==4.21.12","direct":false,"kind":"runtime","optional":false},{"id":7709951661,"package_name":"psycopg2","ecosystem":"pypi","requirements":"==2.9.5","direct":false,"kind":"runtime","optional":false},{"id":7709951662,"package_name":"pycparser","ecosystem":"pypi","requirements":"==2.21","direct":false,"kind":"runtime","optional":false},{"id":7709951663,"package_name":"pyjwt","ecosystem":"pypi","requirements":"==2.6.0","direct":false,"kind":"runtime","optional":false},{"id":7709951664,"package_name":"pyproj","ecosystem":"pypi","requirements":"==3.4.1","direct":false,"kind":"runtime","optional":false},{"id":7709951665,"package_name":"pyrsistent","ecosystem":"pypi","requirements":"==0.19.3","direct":false,"kind":"runtime","optional":false},{"id":7709951666,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"==2.8.2","direct":false,"kind":"runtime","optional":false},{"id":7709951667,"package_name":"python-magic","ecosystem":"pypi","requirements":"==0.4.27","direct":false,"kind":"runtime","optional":false},{"id":7709951668,"package_name":"pytz","ecosystem":"pypi","requirements":"==2022.7.1","direct":false,"kind":"runtime","optional":false},{"id":7709951669,"package_name":"requests","ecosystem":"pypi","requirements":"==2.28.2","direct":false,"kind":"runtime","optional":false},{"id":7709951670,"package_name":"rfc3986","ecosystem":"pypi","requirements":"==1.5.0","direct":false,"kind":"runtime","optional":false},{"id":7709951671,"package_name":"rules","ecosystem":"pypi","requirements":"==3.3","direct":false,"kind":"runtime","optional":false},{"id":7709951672,"package_name":"s3transfer","ecosystem":"pypi","requirements":"==0.6.0","direct":false,"kind":"runtime","optional":false},{"id":7709951673,"package_name":"shapely","ecosystem":"pypi","requirements":"==2.0.1","direct":false,"kind":"runtime","optional":false},{"id":7709951674,"package_name":"six","ecosystem":"pypi","requirements":"==1.16.0","direct":false,"kind":"runtime","optional":false},{"id":7709951675,"package_name":"sniffio","ecosystem":"pypi","requirements":"==1.3.0","direct":false,"kind":"runtime","optional":false},{"id":7709951676,"package_name":"sqlparse","ecosystem":"pypi","requirements":"==0.4.3","direct":false,"kind":"runtime","optional":false},{"id":7709951677,"package_name":"structlog","ecosystem":"pypi","requirements":"==22.3.0","direct":false,"kind":"runtime","optional":false},{"id":7709951678,"package_name":"tenacity","ecosystem":"pypi","requirements":"==8.1.0","direct":false,"kind":"runtime","optional":false},{"id":7709951679,"package_name":"text-unidecode","ecosystem":"pypi","requirements":"==1.3","direct":false,"kind":"runtime","optional":false},{"id":7709951680,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"==4.4.0","direct":false,"kind":"runtime","optional":false},{"id":7709951681,"package_name":"urllib3","ecosystem":"pypi","requirements":"==1.26.14","direct":false,"kind":"runtime","optional":false},{"id":7709951682,"package_name":"wrapt","ecosystem":"pypi","requirements":"==1.14.1","direct":false,"kind":"runtime","optional":false},{"id":7709951683,"package_name":"xmltodict","ecosystem":"pypi","requirements":"==0.13.0","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/codeql.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:38.992Z","updated_at":"2023-09-21T19:46:38.992Z","repository_link":"https://github.com/techmatters/terraso-backend/blob/main/.github/workflows/codeql.yml","dependencies":[{"id":13856896092,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":13856896093,"package_name":"github/codeql-action/init","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":13856896094,"package_name":"github/codeql-action/autobuild","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":13856896095,"package_name":"github/codeql-action/analyze","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"docker-compose.base.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:39.874Z","updated_at":"2023-09-21T19:46:39.874Z","repository_link":"https://github.com/techmatters/terraso-backend/blob/main/docker-compose.base.yml","dependencies":[{"id":13856896313,"package_name":"techmatters/terraso_backend","ecosystem":"docker","requirements":"latest","direct":true,"kind":"runtime","optional":false},{"id":13856896314,"package_name":"postgis/postgis","ecosystem":"docker","requirements":"14-master","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"docker","filepath":"docker-compose.ci.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:41.081Z","updated_at":"2023-09-21T19:46:41.081Z","repository_link":"https://github.com/techmatters/terraso-backend/blob/main/docker-compose.ci.yml","dependencies":[]},{"ecosystem":"docker","filepath":"docker-compose.dev.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:41.590Z","updated_at":"2023-09-21T19:46:41.590Z","repository_link":"https://github.com/techmatters/terraso-backend/blob/main/docker-compose.dev.yml","dependencies":[]},{"ecosystem":"npm","filepath":"package.json","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:42.004Z","updated_at":"2023-09-21T19:46:42.004Z","repository_link":"https://github.com/techmatters/terraso-backend/blob/main/package.json","dependencies":[]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:42.606Z","updated_at":"2023-09-21T19:46:42.606Z","repository_link":"https://github.com/techmatters/terraso-backend/blob/main/pyproject.toml","dependencies":[]},{"ecosystem":"actions","filepath":".github/workflows/auto-approve.yml","sha":null,"kind":"manifest","created_at":"2023-12-20T12:09:26.772Z","updated_at":"2023-12-20T12:09:26.772Z","repository_link":"https://github.com/techmatters/terraso-backend/blob/main/.github/workflows/auto-approve.yml","dependencies":[{"id":15188559448,"package_name":"hmarr/auto-approve-action","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]}],"score":7.347299700743164,"created_at":"2025-09-08T15:38:49.992Z","updated_at":"2025-10-07T08:27:07.417Z","avatar_url":"https://github.com/techmatters.png","language":"Python","category":null,"sub_category":null,"monthly_downloads":0,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["projection","interactive","serializer","cycles","packaging","charts","network-simulation","archival","shellcodes","hacking"],"project_url":"https://science.ecosyste.ms/api/v1/projects/75173","html_url":"https://science.ecosyste.ms/projects/75173"}