{"id":1073,"name":"Resilience Atlas","description":"An interactive analytical tool for building understanding of the extent and severity of some of the key stressors and shocks that are affecting rural livelihoods, production systems, and ecosystems in the Sahel, Horn of Africa and South and Southeast Asia.","url":"https://github.com/ConservationInternational/resilienceatlas","last_synced_at":"2026-05-01T14:04:14.566Z","repository":{"id":38990868,"uuid":"127429164","full_name":"ConservationInternational/resilienceatlas","owner":"ConservationInternational","description":"Resilience Atlas - Evidence-based decision-making around resilience","archived":false,"fork":false,"pushed_at":"2025-10-10T18:30:07.000Z","size":188158,"stargazers_count":13,"open_issues_count":10,"forks_count":3,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2025-10-24T17:13:05.201Z","etag":null,"topics":["bigdata","climate-change","conservation","resilience","sustainability"],"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/ConservationInternational.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2018-03-30T13:04:34.000Z","updated_at":"2025-09-14T14:40:07.000Z","dependencies_parsed_at":"2025-10-08T09:28:58.350Z","dependency_job_id":null,"html_url":"https://github.com/ConservationInternational/resilienceatlas","commit_stats":{"total_commits":2012,"total_committers":27,"mean_commits":74.51851851851852,"dds":0.6575546719681908,"last_synced_commit":"b2d178d62bd0769e4935558035d33293563e8a45"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/ConservationInternational/resilienceatlas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ConservationInternational","download_url":"https://codeload.github.com/ConservationInternational/resilienceatlas/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281592584,"owners_count":26527518,"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-10-29T02:00:06.901Z","response_time":59,"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":"ConservationInternational","name":"Conservation International","uuid":"6778872","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/6778872?v=4","repositories_count":47,"last_synced_at":"2023-08-15T19:59:12.785Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ConservationInternational","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-07T08:15:05.092Z","updated_at":"2023-08-15T19:59:19.244Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ConservationInternational","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ConservationInternational/repositories"},"packages":[{"id":4124059,"name":"github.com/conservationinternational/resilienceatlas","ecosystem":"go","description":"","homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/conservationinternational/resilienceatlas","keywords_array":[],"namespace":"github.com/conservationinternational","versions_count":5,"first_release_published_at":"2023-03-30T10:25:13.000Z","latest_release_published_at":"2023-06-13T07:43:58.000Z","latest_release_number":"v1.4.0","last_synced_at":"2025-10-29T20:19:59.848Z","created_at":"2022-04-12T15:08:20.479Z","updated_at":"2025-10-29T20:19:59.848Z","registry_url":"https://pkg.go.dev/github.com/conservationinternational/resilienceatlas","install_command":"go get github.com/conservationinternational/resilienceatlas","documentation_url":"https://pkg.go.dev/github.com/conservationinternational/resilienceatlas#section-documentation","metadata":{},"repo_metadata":{"id":38990868,"uuid":"127429164","full_name":"ConservationInternational/resilienceatlas","owner":"ConservationInternational","description":"Resilience Atlas - Evidence-based decision-making around resilience","archived":false,"fork":false,"pushed_at":"2025-10-07T18:32:35.000Z","size":188158,"stargazers_count":13,"open_issues_count":10,"forks_count":3,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2025-10-08T09:23:41.195Z","etag":null,"topics":["bigdata","climate-change","conservation","resilience","sustainability"],"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/ConservationInternational.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2018-03-30T13:04:34.000Z","updated_at":"2025-09-14T14:40:07.000Z","dependencies_parsed_at":"2025-10-08T09:28:58.350Z","dependency_job_id":null,"html_url":"https://github.com/ConservationInternational/resilienceatlas","commit_stats":{"total_commits":2012,"total_committers":27,"mean_commits":74.51851851851852,"dds":0.6575546719681908,"last_synced_commit":"b2d178d62bd0769e4935558035d33293563e8a45"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/ConservationInternational/resilienceatlas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ConservationInternational","download_url":"https://codeload.github.com/ConservationInternational/resilienceatlas/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002696,"owners_count":26083442,"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-10-10T02:00:06.843Z","response_time":62,"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_record":{"login":"ConservationInternational","name":"Conservation International","uuid":"6778872","kind":"organization","description":"","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/6778872?v=4","repositories_count":47,"last_synced_at":"2023-08-15T19:59:12.785Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ConservationInternational","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-07T08:15:05.092Z","updated_at":"2023-08-15T19:59:19.244Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ConservationInternational","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ConservationInternational/repositories"},"tags":[{"name":"v1.4.0","sha":"7e60bdb28ae0ac3a1e7f9417e20ffb2a08197300","kind":"commit","published_at":"2023-06-13T07:43:58.000Z","download_url":"https://codeload.github.com/ConservationInternational/resilienceatlas/tar.gz/v1.4.0","html_url":"https://github.com/ConservationInternational/resilienceatlas/releases/tag/v1.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ConservationInternational/resilienceatlas@v1.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/v1.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/v1.4.0/manifests"},{"name":"v1.3.0","sha":"451cb25880df5ba8b38101d161885cf867797d28","kind":"commit","published_at":"2023-05-30T09:06:22.000Z","download_url":"https://codeload.github.com/ConservationInternational/resilienceatlas/tar.gz/v1.3.0","html_url":"https://github.com/ConservationInternational/resilienceatlas/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ConservationInternational/resilienceatlas@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/v1.3.0/manifests"},{"name":"v1.2.1","sha":"e3047224aa64433a436a514128f2f0fed6828c14","kind":"commit","published_at":"2023-04-27T16:46:39.000Z","download_url":"https://codeload.github.com/ConservationInternational/resilienceatlas/tar.gz/v1.2.1","html_url":"https://github.com/ConservationInternational/resilienceatlas/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ConservationInternational/resilienceatlas@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"94f562bb380a16d686765827360f0316f5ff6202","kind":"commit","published_at":"2023-04-27T12:34:47.000Z","download_url":"https://codeload.github.com/ConservationInternational/resilienceatlas/tar.gz/v1.2.0","html_url":"https://github.com/ConservationInternational/resilienceatlas/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ConservationInternational/resilienceatlas@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/v1.2.0/manifests"},{"name":"v1.1.0","sha":"dfab8160f52a1388171aef259c58c60058ebb1f8","kind":"commit","published_at":"2023-03-30T10:25:13.000Z","download_url":"https://codeload.github.com/ConservationInternational/resilienceatlas/tar.gz/v1.1.0","html_url":"https://github.com/ConservationInternational/resilienceatlas/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ConservationInternational/resilienceatlas@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/v1.1.0/manifests"},{"name":"1.0.0","sha":"290f66a9fa5b93eb1ecf3f948e70c23b9d55914a","kind":"tag","published_at":"2018-08-28T08:33:42.000Z","download_url":"https://codeload.github.com/ConservationInternational/resilienceatlas/tar.gz/1.0.0","html_url":"https://github.com/ConservationInternational/resilienceatlas/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ConservationInternational/resilienceatlas@1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/1.0.0/manifests"},{"name":"0.1.5","sha":"fd1c1fc9fc3d667bbeeb093e65e8736981a1fe2f","kind":"commit","published_at":"2016-04-18T16:00:54.000Z","download_url":"https://codeload.github.com/ConservationInternational/resilienceatlas/tar.gz/0.1.5","html_url":"https://github.com/ConservationInternational/resilienceatlas/releases/tag/0.1.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ConservationInternational/resilienceatlas@0.1.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/0.1.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/0.1.5/manifests"},{"name":"0.1.4","sha":"14bef261434c65e07ee8466b82f35f74ec1dba03","kind":"commit","published_at":"2016-04-12T13:47:23.000Z","download_url":"https://codeload.github.com/ConservationInternational/resilienceatlas/tar.gz/0.1.4","html_url":"https://github.com/ConservationInternational/resilienceatlas/releases/tag/0.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ConservationInternational/resilienceatlas@0.1.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/0.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/0.1.4/manifests"},{"name":"0.1.3","sha":"7daf1fe957d40c2f223213f9e3e876dec53693fc","kind":"commit","published_at":"2015-08-20T15:40:12.000Z","download_url":"https://codeload.github.com/ConservationInternational/resilienceatlas/tar.gz/0.1.3","html_url":"https://github.com/ConservationInternational/resilienceatlas/releases/tag/0.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ConservationInternational/resilienceatlas@0.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/0.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/0.1.3/manifests"},{"name":"0.1.2","sha":"e2b1d6fb8d9f4e738f10502ff1e6fdcb04f40977","kind":"tag","published_at":"2015-07-03T07:43:38.000Z","download_url":"https://codeload.github.com/ConservationInternational/resilienceatlas/tar.gz/0.1.2","html_url":"https://github.com/ConservationInternational/resilienceatlas/releases/tag/0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ConservationInternational/resilienceatlas@0.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/0.1.2/manifests"},{"name":"0.1.1","sha":"688cc6fc466ea465399de6762fdf085222dca19f","kind":"tag","published_at":"2015-06-30T07:18:16.000Z","download_url":"https://codeload.github.com/ConservationInternational/resilienceatlas/tar.gz/0.1.1","html_url":"https://github.com/ConservationInternational/resilienceatlas/releases/tag/0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ConservationInternational/resilienceatlas@0.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/0.1.1/manifests"},{"name":"0.1.0","sha":"1d203a873e4113e8eff85d37f1fcaa331c407e61","kind":"tag","published_at":"2015-06-29T09:08:55.000Z","download_url":"https://codeload.github.com/ConservationInternational/resilienceatlas/tar.gz/0.1.0","html_url":"https://github.com/ConservationInternational/resilienceatlas/releases/tag/0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ConservationInternational/resilienceatlas@0.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/tags/0.1.0/manifests"}]},"repo_metadata_updated_at":"2025-10-17T23:54:12.423Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":1.621842380873635,"dependent_packages_count":6.491628958142286,"stargazers_count":null,"forks_count":null,"average":4.056735669507961},"purl":"pkg:golang/github.com/conservationinternational/resilienceatlas","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/conservationinternational/resilienceatlas","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/conservationinternational/resilienceatlas","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/conservationinternational/resilienceatlas/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-08T22:05:01.027Z","issues_count":27,"pull_requests_count":250,"avg_time_to_close_issue":29689.23076923077,"avg_time_to_close_pull_request":5476808.563318777,"issues_closed_count":13,"pull_requests_closed_count":229,"pull_request_authors_count":15,"issue_authors_count":5,"avg_comments_per_issue":0.037037037037037035,"avg_comments_per_pull_request":0.844,"merged_pull_requests_count":156,"bot_issues_count":0,"bot_pull_requests_count":90,"past_year_issues_count":16,"past_year_pull_requests_count":35,"past_year_avg_time_to_close_issue":29689.23076923077,"past_year_avg_time_to_close_pull_request":37061.25,"past_year_issues_closed_count":13,"past_year_pull_requests_closed_count":20,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":1.0285714285714287,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":17,"past_year_merged_pull_requests_count":17,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/issues","maintainers":[{"login":"Bluesmile82","count":34,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Bluesmile82"},{"login":"tiagojsag","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tiagojsag"},{"login":"aagm","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aagm"},{"login":"andresgnlez","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/andresgnlez"},{"login":"SARodrigues","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/SARodrigues"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fconservationinternational%2Fresilienceatlas/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fconservationinternational%2Fresilienceatlas/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fconservationinternational%2Fresilienceatlas/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fconservationinternational%2Fresilienceatlas/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fconservationinternational%2Fresilienceatlas/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":1982391,"maintainers_count":0,"namespaces_count":748632,"keywords_count":111330,"github":"golang","metadata":{"funded_packages_count":52718},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2025-10-30T05:50:02.839Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}}],"commits":{"id":1254589,"full_name":"ConservationInternational/resilienceatlas","default_branch":"develop","total_commits":2195,"total_committers":28,"total_bot_commits":140,"total_bot_committers":2,"mean_commits":78.39285714285714,"dds":0.6861047835990888,"past_year_total_commits":183,"past_year_total_committers":3,"past_year_total_bot_commits":133,"past_year_total_bot_committers":2,"past_year_mean_commits":61.0,"past_year_dds":0.3278688524590164,"last_synced_at":"2025-10-29T07:13:06.378Z","last_synced_commit":"b33571603d6d518276bdbacd4c64c19f0d42bd5f","created_at":"2023-03-27T11:49:56.642Z","updated_at":"2025-10-29T07:11:59.656Z","committers":[{"name":"Clara Linos","email":"clara@simbiotica.es","login":"dhakelila","count":689},{"name":"David Inga","email":"david.inga@vizzuality.com","login":"davidsingal","count":221},{"name":"Alvaro Leal","email":"pursuance@gmail.com","login":"Bluesmile82","count":163},{"name":"Alex Zvoleff","email":"azvoleff@conservation.org","login":"azvoleff","count":127},{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot","login":"Copilot","count":123},{"name":"martintomas","email":"martintomas.it@gmail.com","login":"martintomas","count":111},{"name":"Simao Rodrigues","email":"arodrigues.simao@gmail.com","login":"SARodrigues","count":80},{"name":"Clément Prod'homme","email":"clement.prodhomme@vizzuality.com","login":"clementprdhomme","count":72},{"name":"paulahaertel","email":"paula.haertel@mailbox.org","login":"paupowpow","count":67},{"name":"Gerardo","email":"gerardo.pacheco@vizzuality.com","login":null,"count":65},{"name":"Miguel Mendoza","email":"miguel.mendoza@vizzuality.com","login":"CV-Gate","count":63},{"name":"Tiago Garcia","email":"tiagojsag@gmail.com","login":"tiagojsag","count":61},{"name":"Alicia","email":"alicia.arenzana@gmail.com","login":"aagm","count":52},{"name":"Alicia","email":"alicia@MacBook-Pro-de-Alicia.local","login":null,"count":46},{"name":"Sebastian Schkudlara","email":"sebastian.schkudlara@gmail.com","login":"rschumann","count":40},{"name":"Tiago Santos","email":"santos.tiago@gmail.com","login":"santostiago","count":39},{"name":"Adeel Kamal Malik","email":"adeel_malik867@hotmail.com","login":"AdeelKamalMalik","count":35},{"name":"Agnieszka Figiel","email":"agnieszka.figiel@gmail.com","login":"agnessa","count":29},{"name":"Miguel Mendoza","email":"info@miguelmendoza.dj","login":null,"count":29},{"name":"Miguel Barrenechea","email":"miguel.barrenechea@simbiotica.es","login":null,"count":23},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":17},{"name":"Andrés González","email":"andres@simbiotica.es","login":null,"count":13},{"name":"Andrés González Muñoz","email":"andres.gonzalez@vizzuality.com","login":"andresgnlez","count":11},{"name":"Gerardo Pacheco","email":"gerardo@simbiotica.es","login":null,"count":8},{"name":"Adeel Kamal Malik","email":"adeelkmalik@gmail.com","login":"adeelkmalik","count":5},{"name":"Ajay Ranipeta","email":"ajay.ranipeta@gmail.com","login":"funkycoda","count":4},{"name":"Gerardo","email":"gerardo.sicart@gmail.com","login":"geriux","count":1},{"name":"bitTal","email":"albafjez@gmail.com","login":"bitTal","count":1}],"past_year_committers":[{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot","login":"Copilot","count":123},{"name":"Alex Zvoleff","email":"azvoleff@conservation.org","login":"azvoleff","count":50},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":10}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-10-29T00:00:18.766Z","repositories_count":6089584,"commits_count":922516440,"contributors_count":35983866,"owners_count":1109633,"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":"ConservationInternational/resilienceatlas","html_url":"https://github.com/ConservationInternational/resilienceatlas","last_synced_at":"2025-10-11T01:37:47.462Z","status":"active","issues_count":27,"pull_requests_count":251,"avg_time_to_close_issue":29689.23076923077,"avg_time_to_close_pull_request":5454122.656521739,"issues_closed_count":13,"pull_requests_closed_count":230,"pull_request_authors_count":15,"issue_authors_count":5,"avg_comments_per_issue":0.037037037037037035,"avg_comments_per_pull_request":0.8446215139442231,"merged_pull_requests_count":156,"bot_issues_count":0,"bot_pull_requests_count":91,"past_year_issues_count":16,"past_year_pull_requests_count":36,"past_year_avg_time_to_close_issue":29689.23076923077,"past_year_avg_time_to_close_pull_request":47632.142857142855,"past_year_issues_closed_count":13,"past_year_pull_requests_closed_count":21,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":1.027777777777778,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":18,"past_year_merged_pull_requests_count":17,"created_at":"2023-05-09T10:47:00.868Z","updated_at":"2025-10-11T01:37:47.463Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ConservationInternational%2Fresilienceatlas/issues","issue_labels_count":{"Kartoza":1,"bug":1,"frontend":1},"pull_request_labels_count":{"dependencies":91,"backend":65,"javascript":50,"frontend":48,"ruby":8,"infrastructure":4,"python":3,"WIP":2,"on hold":1,"blocked":1},"issue_author_associations_count":{"CONTRIBUTOR":21,"NONE":4,"COLLABORATOR":2},"pull_request_author_associations_count":{"CONTRIBUTOR":197,"COLLABORATOR":53,"NONE":1},"issue_authors":{"azvoleff":18,"funkycoda":3,"MLNoon":3,"aagm":2,"vermeulendivan":1},"pull_request_authors":{"dependabot[bot]":91,"Bluesmile82":34,"martintomas":31,"Copilot":16,"davidsingal":15,"agnessa":15,"tiagojsag":9,"clementprdhomme":9,"santostiago":9,"AdeelKamalMalik":7,"andresgnlez":4,"aagm":3,"azvoleff":3,"SARodrigues":3,"funkycoda":2},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-10-30T00:00:25.546Z","repositories_count":11263014,"issues_count":35009938,"pull_requests_count":113611200,"authors_count":11042159,"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":{"dependencies":18,"javascript":10,"ruby":6,"python":2},"past_year_issue_author_associations_count":{"CONTRIBUTOR":16},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":36},"past_year_issue_authors":{"azvoleff":16},"past_year_pull_request_authors":{"dependabot[bot]":18,"Copilot":16,"azvoleff":2},"maintainers":[{"login":"Bluesmile82","count":34,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Bluesmile82"},{"login":"tiagojsag","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/tiagojsag"},{"login":"aagm","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/aagm"},{"login":"andresgnlez","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/andresgnlez"},{"login":"SARodrigues","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/SARodrigues"}],"active_maintainers":[]},"events":{"total":{"IssuesEvent":22,"DeleteEvent":12,"IssueCommentEvent":62,"PushEvent":110,"PullRequestReviewEvent":5,"PullRequestEvent":49,"CreateEvent":24},"last_year":{"IssuesEvent":22,"DeleteEvent":12,"IssueCommentEvent":62,"PushEvent":110,"PullRequestReviewEvent":5,"PullRequestEvent":49,"CreateEvent":24}},"keywords":["bigdata","climate-change","conservation","resilience","sustainability"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/titiler_cogs_cleanup.yaml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:29.975Z","updated_at":"2023-09-21T19:46:29.975Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/.github/workflows/titiler_cogs_cleanup.yaml","dependencies":[{"id":13856887053,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13856887054,"package_name":"aws-actions/configure-aws-credentials","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":13856887055,"package_name":"aws-actions/setup-sam","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/titiler_cogs_deployment.yaml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:30.423Z","updated_at":"2023-09-21T19:46:30.423Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/.github/workflows/titiler_cogs_deployment.yaml","dependencies":[{"id":13856888261,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13856888262,"package_name":"aws-actions/configure-aws-credentials","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":13856888263,"package_name":"aws-actions/setup-sam","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"cloud_functions/titiler_cogs/titiler_cogs/Dockerfile","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:30.799Z","updated_at":"2023-09-21T19:46:30.799Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/cloud_functions/titiler_cogs/titiler_cogs/Dockerfile","dependencies":[{"id":13856888284,"package_name":"public.ecr.aws/lambda/python","ecosystem":"docker","requirements":"3.9","direct":true,"kind":"build","optional":false}]},{"ecosystem":"docker","filepath":"data/docker-compose.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:31.092Z","updated_at":"2023-09-21T19:46:31.092Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/data/docker-compose.yml","dependencies":[{"id":13856888303,"package_name":"ghcr.io/developmentseed/titiler","ecosystem":"docker","requirements":"latest","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"docker","filepath":"data/notebooks/Dockerfile","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:31.305Z","updated_at":"2023-09-21T19:46:31.305Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/data/notebooks/Dockerfile","dependencies":[{"id":13856888323,"package_name":"mambaorg/micromamba","ecosystem":"docker","requirements":"1.4","direct":true,"kind":"build","optional":false},{"id":13856888324,"package_name":"base","ecosystem":"docker","requirements":"latest","direct":true,"kind":"build","optional":false}]},{"ecosystem":"docker","filepath":"data/streamlit-app/Dockerfile","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:31.666Z","updated_at":"2023-09-21T19:46:31.666Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/data/streamlit-app/Dockerfile","dependencies":[{"id":13856888346,"package_name":"python","ecosystem":"docker","requirements":"3.10-slim-buster","direct":true,"kind":"build","optional":false}]},{"ecosystem":"docker","filepath":"frontend/Dockerfile","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:31.906Z","updated_at":"2023-09-21T19:46:31.906Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/frontend/Dockerfile","dependencies":[{"id":13856888371,"package_name":"node","ecosystem":"docker","requirements":"18.15.0-bullseye","direct":true,"kind":"build","optional":false}]},{"ecosystem":"docker","filepath":"frontend/docker-compose.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:32.449Z","updated_at":"2023-09-21T19:46:32.449Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/frontend/docker-compose.yml","dependencies":[{"id":13856889047,"package_name":"cypress/included","ecosystem":"docker","requirements":"12.7.0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"npm","filepath":"cloud_functions/analysis_histogram/package.json","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:32.916Z","updated_at":"2023-09-21T19:46:32.916Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/cloud_functions/analysis_histogram/package.json","dependencies":[{"id":13856889385,"package_name":"@google-cloud/functions-framework","ecosystem":"npm","requirements":"^3.2.0","direct":true,"kind":"runtime","optional":false},{"id":13856889386,"package_name":"@google/earthengine","ecosystem":"npm","requirements":"^0.1.354","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"npm","filepath":"cloud_functions/raster_interaction/package.json","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:34.251Z","updated_at":"2023-09-21T19:46:34.251Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/cloud_functions/raster_interaction/package.json","dependencies":[{"id":13856890282,"package_name":"@google-cloud/functions-framework","ecosystem":"npm","requirements":"^3.2.0","direct":true,"kind":"runtime","optional":false},{"id":13856890283,"package_name":"@google/earthengine","ecosystem":"npm","requirements":"^0.1.354","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"npm","filepath":"frontend/package.json","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:34.799Z","updated_at":"2023-09-21T19:46:34.799Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/frontend/package.json","dependencies":[{"id":13856890494,"package_name":"@carto/carto.js","ecosystem":"npm","requirements":"4.2.2","direct":true,"kind":"runtime","optional":false},{"id":13856890495,"package_name":"@googlemaps/js-api-loader","ecosystem":"npm","requirements":"^1.15.1","direct":true,"kind":"runtime","optional":false},{"id":13856890496,"package_name":"@headlessui/react","ecosystem":"npm","requirements":"^1.7.14","direct":true,"kind":"runtime","optional":false},{"id":13856890497,"package_name":"@reactour/tour","ecosystem":"npm","requirements":"^3.3.0","direct":true,"kind":"runtime","optional":false},{"id":13856890498,"package_name":"@tanstack/react-query","ecosystem":"npm","requirements":"^4.28.0","direct":true,"kind":"runtime","optional":false},{"id":13856890499,"package_name":"@transifex/native","ecosystem":"npm","requirements":"^5.2.0","direct":true,"kind":"runtime","optional":false},{"id":13856890500,"package_name":"@transifex/react","ecosystem":"npm","requirements":"^5.2.0","direct":true,"kind":"runtime","optional":false},{"id":13856890501,"package_name":"@turf/bbox-polygon","ecosystem":"npm","requirements":"^6.5.0","direct":true,"kind":"runtime","optional":false},{"id":13856890502,"package_name":"axios","ecosystem":"npm","requirements":"^0.21.2","direct":true,"kind":"runtime","optional":false},{"id":13856890503,"package_name":"classnames","ecosystem":"npm","requirements":"^2.3.2","direct":true,"kind":"runtime","optional":false},{"id":13856890504,"package_name":"date-fns","ecosystem":"npm","requirements":"^2.30.0","direct":true,"kind":"runtime","optional":false},{"id":13856890505,"package_name":"dotenv","ecosystem":"npm","requirements":"^16.0.3","direct":true,"kind":"runtime","optional":false},{"id":13856890506,"package_name":"dotenv-cli","ecosystem":"npm","requirements":"^7.1.0","direct":true,"kind":"runtime","optional":false},{"id":13856890507,"package_name":"foundation-sites","ecosystem":"npm","requirements":"6.7.5","direct":true,"kind":"runtime","optional":false},{"id":13856890508,"package_name":"html-react-parser","ecosystem":"npm","requirements":"^3.0.16","direct":true,"kind":"runtime","optional":false},{"id":13856890509,"package_name":"leaflet","ecosystem":"npm","requirements":"1.4.0","direct":true,"kind":"runtime","optional":false},{"id":13856890510,"package_name":"leaflet-active-area","ecosystem":"npm","requirements":"1.1.0","direct":true,"kind":"runtime","optional":false},{"id":13856890511,"package_name":"leaflet-utfgrid","ecosystem":"npm","requirements":"0.3.0","direct":true,"kind":"runtime","optional":false},{"id":13856890512,"package_name":"leaflet.pm","ecosystem":"npm","requirements":"2.0.3","direct":true,"kind":"runtime","optional":false},{"id":13856890513,"package_name":"lodash","ecosystem":"npm","requirements":"^4.17.11","direct":true,"kind":"runtime","optional":false},{"id":13856890514,"package_name":"moment","ecosystem":"npm","requirements":"^2.24.0","direct":true,"kind":"runtime","optional":false},{"id":13856890515,"package_name":"next","ecosystem":"npm","requirements":"12.3.4","direct":true,"kind":"runtime","optional":false},{"id":13856890516,"package_name":"next-redux-wrapper","ecosystem":"npm","requirements":"^8.1.0","direct":true,"kind":"runtime","optional":false},{"id":13856890517,"package_name":"normalize.css","ecosystem":"npm","requirements":"^8.0.1","direct":true,"kind":"runtime","optional":false},{"id":13856890518,"package_name":"normalizr","ecosystem":"npm","requirements":"^3.3.0","direct":true,"kind":"runtime","optional":false},{"id":13856890519,"package_name":"numeral","ecosystem":"npm","requirements":"^2.0.6","direct":true,"kind":"runtime","optional":false},{"id":13856890520,"package_name":"qs","ecosystem":"npm","requirements":"^6.9.7","direct":true,"kind":"runtime","optional":false},{"id":13856890521,"package_name":"react","ecosystem":"npm","requirements":"17.0.2","direct":true,"kind":"runtime","optional":false},{"id":13856890522,"package_name":"react-beautiful-dnd","ecosystem":"npm","requirements":"^11.0.0-beta.3","direct":true,"kind":"runtime","optional":false},{"id":13856890523,"package_name":"react-cookie","ecosystem":"npm","requirements":"^4.1.1","direct":true,"kind":"runtime","optional":false},{"id":13856890524,"package_name":"react-dangerous-html","ecosystem":"npm","requirements":"^1.0.0","direct":true,"kind":"runtime","optional":false},{"id":13856890525,"package_name":"react-datepicker","ecosystem":"npm","requirements":"^4.11.0","direct":true,"kind":"runtime","optional":false},{"id":13856890526,"package_name":"react-dom","ecosystem":"npm","requirements":"17.0.2","direct":true,"kind":"runtime","optional":false},{"id":13856890527,"package_name":"react-dropzone","ecosystem":"npm","requirements":"^10.1.4","direct":true,"kind":"runtime","optional":false},{"id":13856890528,"package_name":"react-foundation","ecosystem":"npm","requirements":"0.9.7","direct":true,"kind":"runtime","optional":false},{"id":13856890529,"package_name":"react-iframe","ecosystem":"npm","requirements":"^1.8.0","direct":true,"kind":"runtime","optional":false},{"id":13856890530,"package_name":"react-modal","ecosystem":"npm","requirements":"^3.16.1","direct":true,"kind":"runtime","optional":false},{"id":13856890531,"package_name":"react-redux","ecosystem":"npm","requirements":"6.0.1","direct":true,"kind":"runtime","optional":false},{"id":13856890532,"package_name":"react-router","ecosystem":"npm","requirements":"^4.3.1","direct":true,"kind":"runtime","optional":false},{"id":13856890533,"package_name":"react-slick","ecosystem":"npm","requirements":"0.29.0","direct":true,"kind":"runtime","optional":false},{"id":13856890534,"package_name":"recharts","ecosystem":"npm","requirements":"^1.5.0","direct":true,"kind":"runtime","optional":false},{"id":13856890535,"package_name":"redux","ecosystem":"npm","requirements":"^4.0.1","direct":true,"kind":"runtime","optional":false},{"id":13856890536,"package_name":"redux-devtools-extension","ecosystem":"npm","requirements":"^2.13.8","direct":true,"kind":"runtime","optional":false},{"id":13856890537,"package_name":"redux-form","ecosystem":"npm","requirements":"^8.2.3","direct":true,"kind":"runtime","optional":false},{"id":13856890538,"package_name":"redux-thunk","ecosystem":"npm","requirements":"^2.3.0","direct":true,"kind":"runtime","optional":false},{"id":13856890539,"package_name":"reselect","ecosystem":"npm","requirements":"^4.0.0","direct":true,"kind":"runtime","optional":false},{"id":13856890540,"package_name":"resilience-layer-manager","ecosystem":"npm","requirements":"https://github.com/ConservationInternational/resilienceatlas-layermanager.git#1.0.4","direct":true,"kind":"runtime","optional":false},{"id":13856890544,"package_name":"sass","ecosystem":"npm","requirements":"^1.58.3","direct":true,"kind":"runtime","optional":false},{"id":13856890545,"package_name":"slick-carousel","ecosystem":"npm","requirements":"^1.8.1","direct":true,"kind":"runtime","optional":false},{"id":13856890546,"package_name":"use-debounce","ecosystem":"npm","requirements":"^9.0.4","direct":true,"kind":"runtime","optional":false},{"id":13856890547,"package_name":"vega","ecosystem":"npm","requirements":"5.23.0","direct":true,"kind":"runtime","optional":false},{"id":13856890548,"package_name":"vega-lib","ecosystem":"npm","requirements":"4.4.0","direct":true,"kind":"runtime","optional":false},{"id":13856890549,"package_name":"vizzuality-components","ecosystem":"npm","requirements":"^1.1.1","direct":true,"kind":"runtime","optional":false},{"id":13856890550,"package_name":"yup","ecosystem":"npm","requirements":"^0.32.11","direct":true,"kind":"runtime","optional":false},{"id":13856890551,"package_name":"@transifex/cli","ecosystem":"npm","requirements":"^5.2.0","direct":true,"kind":"development","optional":false},{"id":13856890552,"package_name":"@types/google.maps","ecosystem":"npm","requirements":"^3.52.5","direct":true,"kind":"development","optional":false},{"id":13856890553,"package_name":"@types/leaflet","ecosystem":"npm","requirements":"^1.4.4","direct":true,"kind":"development","optional":false},{"id":13856890554,"package_name":"@types/leaflet-draw","ecosystem":"npm","requirements":"^0.4.14","direct":true,"kind":"development","optional":false},{"id":13856890555,"package_name":"@types/node","ecosystem":"npm","requirements":"18.14.6","direct":true,"kind":"development","optional":false},{"id":13856890556,"package_name":"@types/react","ecosystem":"npm","requirements":"^18.0.28","direct":true,"kind":"development","optional":false},{"id":13856890557,"package_name":"@types/react-dom","ecosystem":"npm","requirements":"^18.0.11","direct":true,"kind":"development","optional":false},{"id":13856890558,"package_name":"@types/react-foundation","ecosystem":"npm","requirements":"^0.9.8","direct":true,"kind":"development","optional":false},{"id":13856890559,"package_name":"@types/react-slick","ecosystem":"npm","requirements":"^0.23.10","direct":true,"kind":"development","optional":false},{"id":13856890560,"package_name":"@typescript-eslint/eslint-plugin","ecosystem":"npm","requirements":"5.13.0","direct":true,"kind":"development","optional":false},{"id":13856890561,"package_name":"@typescript-eslint/parser","ecosystem":"npm","requirements":"5.13.0","direct":true,"kind":"development","optional":false},{"id":13856890562,"package_name":"cypress","ecosystem":"npm","requirements":"^12.7.0","direct":true,"kind":"development","optional":false},{"id":13856890563,"package_name":"eslint","ecosystem":"npm","requirements":"8.23.1","direct":true,"kind":"development","optional":false},{"id":13856890564,"package_name":"eslint-config-next","ecosystem":"npm","requirements":"12.2.3","direct":true,"kind":"development","optional":false},{"id":13856890565,"package_name":"eslint-config-prettier","ecosystem":"npm","requirements":"8.6.0","direct":true,"kind":"development","optional":false},{"id":13856890566,"package_name":"eslint-import-resolver-typescript","ecosystem":"npm","requirements":"3.5.1","direct":true,"kind":"development","optional":false},{"id":13856890567,"package_name":"eslint-plugin-import","ecosystem":"npm","requirements":"2.26.0","direct":true,"kind":"development","optional":false},{"id":13856890568,"package_name":"eslint-plugin-prettier","ecosystem":"npm","requirements":"4.2.1","direct":true,"kind":"development","optional":false},{"id":13856890569,"package_name":"husky","ecosystem":"npm","requirements":"^1.3.1","direct":true,"kind":"development","optional":false},{"id":13856890570,"package_name":"lint-staged","ecosystem":"npm","requirements":"^13.1.2","direct":true,"kind":"development","optional":false},{"id":13856890571,"package_name":"prettier","ecosystem":"npm","requirements":"2.8.3","direct":true,"kind":"development","optional":false},{"id":13856890572,"package_name":"start-server-and-test","ecosystem":"npm","requirements":"^2.0.0","direct":true,"kind":"development","optional":false},{"id":13856890573,"package_name":"typescript","ecosystem":"npm","requirements":"4.5.2","direct":true,"kind":"development","optional":false}]},{"ecosystem":"pypi","filepath":"cloud_functions/download_image/requirements.txt","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:36.551Z","updated_at":"2023-09-21T19:46:36.551Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/cloud_functions/download_image/requirements.txt","dependencies":[{"id":13856893131,"package_name":"earthengine-api","ecosystem":"pypi","requirements":"==0.1.354","direct":true,"kind":"runtime","optional":false},{"id":13856893132,"package_name":"oauth2client","ecosystem":"pypi","requirements":"==4.1.3","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"cloud_functions/sparc_plots/requirements.txt","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:36.797Z","updated_at":"2023-09-21T19:46:36.797Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/cloud_functions/sparc_plots/requirements.txt","dependencies":[{"id":13856893267,"package_name":"earthengine-api","ecosystem":"pypi","requirements":"==0.1.232","direct":true,"kind":"runtime","optional":false},{"id":13856893268,"package_name":"rollbar","ecosystem":"pypi","requirements":"==0.14.7","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"cloud_functions/titiler_cogs/titiler_cogs/requirements.txt","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:37.090Z","updated_at":"2023-09-21T19:46:37.090Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/cloud_functions/titiler_cogs/titiler_cogs/requirements.txt","dependencies":[{"id":13856894500,"package_name":"requests","ecosystem":"pypi","requirements":"==2.29.0","direct":true,"kind":"runtime","optional":false},{"id":13856894501,"package_name":"mangum","ecosystem":"pypi","requirements":"==0.17.0","direct":true,"kind":"runtime","optional":false},{"id":13856894502,"package_name":"titiler.application","ecosystem":"pypi","requirements":"==0.11.6","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"data/streamlit-app/requirements.txt","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:37.484Z","updated_at":"2023-09-21T19:46:37.484Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/data/streamlit-app/requirements.txt","dependencies":[{"id":13856894526,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.2.2","direct":true,"kind":"runtime","optional":false},{"id":13856894527,"package_name":"streamlit","ecosystem":"pypi","requirements":"==1.21.0","direct":true,"kind":"runtime","optional":false},{"id":13856894528,"package_name":"palettable","ecosystem":"pypi","requirements":"==3.3.0","direct":true,"kind":"runtime","optional":false},{"id":13856894529,"package_name":"leafmap","ecosystem":"pypi","requirements":"==0.19.0","direct":true,"kind":"runtime","optional":false},{"id":13856894530,"package_name":"localtileserver","ecosystem":"pypi","requirements":"==0.6.4","direct":true,"kind":"runtime","optional":false},{"id":13856894531,"package_name":"streamlit_folium","ecosystem":"pypi","requirements":"==0.11.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"rubygems","filepath":"backend/Gemfile","sha":null,"kind":"manifest","created_at":"2023-09-21T19:46:37.983Z","updated_at":"2023-09-21T19:46:37.983Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/backend/Gemfile","dependencies":[{"id":13856894574,"package_name":"rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894575,"package_name":"terser","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894576,"package_name":"slim-rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894577,"package_name":"dotenv-rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894578,"package_name":"importmap-rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894579,"package_name":"shrine","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894580,"package_name":"jbuilder","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894581,"package_name":"rspec-rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894582,"package_name":"rswag","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894583,"package_name":"image_processing","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894584,"package_name":"ed25519","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894585,"package_name":"bcrypt_pbkdf","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894586,"package_name":"pg","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894587,"package_name":"devise","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894588,"package_name":"jwt","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894589,"package_name":"simple_command","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894590,"package_name":"activeadmin","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894591,"package_name":"activeadmin_addons","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894592,"package_name":"active_model_serializers","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894593,"package_name":"active_storage_validations","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894594,"package_name":"will_paginate","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894595,"package_name":"ffi","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894596,"package_name":"cancancan","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894597,"package_name":"addressable","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894598,"package_name":"rack-cors","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894599,"package_name":"seed_dump","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894600,"package_name":"active_admin_theme","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894601,"package_name":"sparkpost_rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894605,"package_name":"rubyzip","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894606,"package_name":"prawn","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894607,"package_name":"prawn-table","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894608,"package_name":"standard","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894609,"package_name":"matrix","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894610,"package_name":"json-schema","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894611,"package_name":"globalize","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894612,"package_name":"activeadmin-globalize","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894613,"package_name":"active_admin-sortable_tree","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894614,"package_name":"ancestry","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894615,"package_name":"acts_as_list","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894616,"package_name":"factory_bot_rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894617,"package_name":"ransack","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894618,"package_name":"puma","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856894619,"package_name":"byebug","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894620,"package_name":"awesome_print","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894621,"package_name":"faker","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894622,"package_name":"capistrano","ecosystem":"rubygems","requirements":"~\u003e 3.9","direct":true,"kind":"development","optional":false},{"id":13856894623,"package_name":"capistrano-rbenv","ecosystem":"rubygems","requirements":"~\u003e 2.2","direct":true,"kind":"development","optional":false},{"id":13856894624,"package_name":"capistrano-bundler","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894625,"package_name":"capistrano-rails","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894626,"package_name":"capistrano-passenger","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894627,"package_name":"brakeman","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894628,"package_name":"bundler-audit","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894629,"package_name":"foreman","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894630,"package_name":"better_errors","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894631,"package_name":"binding_of_caller","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894632,"package_name":"annotate","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894633,"package_name":"web-console","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894634,"package_name":"letter_opener_web","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894635,"package_name":"capybara","ecosystem":"rubygems","requirements":"\u003e= 3.26","direct":true,"kind":"development","optional":false},{"id":13856894636,"package_name":"cuprite","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894637,"package_name":"rspec-collection_matchers","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894638,"package_name":"rspec-retry","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894639,"package_name":"super_diff","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894640,"package_name":"rspec-request_snapshot","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894641,"package_name":"rswag-specs","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":13856894642,"package_name":"webmock","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"rubygems","filepath":"backend/Gemfile.lock","sha":null,"kind":"lockfile","created_at":"2023-09-21T19:46:38.419Z","updated_at":"2023-09-21T19:46:38.419Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/backend/Gemfile.lock","dependencies":[{"id":13856894660,"package_name":"activeadmin-globalize","ecosystem":"rubygems","requirements":"0.9.10","direct":false,"kind":"runtime","optional":false},{"id":13856894661,"package_name":"sparkpost_rails","ecosystem":"rubygems","requirements":"1.5.5","direct":false,"kind":"runtime","optional":false},{"id":13856894662,"package_name":"rspec-request_snapshot","ecosystem":"rubygems","requirements":"0.7.3","direct":false,"kind":"runtime","optional":false},{"id":13856894663,"package_name":"actioncable","ecosystem":"rubygems","requirements":"7.0.4.3","direct":false,"kind":"runtime","optional":false},{"id":13856894664,"package_name":"actionmailbox","ecosystem":"rubygems","requirements":"7.0.4.3","direct":false,"kind":"runtime","optional":false},{"id":13856894665,"package_name":"actionmailer","ecosystem":"rubygems","requirements":"7.0.4.3","direct":false,"kind":"runtime","optional":false},{"id":13856894666,"package_name":"actionpack","ecosystem":"rubygems","requirements":"7.0.4.3","direct":false,"kind":"runtime","optional":false},{"id":13856894667,"package_name":"actiontext","ecosystem":"rubygems","requirements":"7.0.4.3","direct":false,"kind":"runtime","optional":false},{"id":13856894668,"package_name":"actionview","ecosystem":"rubygems","requirements":"7.0.4.3","direct":false,"kind":"runtime","optional":false},{"id":13856894669,"package_name":"active_admin-sortable_tree","ecosystem":"rubygems","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":13856894670,"package_name":"active_admin_theme","ecosystem":"rubygems","requirements":"1.1.4","direct":false,"kind":"runtime","optional":false},{"id":13856894671,"package_name":"active_material","ecosystem":"rubygems","requirements":"1.5.2","direct":false,"kind":"runtime","optional":false},{"id":13856894672,"package_name":"active_model_serializers","ecosystem":"rubygems","requirements":"0.10.13","direct":false,"kind":"runtime","optional":false},{"id":13856894673,"package_name":"active_storage_validations","ecosystem":"rubygems","requirements":"1.0.3","direct":false,"kind":"runtime","optional":false},{"id":13856894674,"package_name":"activeadmin","ecosystem":"rubygems","requirements":"2.13.1","direct":false,"kind":"runtime","optional":false},{"id":13856894675,"package_name":"activeadmin_addons","ecosystem":"rubygems","requirements":"1.9.0","direct":false,"kind":"runtime","optional":false},{"id":13856894676,"package_name":"activejob","ecosystem":"rubygems","requirements":"7.0.4.3","direct":false,"kind":"runtime","optional":false},{"id":13856894677,"package_name":"activemodel","ecosystem":"rubygems","requirements":"7.0.4.3","direct":false,"kind":"runtime","optional":false},{"id":13856894678,"package_name":"activerecord","ecosystem":"rubygems","requirements":"7.0.4.3","direct":false,"kind":"runtime","optional":false},{"id":13856894679,"package_name":"activestorage","ecosystem":"rubygems","requirements":"7.0.4.3","direct":false,"kind":"runtime","optional":false},{"id":13856894680,"package_name":"activesupport","ecosystem":"rubygems","requirements":"7.0.4.3","direct":false,"kind":"runtime","optional":false},{"id":13856894681,"package_name":"acts_as_list","ecosystem":"rubygems","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":13856894682,"package_name":"addressable","ecosystem":"rubygems","requirements":"2.8.1","direct":false,"kind":"runtime","optional":false},{"id":13856894683,"package_name":"airbrussh","ecosystem":"rubygems","requirements":"1.4.1","direct":false,"kind":"runtime","optional":false},{"id":13856894684,"package_name":"ancestry","ecosystem":"rubygems","requirements":"4.2.0","direct":false,"kind":"runtime","optional":false},{"id":13856894685,"package_name":"annotate","ecosystem":"rubygems","requirements":"3.2.0","direct":false,"kind":"runtime","optional":false},{"id":13856894686,"package_name":"arbre","ecosystem":"rubygems","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":13856894687,"package_name":"ast","ecosystem":"rubygems","requirements":"2.4.2","direct":false,"kind":"runtime","optional":false},{"id":13856894688,"package_name":"attr_extras","ecosystem":"rubygems","requirements":"7.1.0","direct":false,"kind":"runtime","optional":false},{"id":13856894689,"package_name":"awesome_print","ecosystem":"rubygems","requirements":"1.9.2","direct":false,"kind":"runtime","optional":false},{"id":13856894690,"package_name":"bcrypt","ecosystem":"rubygems","requirements":"3.1.18","direct":false,"kind":"runtime","optional":false},{"id":13856894691,"package_name":"bcrypt_pbkdf","ecosystem":"rubygems","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":13856894692,"package_name":"better_errors","ecosystem":"rubygems","requirements":"2.9.1","direct":false,"kind":"runtime","optional":false},{"id":13856894693,"package_name":"bindex","ecosystem":"rubygems","requirements":"0.8.1","direct":false,"kind":"runtime","optional":false},{"id":13856894694,"package_name":"binding_of_caller","ecosystem":"rubygems","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":13856894695,"package_name":"brakeman","ecosystem":"rubygems","requirements":"5.4.1","direct":false,"kind":"runtime","optional":false},{"id":13856894696,"package_name":"builder","ecosystem":"rubygems","requirements":"3.2.4","direct":false,"kind":"runtime","optional":false},{"id":13856894697,"package_name":"bundler-audit","ecosystem":"rubygems","requirements":"0.9.1","direct":false,"kind":"runtime","optional":false},{"id":13856894698,"package_name":"byebug","ecosystem":"rubygems","requirements":"11.1.3","direct":false,"kind":"runtime","optional":false},{"id":13856894699,"package_name":"cancancan","ecosystem":"rubygems","requirements":"3.4.0","direct":false,"kind":"runtime","optional":false},{"id":13856894700,"package_name":"capistrano","ecosystem":"rubygems","requirements":"3.17.2","direct":false,"kind":"runtime","optional":false},{"id":13856894701,"package_name":"capistrano-bundler","ecosystem":"rubygems","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":13856894702,"package_name":"capistrano-passenger","ecosystem":"rubygems","requirements":"0.2.1","direct":false,"kind":"runtime","optional":false},{"id":13856894703,"package_name":"capistrano-rails","ecosystem":"rubygems","requirements":"1.6.2","direct":false,"kind":"runtime","optional":false},{"id":13856894704,"package_name":"capistrano-rbenv","ecosystem":"rubygems","requirements":"2.2.0","direct":false,"kind":"runtime","optional":false},{"id":13856894705,"package_name":"capybara","ecosystem":"rubygems","requirements":"3.38.0","direct":false,"kind":"runtime","optional":false},{"id":13856894706,"package_name":"case_transform","ecosystem":"rubygems","requirements":"0.2","direct":false,"kind":"runtime","optional":false},{"id":13856894707,"package_name":"coderay","ecosystem":"rubygems","requirements":"1.1.3","direct":false,"kind":"runtime","optional":false},{"id":13856894708,"package_name":"coffee-rails","ecosystem":"rubygems","requirements":"5.0.0","direct":false,"kind":"runtime","optional":false},{"id":13856894709,"package_name":"coffee-script","ecosystem":"rubygems","requirements":"2.4.1","direct":false,"kind":"runtime","optional":false},{"id":13856894710,"package_name":"coffee-script-source","ecosystem":"rubygems","requirements":"1.12.2","direct":false,"kind":"runtime","optional":false},{"id":13856894711,"package_name":"concurrent-ruby","ecosystem":"rubygems","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":13856894712,"package_name":"content_disposition","ecosystem":"rubygems","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":13856894713,"package_name":"crack","ecosystem":"rubygems","requirements":"0.4.5","direct":false,"kind":"runtime","optional":false},{"id":13856894714,"package_name":"crass","ecosystem":"rubygems","requirements":"1.0.6","direct":false,"kind":"runtime","optional":false},{"id":13856894715,"package_name":"cuprite","ecosystem":"rubygems","requirements":"0.14.3","direct":false,"kind":"runtime","optional":false},{"id":13856894716,"package_name":"date","ecosystem":"rubygems","requirements":"3.3.3","direct":false,"kind":"runtime","optional":false},{"id":13856894717,"package_name":"debug_inspector","ecosystem":"rubygems","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":13856894718,"package_name":"devise","ecosystem":"rubygems","requirements":"4.9.0","direct":false,"kind":"runtime","optional":false},{"id":13856894719,"package_name":"diff-lcs","ecosystem":"rubygems","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":13856894720,"package_name":"dotenv","ecosystem":"rubygems","requirements":"2.8.1","direct":false,"kind":"runtime","optional":false},{"id":13856894721,"package_name":"dotenv-rails","ecosystem":"rubygems","requirements":"2.8.1","direct":false,"kind":"runtime","optional":false},{"id":13856894722,"package_name":"down","ecosystem":"rubygems","requirements":"5.4.0","direct":false,"kind":"runtime","optional":false},{"id":13856894723,"package_name":"ed25519","ecosystem":"rubygems","requirements":"1.3.0","direct":false,"kind":"runtime","optional":false},{"id":13856894724,"package_name":"erubi","ecosystem":"rubygems","requirements":"1.12.0","direct":false,"kind":"runtime","optional":false},{"id":13856894725,"package_name":"execjs","ecosystem":"rubygems","requirements":"2.8.1","direct":false,"kind":"runtime","optional":false},{"id":13856894726,"package_name":"factory_bot","ecosystem":"rubygems","requirements":"6.2.1","direct":false,"kind":"runtime","optional":false},{"id":13856894727,"package_name":"factory_bot_rails","ecosystem":"rubygems","requirements":"6.2.0","direct":false,"kind":"runtime","optional":false},{"id":13856894728,"package_name":"faker","ecosystem":"rubygems","requirements":"3.1.1","direct":false,"kind":"runtime","optional":false},{"id":13856894729,"package_name":"ferrum","ecosystem":"rubygems","requirements":"0.13","direct":false,"kind":"runtime","optional":false},{"id":13856894730,"package_name":"ffi","ecosystem":"rubygems","requirements":"1.15.5","direct":false,"kind":"runtime","optional":false},{"id":13856894731,"package_name":"foreman","ecosystem":"rubygems","requirements":"0.87.2","direct":false,"kind":"runtime","optional":false},{"id":13856894732,"package_name":"formtastic","ecosystem":"rubygems","requirements":"4.0.0","direct":false,"kind":"runtime","optional":false},{"id":13856894733,"package_name":"formtastic_i18n","ecosystem":"rubygems","requirements":"0.7.0","direct":false,"kind":"runtime","optional":false},{"id":13856894734,"package_name":"globalid","ecosystem":"rubygems","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":13856894735,"package_name":"globalize","ecosystem":"rubygems","requirements":"6.2.1","direct":false,"kind":"runtime","optional":false},{"id":13856894736,"package_name":"has_scope","ecosystem":"rubygems","requirements":"0.8.1","direct":false,"kind":"runtime","optional":false},{"id":13856894761,"package_name":"hashdiff","ecosystem":"rubygems","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":13856894762,"package_name":"i18n","ecosystem":"rubygems","requirements":"1.12.0","direct":false,"kind":"runtime","optional":false},{"id":13856894763,"package_name":"image_processing","ecosystem":"rubygems","requirements":"1.12.2","direct":false,"kind":"runtime","optional":false},{"id":13856894764,"package_name":"importmap-rails","ecosystem":"rubygems","requirements":"1.1.5","direct":false,"kind":"runtime","optional":false},{"id":13856894765,"package_name":"inherited_resources","ecosystem":"rubygems","requirements":"1.13.1","direct":false,"kind":"runtime","optional":false},{"id":13856894766,"package_name":"jbuilder","ecosystem":"rubygems","requirements":"2.11.5","direct":false,"kind":"runtime","optional":false},{"id":13856894767,"package_name":"jquery-rails","ecosystem":"rubygems","requirements":"4.5.1","direct":false,"kind":"runtime","optional":false},{"id":13856894768,"package_name":"json","ecosystem":"rubygems","requirements":"2.6.3","direct":false,"kind":"runtime","optional":false},{"id":13856894769,"package_name":"json-schema","ecosystem":"rubygems","requirements":"3.0.0","direct":false,"kind":"runtime","optional":false},{"id":13856894770,"package_name":"jsonapi-renderer","ecosystem":"rubygems","requirements":"0.2.2","direct":false,"kind":"runtime","optional":false},{"id":13856894771,"package_name":"jwt","ecosystem":"rubygems","requirements":"2.7.0","direct":false,"kind":"runtime","optional":false},{"id":13856894772,"package_name":"kaminari","ecosystem":"rubygems","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":13856894773,"package_name":"kaminari-actionview","ecosystem":"rubygems","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":13856894774,"package_name":"kaminari-activerecord","ecosystem":"rubygems","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":13856894775,"package_name":"kaminari-core","ecosystem":"rubygems","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":13856894776,"package_name":"language_server-protocol","ecosystem":"rubygems","requirements":"3.17.0.3","direct":false,"kind":"runtime","optional":false},{"id":13856894777,"package_name":"launchy","ecosystem":"rubygems","requirements":"2.5.2","direct":false,"kind":"runtime","optional":false},{"id":13856894778,"package_name":"letter_opener","ecosystem":"rubygems","requirements":"1.8.1","direct":false,"kind":"runtime","optional":false},{"id":13856894779,"package_name":"letter_opener_web","ecosystem":"rubygems","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":13856894780,"package_name":"loofah","ecosystem":"rubygems","requirements":"2.19.1","direct":false,"kind":"runtime","optional":false},{"id":13856894781,"package_name":"mail","ecosystem":"rubygems","requirements":"2.8.1","direct":false,"kind":"runtime","optional":false},{"id":13856894782,"package_name":"marcel","ecosystem":"rubygems","requirements":"1.0.2","direct":false,"kind":"runtime","optional":false},{"id":13856894783,"package_name":"matrix","ecosystem":"rubygems","requirements":"0.4.2","direct":false,"kind":"runtime","optional":false},{"id":13856894784,"package_name":"method_source","ecosystem":"rubygems","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":13856894785,"package_name":"mini_magick","ecosystem":"rubygems","requirements":"4.12.0","direct":false,"kind":"runtime","optional":false},{"id":13856894786,"package_name":"mini_mime","ecosystem":"rubygems","requirements":"1.1.2","direct":false,"kind":"runtime","optional":false},{"id":13856894787,"package_name":"mini_portile2","ecosystem":"rubygems","requirements":"2.8.1","direct":false,"kind":"runtime","optional":false},{"id":13856894788,"package_name":"minitest","ecosystem":"rubygems","requirements":"5.18.0","direct":false,"kind":"runtime","optional":false},{"id":13856894789,"package_name":"net-imap","ecosystem":"rubygems","requirements":"0.3.4","direct":false,"kind":"runtime","optional":false},{"id":13856894790,"package_name":"net-pop","ecosystem":"rubygems","requirements":"0.1.2","direct":false,"kind":"runtime","optional":false},{"id":13856894791,"package_name":"net-protocol","ecosystem":"rubygems","requirements":"0.2.1","direct":false,"kind":"runtime","optional":false},{"id":13856894792,"package_name":"net-scp","ecosystem":"rubygems","requirements":"4.0.0","direct":false,"kind":"runtime","optional":false},{"id":13856894793,"package_name":"net-smtp","ecosystem":"rubygems","requirements":"0.3.3","direct":false,"kind":"runtime","optional":false},{"id":13856894794,"package_name":"net-ssh","ecosystem":"rubygems","requirements":"7.1.0","direct":false,"kind":"runtime","optional":false},{"id":13856894795,"package_name":"nio4r","ecosystem":"rubygems","requirements":"2.5.8","direct":false,"kind":"runtime","optional":false},{"id":13856894796,"package_name":"nokogiri","ecosystem":"rubygems","requirements":"1.14.3","direct":false,"kind":"runtime","optional":false},{"id":13856894797,"package_name":"optimist","ecosystem":"rubygems","requirements":"3.0.1","direct":false,"kind":"runtime","optional":false},{"id":13856894798,"package_name":"orm_adapter","ecosystem":"rubygems","requirements":"0.5.0","direct":false,"kind":"runtime","optional":false},{"id":13856894799,"package_name":"parallel","ecosystem":"rubygems","requirements":"1.22.1","direct":false,"kind":"runtime","optional":false},{"id":13856894800,"package_name":"parser","ecosystem":"rubygems","requirements":"3.2.1.0","direct":false,"kind":"runtime","optional":false},{"id":13856894801,"package_name":"patience_diff","ecosystem":"rubygems","requirements":"1.2.0","direct":false,"kind":"runtime","optional":false},{"id":13856894802,"package_name":"pdf-core","ecosystem":"rubygems","requirements":"0.9.0","direct":false,"kind":"runtime","optional":false},{"id":13856894803,"package_name":"pg","ecosystem":"rubygems","requirements":"1.4.6","direct":false,"kind":"runtime","optional":false},{"id":13856894804,"package_name":"prawn","ecosystem":"rubygems","requirements":"2.4.0","direct":false,"kind":"runtime","optional":false},{"id":13856894805,"package_name":"prawn-table","ecosystem":"rubygems","requirements":"0.2.2","direct":false,"kind":"runtime","optional":false},{"id":13856894806,"package_name":"public_suffix","ecosystem":"rubygems","requirements":"5.0.1","direct":false,"kind":"runtime","optional":false},{"id":13856894807,"package_name":"puma","ecosystem":"rubygems","requirements":"6.1.1","direct":false,"kind":"runtime","optional":false},{"id":13856894808,"package_name":"racc","ecosystem":"rubygems","requirements":"1.6.2","direct":false,"kind":"runtime","optional":false},{"id":13856894809,"package_name":"rack","ecosystem":"rubygems","requirements":"2.2.6.4","direct":false,"kind":"runtime","optional":false},{"id":13856894810,"package_name":"rack-cors","ecosystem":"rubygems","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":13856894811,"package_name":"rack-test","ecosystem":"rubygems","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":13856894812,"package_name":"rails","ecosystem":"rubygems","requirements":"7.0.4.3","direct":false,"kind":"runtime","optional":false},{"id":13856894813,"package_name":"rails-dom-testing","ecosystem":"rubygems","requirements":"2.0.3","direct":false,"kind":"runtime","optional":false},{"id":13856894814,"package_name":"rails-html-sanitizer","ecosystem":"rubygems","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":13856894815,"package_name":"railties","ecosystem":"rubygems","requirements":"7.0.4.3","direct":false,"kind":"runtime","optional":false},{"id":13856894816,"package_name":"rainbow","ecosystem":"rubygems","requirements":"3.1.1","direct":false,"kind":"runtime","optional":false},{"id":13856894817,"package_name":"rake","ecosystem":"rubygems","requirements":"13.0.6","direct":false,"kind":"runtime","optional":false},{"id":13856894818,"package_name":"ransack","ecosystem":"rubygems","requirements":"3.2.1","direct":false,"kind":"runtime","optional":false},{"id":13856894819,"package_name":"rb-fsevent","ecosystem":"rubygems","requirements":"0.11.2","direct":false,"kind":"runtime","optional":false},{"id":13856894820,"package_name":"rb-inotify","ecosystem":"rubygems","requirements":"0.10.1","direct":false,"kind":"runtime","optional":false},{"id":13856894821,"package_name":"regexp_parser","ecosystem":"rubygems","requirements":"2.7.0","direct":false,"kind":"runtime","optional":false},{"id":13856894822,"package_name":"request_store","ecosystem":"rubygems","requirements":"1.5.1","direct":false,"kind":"runtime","optional":false},{"id":13856894823,"package_name":"require_all","ecosystem":"rubygems","requirements":"3.0.0","direct":false,"kind":"runtime","optional":false},{"id":13856894824,"package_name":"responders","ecosystem":"rubygems","requirements":"3.1.0","direct":false,"kind":"runtime","optional":false},{"id":13856894825,"package_name":"rexml","ecosystem":"rubygems","requirements":"3.2.5","direct":false,"kind":"runtime","optional":false},{"id":13856894826,"package_name":"rspec","ecosystem":"rubygems","requirements":"3.12.0","direct":false,"kind":"runtime","optional":false},{"id":13856894827,"package_name":"rspec-collection_matchers","ecosystem":"rubygems","requirements":"1.2.0","direct":false,"kind":"runtime","optional":false},{"id":13856894828,"package_name":"rspec-core","ecosystem":"rubygems","requirements":"3.12.1","direct":false,"kind":"runtime","optional":false},{"id":13856894829,"package_name":"rspec-expectations","ecosystem":"rubygems","requirements":"3.12.2","direct":false,"kind":"runtime","optional":false},{"id":13856894830,"package_name":"rspec-mocks","ecosystem":"rubygems","requirements":"3.12.3","direct":false,"kind":"runtime","optional":false},{"id":13856894831,"package_name":"rspec-rails","ecosystem":"rubygems","requirements":"6.0.1","direct":false,"kind":"runtime","optional":false},{"id":13856894832,"package_name":"rspec-retry","ecosystem":"rubygems","requirements":"0.6.2","direct":false,"kind":"runtime","optional":false},{"id":13856894833,"package_name":"rspec-support","ecosystem":"rubygems","requirements":"3.12.0","direct":false,"kind":"runtime","optional":false},{"id":13856894834,"package_name":"rswag","ecosystem":"rubygems","requirements":"2.8.0","direct":false,"kind":"runtime","optional":false},{"id":13856894835,"package_name":"rswag-api","ecosystem":"rubygems","requirements":"2.8.0","direct":false,"kind":"runtime","optional":false},{"id":13856894836,"package_name":"rswag-specs","ecosystem":"rubygems","requirements":"2.8.0","direct":false,"kind":"runtime","optional":false},{"id":13856894837,"package_name":"rswag-ui","ecosystem":"rubygems","requirements":"2.8.0","direct":false,"kind":"runtime","optional":false},{"id":13856894838,"package_name":"rubocop","ecosystem":"rubygems","requirements":"1.44.1","direct":false,"kind":"runtime","optional":false},{"id":13856894839,"package_name":"rubocop-ast","ecosystem":"rubygems","requirements":"1.27.0","direct":false,"kind":"runtime","optional":false},{"id":13856894840,"package_name":"rubocop-performance","ecosystem":"rubygems","requirements":"1.15.2","direct":false,"kind":"runtime","optional":false},{"id":13856894841,"package_name":"ruby-progressbar","ecosystem":"rubygems","requirements":"1.11.0","direct":false,"kind":"runtime","optional":false},{"id":13856894842,"package_name":"ruby-vips","ecosystem":"rubygems","requirements":"2.1.4","direct":false,"kind":"runtime","optional":false},{"id":13856894843,"package_name":"ruby2_keywords","ecosystem":"rubygems","requirements":"0.0.5","direct":false,"kind":"runtime","optional":false},{"id":13856894844,"package_name":"rubyzip","ecosystem":"rubygems","requirements":"2.3.2","direct":false,"kind":"runtime","optional":false},{"id":13856894845,"package_name":"sass","ecosystem":"rubygems","requirements":"3.7.4","direct":false,"kind":"runtime","optional":false},{"id":13856894846,"package_name":"sass-listen","ecosystem":"rubygems","requirements":"4.0.0","direct":false,"kind":"runtime","optional":false},{"id":13856894847,"package_name":"sassc","ecosystem":"rubygems","requirements":"2.4.0","direct":false,"kind":"runtime","optional":false},{"id":13856894848,"package_name":"sassc-rails","ecosystem":"rubygems","requirements":"2.1.2","direct":false,"kind":"runtime","optional":false},{"id":13856894849,"package_name":"seed_dump","ecosystem":"rubygems","requirements":"3.3.1","direct":false,"kind":"runtime","optional":false},{"id":13856894850,"package_name":"shrine","ecosystem":"rubygems","requirements":"3.4.0","direct":false,"kind":"runtime","optional":false},{"id":13856894851,"package_name":"simple_command","ecosystem":"rubygems","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":13856894852,"package_name":"slim","ecosystem":"rubygems","requirements":"4.1.0","direct":false,"kind":"runtime","optional":false},{"id":13856894853,"package_name":"slim-rails","ecosystem":"rubygems","requirements":"3.6.1","direct":false,"kind":"runtime","optional":false},{"id":13856894854,"package_name":"sprockets","ecosystem":"rubygems","requirements":"4.2.0","direct":false,"kind":"runtime","optional":false},{"id":13856894855,"package_name":"sprockets-rails","ecosystem":"rubygems","requirements":"3.4.2","direct":false,"kind":"runtime","optional":false},{"id":13856894856,"package_name":"sshkit","ecosystem":"rubygems","requirements":"1.21.4","direct":false,"kind":"runtime","optional":false},{"id":13856894857,"package_name":"standard","ecosystem":"rubygems","requirements":"1.24.3","direct":false,"kind":"runtime","optional":false},{"id":13856894858,"package_name":"super_diff","ecosystem":"rubygems","requirements":"0.9.0","direct":false,"kind":"runtime","optional":false},{"id":13856894859,"package_name":"temple","ecosystem":"rubygems","requirements":"0.8.2","direct":false,"kind":"runtime","optional":false},{"id":13856894860,"package_name":"terser","ecosystem":"rubygems","requirements":"1.1.14","direct":false,"kind":"runtime","optional":false},{"id":13856894861,"package_name":"thor","ecosystem":"rubygems","requirements":"1.2.1","direct":false,"kind":"runtime","optional":false},{"id":13856894862,"package_name":"tilt","ecosystem":"rubygems","requirements":"2.0.11","direct":false,"kind":"runtime","optional":false},{"id":13856894863,"package_name":"timeout","ecosystem":"rubygems","requirements":"0.3.2","direct":false,"kind":"runtime","optional":false},{"id":13856894864,"package_name":"ttfunk","ecosystem":"rubygems","requirements":"1.7.0","direct":false,"kind":"runtime","optional":false},{"id":13856894865,"package_name":"tzinfo","ecosystem":"rubygems","requirements":"2.0.6","direct":false,"kind":"runtime","optional":false},{"id":13856894866,"package_name":"unicode-display_width","ecosystem":"rubygems","requirements":"2.4.2","direct":false,"kind":"runtime","optional":false},{"id":13856894867,"package_name":"warden","ecosystem":"rubygems","requirements":"1.2.9","direct":false,"kind":"runtime","optional":false},{"id":13856894868,"package_name":"web-console","ecosystem":"rubygems","requirements":"4.2.0","direct":false,"kind":"runtime","optional":false},{"id":13856894869,"package_name":"webmock","ecosystem":"rubygems","requirements":"3.18.1","direct":false,"kind":"runtime","optional":false},{"id":13856894870,"package_name":"webrick","ecosystem":"rubygems","requirements":"1.8.1","direct":false,"kind":"runtime","optional":false},{"id":13856894871,"package_name":"websocket-driver","ecosystem":"rubygems","requirements":"0.7.5","direct":false,"kind":"runtime","optional":false},{"id":13856894872,"package_name":"websocket-extensions","ecosystem":"rubygems","requirements":"0.1.5","direct":false,"kind":"runtime","optional":false},{"id":13856894873,"package_name":"will_paginate","ecosystem":"rubygems","requirements":"3.3.1","direct":false,"kind":"runtime","optional":false},{"id":13856894874,"package_name":"xdan-datetimepicker-rails","ecosystem":"rubygems","requirements":"2.5.4","direct":false,"kind":"runtime","optional":false},{"id":13856894976,"package_name":"xpath","ecosystem":"rubygems","requirements":"3.2.0","direct":false,"kind":"runtime","optional":false},{"id":13856894980,"package_name":"zeitwerk","ecosystem":"rubygems","requirements":"2.6.7","direct":false,"kind":"runtime","optional":false},{"id":13856894982,"package_name":"bundler","ecosystem":"rubygems","requirements":"2.4.6","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ec2_deploy_production.yml","sha":null,"kind":"manifest","created_at":"2025-08-19T05:49:54.474Z","updated_at":"2025-08-19T05:49:54.474Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/.github/workflows/ec2_deploy_production.yml","dependencies":[{"id":24738790020,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":24738790021,"package_name":"aws-actions/configure-aws-credentials","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":24738790022,"package_name":"appleboy/ssh-action","ecosystem":"actions","requirements":"v1.0.0","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/ec2_deploy_staging.yml","sha":null,"kind":"manifest","created_at":"2025-08-19T05:49:55.665Z","updated_at":"2025-08-19T05:49:55.665Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/.github/workflows/ec2_deploy_staging.yml","dependencies":[{"id":24738790217,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":24738790221,"package_name":"aws-actions/configure-aws-credentials","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":24738790223,"package_name":"appleboy/ssh-action","ecosystem":"actions","requirements":"v1.0.0","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"docker-compose.staging.yml","sha":null,"kind":"manifest","created_at":"2025-08-19T05:49:55.838Z","updated_at":"2025-08-19T05:49:55.838Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/docker-compose.staging.yml","dependencies":[{"id":24738790640,"package_name":"postgis/postgis","ecosystem":"docker","requirements":"15-3.3","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"npm","filepath":"integration-tests/package.json","sha":null,"kind":"manifest","created_at":"2025-08-19T05:49:55.975Z","updated_at":"2025-08-19T05:49:55.975Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/integration-tests/package.json","dependencies":[{"id":24738790734,"package_name":"axios","ecosystem":"npm","requirements":"^1.7.7","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/backend_tests.yml","sha":null,"kind":"manifest","created_at":"2025-08-04T22:48:00.450Z","updated_at":"2025-08-04T22:48:00.450Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/.github/workflows/backend_tests.yml","dependencies":[{"id":24510689361,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":24510689362,"package_name":"docker/setup-buildx-action","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":24510689363,"package_name":"actions/cache","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":24510689364,"package_name":"dorny/test-reporter","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/frontend_tests.yml","sha":null,"kind":"manifest","created_at":"2025-08-04T22:48:00.851Z","updated_at":"2025-08-04T22:48:00.851Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/.github/workflows/frontend_tests.yml","dependencies":[{"id":24510689375,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":24510689376,"package_name":"docker/setup-buildx-action","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":24510689377,"package_name":"actions/cache","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/integration_tests.yml","sha":null,"kind":"manifest","created_at":"2025-08-04T22:48:00.921Z","updated_at":"2025-08-04T22:48:00.921Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/.github/workflows/integration_tests.yml","dependencies":[{"id":24510689378,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":24510689379,"package_name":"docker/setup-buildx-action","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":24510689380,"package_name":"actions/cache","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":24510689381,"package_name":"dorny/test-reporter","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":24510689382,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"docker","filepath":"backend/Dockerfile","sha":null,"kind":"manifest","created_at":"2025-08-04T22:48:01.006Z","updated_at":"2025-08-04T22:48:01.006Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/backend/Dockerfile","dependencies":[{"id":24510689383,"package_name":"ruby","ecosystem":"docker","requirements":"3.4.4-bullseye","direct":true,"kind":"build","optional":false},{"id":24510689384,"package_name":"base","ecosystem":"docker","requirements":"latest","direct":true,"kind":"build","optional":false}]},{"ecosystem":"docker","filepath":"docker-compose.dev.yml","sha":null,"kind":"manifest","created_at":"2025-08-04T22:48:01.130Z","updated_at":"2025-08-04T22:48:01.130Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/docker-compose.dev.yml","dependencies":[{"id":24510689385,"package_name":"postgis/postgis","ecosystem":"docker","requirements":"15-3.3","direct":true,"kind":"runtime","optional":false},{"id":24510689386,"package_name":"node","ecosystem":"docker","requirements":"18.15.0-bullseye","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"docker","filepath":"docker-compose.test.yml","sha":null,"kind":"manifest","created_at":"2025-08-04T22:48:01.191Z","updated_at":"2025-08-04T22:48:01.191Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/docker-compose.test.yml","dependencies":[{"id":24510689387,"package_name":"postgis/postgis","ecosystem":"docker","requirements":"15-3.3","direct":true,"kind":"runtime","optional":false},{"id":24510689388,"package_name":"redis","ecosystem":"docker","requirements":"7-alpine","direct":true,"kind":"runtime","optional":false},{"id":24510689389,"package_name":"cypress/included","ecosystem":"docker","requirements":"13.6.2","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"docker","filepath":"docker-compose.yml","sha":null,"kind":"manifest","created_at":"2025-08-04T22:48:01.254Z","updated_at":"2025-08-04T22:48:01.254Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/docker-compose.yml","dependencies":[]},{"ecosystem":"npm","filepath":"integration-tests/package-lock.json","sha":null,"kind":"lockfile","created_at":"2025-09-16T20:49:01.413Z","updated_at":"2025-09-16T20:49:01.413Z","repository_link":"https://github.com/ConservationInternational/resilienceatlas/blob/develop/integration-tests/package-lock.json","dependencies":[{"id":25181515153,"package_name":"asynckit","ecosystem":"npm","requirements":"0.4.0","direct":false,"kind":"runtime","optional":false},{"id":25181515154,"package_name":"axios","ecosystem":"npm","requirements":"1.11.0","direct":false,"kind":"runtime","optional":false},{"id":25181515155,"package_name":"call-bind-apply-helpers","ecosystem":"npm","requirements":"1.0.2","direct":false,"kind":"runtime","optional":false},{"id":25181515156,"package_name":"combined-stream","ecosystem":"npm","requirements":"1.0.8","direct":false,"kind":"runtime","optional":false},{"id":25181515157,"package_name":"delayed-stream","ecosystem":"npm","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":25181515158,"package_name":"dunder-proto","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":25181515159,"package_name":"es-define-property","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":25181515160,"package_name":"es-errors","ecosystem":"npm","requirements":"1.3.0","direct":false,"kind":"runtime","optional":false},{"id":25181515161,"package_name":"es-object-atoms","ecosystem":"npm","requirements":"1.1.1","direct":false,"kind":"runtime","optional":false},{"id":25181515162,"package_name":"es-set-tostringtag","ecosystem":"npm","requirements":"2.1.0","direct":false,"kind":"runtime","optional":false},{"id":25181515163,"package_name":"follow-redirects","ecosystem":"npm","requirements":"1.15.11","direct":false,"kind":"runtime","optional":false},{"id":25181515164,"package_name":"form-data","ecosystem":"npm","requirements":"4.0.4","direct":false,"kind":"runtime","optional":false},{"id":25181515165,"package_name":"function-bind","ecosystem":"npm","requirements":"1.1.2","direct":false,"kind":"runtime","optional":false},{"id":25181515166,"package_name":"get-intrinsic","ecosystem":"npm","requirements":"1.3.0","direct":false,"kind":"runtime","optional":false},{"id":25181515167,"package_name":"get-proto","ecosystem":"npm","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":25181515168,"package_name":"gopd","ecosystem":"npm","requirements":"1.2.0","direct":false,"kind":"runtime","optional":false},{"id":25181515169,"package_name":"has-symbols","ecosystem":"npm","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":25181515170,"package_name":"has-tostringtag","ecosystem":"npm","requirements":"1.0.2","direct":false,"kind":"runtime","optional":false},{"id":25181515171,"package_name":"hasown","ecosystem":"npm","requirements":"2.0.2","direct":false,"kind":"runtime","optional":false},{"id":25181515172,"package_name":"math-intrinsics","ecosystem":"npm","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":25181515173,"package_name":"mime-db","ecosystem":"npm","requirements":"1.52.0","direct":false,"kind":"runtime","optional":false},{"id":25181515174,"package_name":"mime-types","ecosystem":"npm","requirements":"2.1.35","direct":false,"kind":"runtime","optional":false},{"id":25181515175,"package_name":"proxy-from-env","ecosystem":"npm","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false}]}],"score":null,"created_at":"2023-09-11T11:54:36.824Z","updated_at":"2026-05-01T14:04:14.570Z","avatar_url":"https://github.com/ConservationInternational.png","language":"Jupyter Notebook","category":"Consumption","sub_category":"Agriculture and Nutrition","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# Resilience Atlas\n\n## Architecture\n\nThis repository contains all the code and documentation necessary to set up and deploy the project. It is organised in 4 main subdirectories, with accompanying documentation inside each.\n\n| Subdirectory name | Description                                                 | Documentation                                          | Tech Stack                    |\n|-------------------|-------------------------------------------------------------|--------------------------------------------------------|-------------------------------|\n| frontend          | Frontend application                                        | [frontend/README.md](frontend/README.md)               | React 18.3.1, Next.js 14.2.15, Node.js 22.11.0 |\n| backend           | The Ruby on Rails backend application (API + backoffice)    | [backend/README.md](backend/README.md)                 | Ruby 3.4.4, Rails 7.2.x      |\n| cloud_functions   | cloud functions code folder                                 | [cloud_functions/README.md](cloud_functions/README.md) | Various AWS Lambda functions  |\n| infrastructure    | The Terraform project for TiTiler COG tiler as AWS lambda   | [infrastructure/README.md](infrastructure/README.md)   | Terraform, AWS                |\n| data              | data folder where diverse scripts for data management lives | [data/README.md](data/README.md)                       | Various data processing tools |\n\n## CI/CD Process\n\nThe project uses GitHub Actions for continuous integration and deployment. The CI/CD workflows are organized into comprehensive testing and deployment categories:\n\n### Testing Workflows\n\nThe project implements comprehensive testing with Docker-based workflows:\n\n#### Backend Tests (`backend_tests.yml`)\n- **Testing**: RSpec test suite with PostgreSQL database\n- **System Tests**: Capybara-based browser tests for admin interface using Chrome\n- **Linting**: RuboCop code style checks  \n- **Security**: Brakeman security analysis and Bundle Audit for dependency vulnerabilities\n- **Triggers**: Runs on pushes/PRs to the `backend/` directory\n\n#### Frontend Tests (`frontend_tests.yml`)\n- **Unit Testing**: Jest tests for components and utilities\n- **E2E Testing**: Cypress tests on Chrome and Firefox browsers\n- **Linting**: ESLint and TypeScript validation\n- **Build Verification**: Ensures application builds successfully\n- **Triggers**: Runs on pushes/PRs to the `frontend/` directory\n\n#### Integration Tests (`integration_tests.yml`)\n- **Full-Stack Testing**: Complete frontend-backend integration testing\n- **API Testing**: Backend integration tests focused on API endpoints\n- **Performance Testing**: Basic response time validation\n- **Data Consistency**: Verifies data flows correctly between systems\n- **Triggers**: Runs on pushes/PRs to `develop` and `main` branches\n\nKey testing features:\n- Docker-based isolated test environments\n- Multi-browser E2E testing (Chrome and Firefox)\n- System tests for admin interface using Capybara and Chrome\n- Comprehensive test reporting with JUnit integration\n- Test artifacts collection (screenshots, videos on failure)\n- Health checks and service dependency management\n\n### Build Optimization\n\nThe project uses advanced Docker buildx caching strategies to significantly speed up CI/CD builds:\n\n#### Caching Features\n- **Content-based cache keys**: Cache invalidation based on Dockerfile and dependency file changes\n- **Multi-level fallback**: Progressive cache key fallback for maximum cache reuse\n- **GitHub Actions cache**: Persistent caching across workflow runs (10GB limit)\n- **Registry-based caching**: Future-ready for cross-repository layer sharing\n- **Coordinated builds**: Docker Bake configuration for multi-service coordination\n\n#### Performance Benefits\n- **50-80% reduction** in build times for incremental changes\n- **90%+ cache hit rate** for dependency-only changes\n- **Parallel build execution** with shared cache layers\n- **Reduced GitHub Actions minutes** consumption\n\n#### Developer Tools\n- **Cache validation script**: `./test-docker-cache.sh` for local testing\n- **Cache analytics**: Build-time performance monitoring\n- **Documentation**: Comprehensive caching strategy in `.github/DOCKER_CACHE_STRATEGY.md`\n\nCache keys are generated based on:\n- Dockerfile content hashes\n- Dependency file hashes (Gemfile.lock, package-lock.json)\n- Runtime versions (Ruby, Node.js)\n- Daily cache refresh for staleness prevention\n\nSee [.github/TESTING.md](.github/TESTING.md) for detailed testing documentation.\n\n### EC2 Deployment Workflows\n\nThe project uses AWS EC2 instances for deployment with separate workflows for staging and production:\n\n#### Staging Deployment (`ec2_deploy_staging.yml`)\n- **Triggers**: Pushes to the `develop` branch (after tests pass)\n- **Target**: staging.resilienceatlas.org\n- **Features**: Deploys directly to EC2 instance using Docker Compose\n- **Environment**: Uses staging-specific environment variables and secrets\n- **Database Refresh**: Automatically copies production database to staging before deployment\n\n#### Production Deployment (`ec2_deploy_production.yml`)\n- **Triggers**: Pushes to the `main` branch (after all tests pass)\n- **Target**: resilienceatlas.org\n- **Features**: Deploys directly to EC2 instance using Docker Compose\n- **Environment**: Uses production-specific environment variables and secrets\n\nKey deployment features:\n- Direct EC2 deployment using Docker Compose\n- Application Load Balancer for traffic routing\n- Just-in-time SSH access during deployment\n- Automatic database refresh for staging environment\n- Health checks and rollback capabilities\n- AWS Secrets Manager for secure credential management\n- Deployment only proceeds after all relevant tests pass\n- **Staging database refresh**: Production data automatically copied to staging for realistic testing\n\n### TiTiler COGs Workflows\n\nThe TiTiler COGs service has dedicated workflows for AWS Lambda deployment:\n\n#### TiTiler COGs Deployment (`titiler_cogs_deployment.yaml`)\n\n- **Feature Branch Deployment**: Automatically deploys feature branches to isolated AWS stacks for testing\n- **Production Deployment**: Deploys master branch to production stack\n- **Manual Deployment**: Supports workflow dispatch for manual deployments\n- **Triggers**: Runs on pushes to `cloud_functions/titiler_cogs/` directory\n\nKey features:\n- Uses AWS SAM CLI for serverless application deployment\n- Creates isolated stacks for each feature branch with unique FQDNs\n- Container-based builds for consistent environments\n- Role-based AWS authentication for secure deployments\n- Supports custom domain names via Route53\n\n#### TiTiler COGs Cleanup (`titiler_cogs_cleanup.yaml`)\n\n- **Automatic Cleanup**: Removes AWS stacks when feature branches are deleted\n- **Manual Cleanup**: Supports workflow dispatch for manual stack deletion\n- **Cost Optimization**: Prevents accumulation of unused AWS resources\n\nThe TiTiler COGs service provides dynamic tile generation for Cloud Optimized GeoTIFFs (COGs) and is deployed as AWS Lambda functions behind API Gateway. See [cloud_functions/titiler_cogs/README.md](cloud_functions/titiler_cogs/README.md) for detailed deployment and usage instructions.\n\n## Production Deployment\n\n### AWS EC2 Deployment\n\nThe application is deployed directly to AWS EC2 instances using Docker Compose for both staging and production environments:\n\n- **Staging**: [staging.resilienceatlas.org](https://staging.resilienceatlas.org) (deployed from `develop` branch)\n- **Production**: [resilienceatlas.org](https://resilienceatlas.org) (deployed from `main` branch)\n\n#### Deployment Architecture\n\n- **Hosting**: EC2 instances running Docker Compose\n- **Load Balancing**: Application Load Balancer for traffic distribution and SSL termination\n- **Secret Management**: Environment variables and AWS Secrets Manager for secure configuration\n- **SSH Access**: Just-in-time SSH access during deployments for security\n- **Monitoring**: CloudWatch logs and instance metrics\n\n#### Setting Up EC2 Deployment\n\n1. **Prerequisites**: AWS account with appropriate IAM permissions, Python 3.8+, AWS CLI configured\n\n2. **Infrastructure Setup**:\n   ```bash\n   cd scripts\n   pip install -r requirements.txt\n   ./setup_complete_infrastructure.sh\n   ```\n\n3. **Configure GitHub Actions**: Set up repository secrets for automatic deployments\n\n4. **Environment Configuration**: Update environment files and AWS secrets with real values\n\nSee [scripts/README.md](scripts/README.md) for detailed setup instructions and script documentation.\n\n## Docker Setup\n\nThe project includes Docker configuration for easy development and deployment. There are three Docker Compose configurations:\n\n- `docker-compose.yml` - Production setup (frontend + backend only)\n- `docker-compose.dev.yml` - Development setup (includes PostgreSQL database)\n- `docker-compose.test.yml` - Test environment for running automated tests\n\n### Prerequisites\n\n- [Docker](https://docs.docker.com/get-docker/)\n- [Docker Compose](https://docs.docker.com/compose/install/)\n\n### Quick Start\n\n1. **Clone the repository and navigate to the project root**\n\n2. **Set up environment variables**\n   ```bash\n   cp .env.example .env\n   # Edit .env with your configuration values\n   ```\n\n3. **For development (includes database):**\n   ```bash\n   docker compose -f docker-compose.dev.yml up --build\n   ```\n   \n   This will start:\n   - PostgreSQL database on port 5432\n   - Backend API on http://localhost:3001\n   - Frontend application on http://localhost:3000\n\n4. **For production:**\n   ```bash\n   docker compose up --build\n   ```\n   \n   This will start:\n   - Backend API on http://localhost:3001\n   - Frontend application on http://localhost:3000\n   \n   Note: For production, you need to provide your own PostgreSQL database via the `DATABASE_URL` environment variable.\n\n### Running Tests\n\n#### Backend Tests (RSpec)\n```bash\n# Run all backend tests (linting, security, unit tests - excludes system tests by default)\ndocker compose -f docker-compose.test.yml run --rm backend-test ./bin/test\n\n# Run all tests including system tests\ndocker compose -f docker-compose.test.yml run --rm backend-test ./bin/test rspec\n\n# Run specific test commands\ndocker compose -f docker-compose.test.yml run --rm backend-test ./bin/test rspec\ndocker compose -f docker-compose.test.yml run --rm backend-test ./bin/test lint\ndocker compose -f docker-compose.test.yml run --rm backend-test ./bin/test security\ndocker compose -f docker-compose.test.yml run --rm backend-test ./bin/test audit\n\n# Run specific test file\ndocker compose -f docker-compose.test.yml run --rm backend-test ./bin/test rspec spec/models/user_spec.rb\n\n# Show all available commands\ndocker compose -f docker-compose.test.yml run --rm backend-test ./bin/test help\n```\n\n#### Frontend Tests (ESLint/TypeScript/Prettier)\n```bash\n# Run all frontend checks (linting, type-check, prettier, build)\ndocker compose -f docker-compose.test.yml run --rm --no-deps frontend-test ./bin/test\n\n# Run specific test commands\ndocker compose -f docker-compose.test.yml run --rm --no-deps frontend-test ./bin/test lint\ndocker compose -f docker-compose.test.yml run --rm --no-deps frontend-test ./bin/test type-check\ndocker compose -f docker-compose.test.yml run --rm --no-deps frontend-test ./bin/test prettier\ndocker compose -f docker-compose.test.yml run --rm --no-deps frontend-test ./bin/test build\n\n# Run Cypress e2e tests (requires backend services)\ndocker compose -f docker-compose.test.yml run --rm frontend-test ./bin/test cypress\n\n# Show all available commands\ndocker compose -f docker-compose.test.yml run --rm --no-deps frontend-test ./bin/test help\n```\n\n#### System Tests (Browser-based)\nSystem tests use Capybara with Chrome to test the admin interface and user interactions:\n\n```bash\n# Run system tests only (with Chrome verification)\ndocker compose -f docker-compose.test.yml run --rm backend-test ./bin/test system\n\n# Run system tests (skip Chrome verification)\ndocker compose -f docker-compose.test.yml run --rm backend-test ./bin/test system-force\n\n# Verify Chrome setup for system tests\ndocker compose -f docker-compose.test.yml run --rm backend-test ./bin/test verify-chrome\n\n# Run specific system test file\ndocker compose -f docker-compose.test.yml run --rm backend-test ./bin/test system spec/systems/admin/auth_spec.rb\n```\n\nSystem tests cover:\n- Admin authentication and authorization\n- CRUD operations for all admin models (layers, indicators, journeys, etc.)\n- File uploads and data management\n- User interface interactions\n- Browser-based workflows\n\n**Note**: System tests require Chrome and Xvfb for headless browser testing. They are excluded from the default test run due to longer execution time.\n\n#### Integration Tests (Full E2E)\n```bash\ndocker compose -f docker-compose.test.yml up --abort-on-container-exit\n```\n\n### Fixing Linting Issues\n\nThe project uses ESLint and RuboCop for code quality enforcement. Common issues and their fixes:\n\n#### Backend (RuboCop)\n```bash\n# Auto-fix most RuboCop issues\ndocker compose -f docker-compose.test.yml run --rm backend-test bash -c \"bundle exec rubocop -A\"\n\n# Run specific checks\ndocker compose -f docker-compose.test.yml run --rm backend-test ./bin/test lint\n```\n\n#### Frontend (ESLint)\nCommon ESLint warnings and fixes:\n\n1. **Console statements**: Add `// eslint-disable-next-line no-console` before console statements in development code\n2. **Unused variables**: Remove unused imports and variables, or prefix with underscore if needed for interface compliance\n3. **React Hook dependencies**: Add missing dependencies to useEffect, useCallback, and useMemo dependency arrays\n4. **TypeScript any types**: Add `// eslint-disable-next-line @typescript-eslint/no-explicit\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["deforestation","forest-monitoring","redux","climate","wri-api","biodiversity","wordpress","half-earth","arcgisjs","rw"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/1073","html_url":"https://ost.ecosyste.ms/projects/1073"}