{"id":1164,"name":"Custom Scripts Sentinel Hub","description":"A repository of custom scripts to be used with Sentinel Hub.","url":"https://github.com/sentinel-hub/custom-scripts","last_synced_at":"2026-05-30T04:30:41.890Z","repository":{"id":37270543,"uuid":"106413103","full_name":"sentinel-hub/custom-scripts","owner":"sentinel-hub","description":"A repository of custom scripts to be used with Sentinel Hub","archived":false,"fork":false,"pushed_at":"2026-02-20T11:37:37.000Z","size":1216353,"stargazers_count":696,"open_issues_count":5,"forks_count":306,"subscribers_count":55,"default_branch":"main","last_synced_at":"2026-04-07T03:03:03.003Z","etag":null,"topics":["earth-observation","remote-sensing","sentinel-hub"],"latest_commit_sha":null,"homepage":"https://custom-scripts.sentinel-hub.com/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-sa-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sentinel-hub.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2017-10-10T12:18:17.000Z","updated_at":"2026-03-04T04:58:50.000Z","dependencies_parsed_at":"2023-10-14T14:09:53.193Z","dependency_job_id":"0e8115e9-e078-4dd8-bd73-393c74c4118e","html_url":"https://github.com/sentinel-hub/custom-scripts","commit_stats":{"total_commits":1460,"total_committers":65,"mean_commits":22.46153846153846,"dds":0.7842465753424658,"last_synced_commit":"ba2159c15ef939365f37a9ab01b06a688dfbe1a1"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sentinel-hub/custom-scripts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentinel-hub%2Fcustom-scripts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentinel-hub%2Fcustom-scripts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentinel-hub%2Fcustom-scripts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentinel-hub%2Fcustom-scripts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sentinel-hub","download_url":"https://codeload.github.com/sentinel-hub/custom-scripts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentinel-hub%2Fcustom-scripts/sbom","scorecard":{"id":811450,"data":{"date":"2025-08-11","repo":{"name":"github.com/sentinel-hub/custom-scripts","commit":"46b64d5bbb511c3056a2a3746bb05906eb18f755"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6,"checks":[{"name":"Maintained","score":10,"reason":"16 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":7,"reason":"Found 10/13 approved changesets -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/page.yml:18","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: Creative Commons Attribution Share Alike 4.0 International: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/page.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/sentinel-hub/custom-scripts/page.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/page.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/sentinel-hub/custom-scripts/page.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/page.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/sentinel-hub/custom-scripts/page.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/page.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/sentinel-hub/custom-scripts/page.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/page.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/sentinel-hub/custom-scripts/page.yml/main?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-23T13:18:30.925Z","repository_id":37270543,"created_at":"2025-08-23T13:18:30.929Z","updated_at":"2025-08-23T13:18:30.929Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31584816,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"online","status_checked_at":"2026-04-09T02:00:06.848Z","response_time":112,"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":"sentinel-hub","name":"Sentinel Hub","uuid":"31830596","kind":"organization","description":"Sentinel Hub services by Sinergise Solutions d.o.o.","email":"info@sentinel-hub.com","website":"https://www.sentinel-hub.com","location":null,"twitter":"sentinel_hub","company":null,"icon_url":"https://avatars.githubusercontent.com/u/31830596?v=4","repositories_count":39,"last_synced_at":"2025-01-19T06:51:54.081Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/sentinel-hub","funding_links":[],"total_stars":4008,"followers":309,"following":0,"created_at":"2022-11-09T17:30:34.890Z","updated_at":"2025-01-19T06:51:54.081Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sentinel-hub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sentinel-hub/repositories"},"packages":[],"commits":{"id":1254654,"full_name":"sentinel-hub/custom-scripts","default_branch":"main","total_commits":1522,"total_committers":71,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":21.43661971830986,"dds":0.7930354796320631,"past_year_total_commits":27,"past_year_total_committers":5,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":5.4,"past_year_dds":0.2222222222222222,"last_synced_at":"2026-04-09T04:36:32.425Z","last_synced_commit":"fee59e44715018949b0077975405b06670e414b0","created_at":"2023-03-27T11:50:29.553Z","updated_at":"2026-03-13T01:01:40.689Z","committers":[{"name":"MonjaSebela","email":"54274296+MonjaSebela","login":"MonjaSebela","count":315},{"name":"Jonas Viehweger","email":"jonas.viehweger@sinergise.com","login":"jonasViehweger","count":203},{"name":"Sabina Dolenc","email":"sabina.dolenc@sinergise.com","login":"sabinadolenc","count":121},{"name":"Monja Šebela","email":"monja.sebela@sinergise.com","login":null,"count":98},{"name":"Matej Batič","email":"matej.batic@sinergise.com","login":"batic","count":98},{"name":"gmilcinski","email":"grega.milcinski@sinergise.com","login":"gmilcinski","count":91},{"name":"Blaz Sovdat","email":"blaz.sovdat@gmail.com","login":"blazs","count":64},{"name":"wray","email":"william.ray@sinergise.com","login":null,"count":58},{"name":"Dorothyrono","email":"ronodorothy@yahoo.com","login":"Dorothyrono","count":52},{"name":"azlinszky","email":"andras.zlinszky@sinergise.com","login":"azlinszkysinergise","count":46},{"name":"chorng","email":"chung.horng@sinergise.com","login":"chorng","count":40},{"name":"Maxim Lamare","email":"maxim.lamare@sinergise.com","login":null,"count":30},{"name":"mkampen","email":"max.kampen@sinergise.com","login":"Kampen1988","count":28},{"name":"Miha Kadunc","email":"miha.kadunc@sinergise.com","login":"mkadunc","count":26},{"name":"Gergely Padányi-Gulyás","email":"fegyi001@gmail.com","login":null,"count":24},{"name":"Marjan Sterk","email":"marjan.sterk@sinergise.com","login":"msterk","count":23},{"name":"mrepse","email":"marko.repse@sinergise.com","login":"mrepse","count":20},{"name":"Prashansa Gupta","email":"prashansa17793@gmail.com","login":"prashansa","count":16},{"name":"dr. Zlinszky András","email":"drza@si.net","login":null,"count":11},{"name":"Lucia Guardamino","email":"lucia.guardamino@sinergise.com","login":null,"count":10},{"name":"dkorais","email":"domagoj.korais@sinergise.com","login":"DomagojKorais","count":10},{"name":"iespinosa","email":"ignasi.espinosa@sinergise.com","login":"ignasieb","count":10},{"name":"Dino Horvat","email":"dino.horvat@sinergise.com","login":"horvatdino","count":10},{"name":"Matt Ballard","email":"98981827+mattballard-planet","login":"mattballard-planet","count":7},{"name":"Jonas Viehweger","email":"jonas.viehweger@planet.com","login":null,"count":6},{"name":"Matic Lubej","email":"matic.lubej@sinergise.com","login":"mlubej","count":6},{"name":"MarkWilliamMatthews","email":"mark@cyanolakes.com","login":"MarkWilliamMatthews","count":6},{"name":"Klemen Cankar","email":"klemen.cankar@sinergise.com","login":"kcankar","count":5},{"name":"ESC-QU","email":"83344701+ESC-QU","login":"ESC-QU","count":5},{"name":"zcernigoj","email":"54022976+zcernigoj","login":"zcernigoj","count":5},{"name":"lugeo17","email":"83663747+lugeo17","login":"lugeo17","count":4},{"name":"William Ray","email":"49454256+willrayeo","login":"willrayeo","count":4},{"name":"AmberMulder","email":"46423091+AmberMulder","login":"AmberMulder","count":4},{"name":"Arjan Geers","email":"arjan.geers@planet.com","login":null,"count":4},{"name":"pacoNGH","email":"114581458+pacoNGH","login":"pacoNGH","count":4},{"name":"Harel Dan","email":"harel.dunn@gmail.com","login":"hareldunn","count":3},{"name":"","email":"blazs@blazs-sinergise.localdomain","login":null,"count":3},{"name":"Hemali Majithia","email":"hemali.majithia@hemali.majithia-RNWPL25QH1","login":null,"count":3},{"name":"Daniel Thiex","email":"daniel.thiex@sinergise.com","login":"dthiex","count":3},{"name":"Dorothy Rono","email":"dorothy.rono@sinergise.com","login":"dorothyron","count":3},{"name":"Keenan Ganz","email":"38630604+s-kganz","login":"s-kganz","count":3},{"name":"Gregor Majcen","email":"gregor.majcen@sinergise.com","login":"gmajcen","count":3},{"name":"Adrok24","email":"adriandipaolo@gmail.com","login":"Adrok24","count":3},{"name":"dino.horvat","email":"dino.horvat@planet.com","login":null,"count":2},{"name":"","email":"bsovdat@blazs-sinergise.localdomain","login":null,"count":2},{"name":"Antoine Ducarne","email":"antoine@planet.com","login":"antoineDuc","count":2},{"name":"Peter Fogh","email":"PeterFogh","login":"PeterFogh","count":2},{"name":"Matt Ballard","email":"98981827+matthew-ballard","login":"matthew-ballard","count":2},{"name":"Dipankar Mandal","email":"dipankar.agengg@gmail.com","login":"dipankar05","count":2},{"name":"izibert","email":"igor.zibert@sinergise.com","login":"igor-sinergise","count":1},{"name":"pdrobnic","email":"primoz.drobnic@sinergise.com","login":"pdrobnic","count":1},{"name":"Charlie","email":"33491122+charliemoriarty","login":"charliemoriarty","count":1},{"name":"Kristof Van Tricht","email":"kristof.vantricht@vito.be","login":"kvantricht","count":1},{"name":"eerzin","email":"eva.erzin@sinergise.com","login":"eerzin","count":1},{"name":"Thomas Maschler","email":"thomas.maschler@planet.com","login":"thomas-maschler","count":1},{"name":"Daniel Thiex","email":"daniel.thiex@planet.com","login":null,"count":1},{"name":"Christoph Paulik","email":"christoph@fqxgftjfpp.kpn","login":null,"count":1},{"name":"Antonio Carlón","email":"antonio@GLaDOS-2.local","login":null,"count":1},{"name":"padanyi-gulyasg","email":"padanyi-gulyasg@si.net","login":null,"count":1},{"name":"padanyi-gulyasg","email":"padanyi-gulyasg@IT-1712.alig.hu","login":null,"count":1},{"name":"avrecko","email":"anja.vrecko@sinergise.com","login":null,"count":1},{"name":"aversnik","email":"anze.versnik@planet.com","login":null,"count":1},{"name":"Kristof Van Tricht","email":"kristofvantricht@hotmail.com","login":"kristofvt","count":1},{"name":"Marios S. Kyriakou","email":"mariosmsk@gmail.com","login":"Mariosmsk","count":1},{"name":"Matic Pečovnik","email":"44967517+MaticPecovnik","login":"MaticPecovnik","count":1},{"name":"Maxim Lamare","email":"32132761+maximlamare","login":"maximlamare","count":1},{"name":"Megha Devaraju","email":"megha.devaraju@sinergise.com","login":"megha-devaraju","count":1},{"name":"Michał Słapek","email":"28485371+mslapek","login":"mslapek","count":1},{"name":"Pablo Valdés","email":"p.valdes334@gmail.com","login":"pablovaldes","count":1},{"name":"PatrickKlotz","email":"94053158+PatFrdnnd","login":"PatFrdnnd","count":1},{"name":"preinzi","email":"90860411+preinzi","login":"preinzi","count":1}],"past_year_committers":[{"name":"azlinszky","email":"andras.zlinszky@sinergise.com","login":"azlinszkysinergise","count":21},{"name":"Jonas","email":"53001455+jonasViehweger","login":"jonasViehweger","count":2},{"name":"dino.horvat","email":"dino.horvat@planet.com","login":null,"count":2},{"name":"Antoine Ducarne","email":"antoine@planet.com","login":"antoineDuc","count":1},{"name":"aversnik","email":"anze.versnik@planet.com","login":null,"count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentinel-hub%2Fcustom-scripts/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-09T00:00:23.197Z","repositories_count":6212592,"commits_count":905832275,"contributors_count":34964641,"owners_count":1143569,"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":"sentinel-hub/custom-scripts","html_url":"https://github.com/sentinel-hub/custom-scripts","last_synced_at":"2026-04-11T05:01:00.207Z","status":"error","issues_count":32,"pull_requests_count":365,"avg_time_to_close_issue":12516828.3,"avg_time_to_close_pull_request":534562.6324786325,"issues_closed_count":30,"pull_requests_closed_count":351,"pull_request_authors_count":55,"issue_authors_count":30,"avg_comments_per_issue":1.875,"avg_comments_per_pull_request":0.38904109589041097,"merged_pull_requests_count":335,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":2,"past_year_pull_requests_count":23,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":1318725.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":17,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.5217391304347826,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":17,"created_at":"2023-05-09T10:36:23.067Z","updated_at":"2026-04-11T05:01:00.208Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentinel-hub%2Fcustom-scripts","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/sentinel-hub%2Fcustom-scripts/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":28,"CONTRIBUTOR":4},"pull_request_author_associations_count":{"CONTRIBUTOR":290,"MEMBER":37,"NONE":37,"COLLABORATOR":1},"issue_authors":{"moussmo":2,"maximlamare":2,"MirelSIG":1,"mkganyago":1,"abdallah-abdelmajeed":1,"geom16011":1,"nmt28":1,"smaprs":1,"garimss":1,"madi":1,"hagel-geomet":1,"JoeyFaulkner":1,"Narayana-Rao":1,"makovz":1,"CTO22":1,"dderanja":1,"GalenReich":1,"akerosenqvist":1,"AymanRahman":1,"SOWITMA":1,"Jiangchao3":1,"NelaJantol":1,"mslapek":1,"barbierimauro":1,"Ardweaden":1,"albertofrance":1,"Barcelona2019":1,"jonasViehweger":1,"tommy0827":1,"az16735":1},"pull_request_authors":{"MonjaSebela":78,"jonasViehweger":42,"sabinadolenc":37,"azlinszkysinergise":26,"maximlamare":18,"chorng":16,"Dorothyrono":15,"Kampen1988":13,"willrayeo":10,"fegyi001":8,"AmberMulder":7,"horvatdino":6,"dthiex":6,"TIZNEGAR":6,"lugeo17":5,"dipankar05":4,"matthew-ballard":4,"Jinta0Li":4,"msterk":4,"ignasieb":3,"ajgeers":3,"antoineDuc":3,"zcernigoj":3,"cpaulik":2,"preinzi":2,"PeterFogh":2,"charliemoriarty":2,"PatFrdnnd":2,"hareldunn":2,"majcn":2,"MarkWilliamMatthews":2,"hemalimajithia":2,"kvantricht":2,"prashansa":2,"mlubej":2,"megha-devaraju":1,"mattballard-planet":1,"zigacernigoj":1,"antoniocarlon":1,"ESC-QU":1,"s-kganz":1,"blazs":1,"pablovaldes":1,"Mariosmsk":1,"pdrobnic":1,"ChungXiangHong":1,"eerzin":1,"Brolensky":1,"DomagojKorais":1,"MaticPecovnik":1,"zlatomirdd":1,"Aferpo83":1,"pacoNGH":1,"Adrok24":1,"mslapek":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-13T00:00:15.727Z","repositories_count":14240319,"issues_count":34631349,"pull_requests_count":113115597,"authors_count":11233269,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"NONE":2},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":18},"past_year_issue_authors":{"GalenReich":1,"hagel-geomet":1},"past_year_pull_request_authors":{"azlinszkysinergise":11,"horvatdino":3,"jonasViehweger":2,"antoineDuc":1,"Kampen1988":1},"maintainers":[{"login":"sabinadolenc","count":37,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sabinadolenc"},{"login":"blazs","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/blazs"}],"active_maintainers":[]},"events":{"total":{"DeleteEvent":2,"MemberEvent":2,"PullRequestEvent":41,"ForkEvent":13,"IssuesEvent":4,"WatchEvent":31,"IssueCommentEvent":24,"PushEvent":35,"PullRequestReviewCommentEvent":16,"PullRequestReviewEvent":16,"CreateEvent":5,"CommitCommentEvent":1},"last_year":{"DeleteEvent":1,"MemberEvent":1,"PullRequestEvent":15,"ForkEvent":5,"IssuesEvent":2,"WatchEvent":18,"IssueCommentEvent":4,"PushEvent":14,"PullRequestReviewEvent":2,"CreateEvent":2}},"keywords":["earth-observation","remote-sensing","sentinel-hub"],"dependencies":[{"ecosystem":"npm","filepath":"sentinel-2/ulyssys_water_quality_viewer/package.json","sha":null,"kind":"manifest","created_at":"2023-10-14T14:09:50.499Z","updated_at":"2023-10-14T14:09:50.499Z","repository_link":"https://github.com/sentinel-hub/custom-scripts/blob/main/sentinel-2/ulyssys_water_quality_viewer/package.json","dependencies":[{"id":14196992343,"package_name":"fs-extra","ecosystem":"npm","requirements":"^8.1.0","direct":true,"kind":"runtime","optional":false},{"id":14196992344,"package_name":"linereader","ecosystem":"npm","requirements":"^1.1.0","direct":true,"kind":"runtime","optional":false},{"id":14196992355,"package_name":"minify","ecosystem":"npm","requirements":"^5.0.0","direct":true,"kind":"runtime","optional":false},{"id":14196992409,"package_name":"npm-watch","ecosystem":"npm","requirements":"^0.6.0","direct":true,"kind":"runtime","optional":false},{"id":14196992416,"package_name":"os","ecosystem":"npm","requirements":"^0.1.1","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/page.yml","sha":null,"kind":"manifest","created_at":"2023-09-21T19:47:01.099Z","updated_at":"2023-09-21T19:47:01.099Z","repository_link":"https://github.com/sentinel-hub/custom-scripts/blob/main/.github/workflows/page.yml","dependencies":[{"id":13856900819,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":13856900820,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":13856900821,"package_name":"actions/configure-pages","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":13856900822,"package_name":"actions/upload-pages-artifact","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":13856900823,"package_name":"actions/deploy-pages","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2023-09-21T19:47:01.591Z","updated_at":"2023-09-21T19:47:01.591Z","repository_link":"https://github.com/sentinel-hub/custom-scripts/blob/main/Gemfile","dependencies":[{"id":13856900849,"package_name":"github-pages","ecosystem":"rubygems","requirements":"~\u003e 228","direct":true,"kind":"development","optional":false},{"id":13856900850,"package_name":"just-the-docs","ecosystem":"rubygems","requirements":"= 0.4.2","direct":true,"kind":"runtime","optional":false},{"id":13856900851,"package_name":"webrick","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856900852,"package_name":"rake","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":13856900853,"package_name":"html-proofer","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false}]}],"score":10.815187764075905,"created_at":"2023-09-11T11:54:37.147Z","updated_at":"2026-05-30T04:30:41.915Z","avatar_url":"https://github.com/sentinel-hub.png","language":"JavaScript","category":"Sustainable Development","sub_category":"Data Catalogs and Interfaces","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# Sentinel Hub Custom Script Repository\n\n![Examples of visualizations](assets/images/custom-scripts-examples.jpg)\n\nThis repository contains a collection of custom scripts for [Sentinel Hub](https://www.sentinel-hub.com/), which can be fed to the services via the URL.\n\nCustom scripts are a piece of Javascript code, used to visualize satellite imagery and to control what values the Sentinel Hub services will return. Any visualization of any constellation (e.g. Sentinel-2 satellite), even a simple true color composite, is dictated by a custom script.\n\nSee [here](https://docs.sentinel-hub.com/api/latest/evalscript/v3/) for more information on how to write your own evalscript.\n\n## Contribute to Custom Scripts\n\nHave a look at the [template](/contribute/example) for an example of how a script page can be structured.\n\nYou can also have a look at other scripts to see how they are structured.\n\nFor instructions on how custom scripts are structured have a look at this [tutorial](https://www.sentinel-hub.com/explore/education/custom-scripts-tutorial/), or at the [official documenation](https://docs.sentinel-hub.com/api/latest/evalscript/).\n\n---\n\n### How to publish your own product\n\n- Fork the repository to get your own copy of the custom-scripts  \n  _It is easiest to fork the repository on GitHub, but as some of you might not have GitHub account, or don't want to bother with all this versioning and collaboration tools, you can also just download the whole repository as Zip file and work from there._\n- Create a new directory entry for your custom script  \n  _Copy the `example` directory to proper directory, based on which datasource (satellite) you are publishing the product for, to something that describes what the product is about, say `my_algorithm`._  \n  _Preferably use [\"snake_case\"](https://simple.wikipedia.org/wiki/Snake_case) (underscores instead of spaces) if more than one word is used._\n- Fill in the details about the project in the `README.md` file.  \n  _Obviously, you'll want to remove this chapter, but use the rest of the file as a template._  \n  _Have a look around at other `README.md` files to see how to include images, format the text and generally use the GitHub [markdown](https://help.github.com/categories/writing-on-github/) (e.g. [here](../sentinel-2/cby_cloud_detection/README.md) for mathematical formulas or [here](../sentinel-2/ndvi_uncertainty/README.md) for adding images)._\n- Implement the product in the `script.js` file.  \n  _The most work is of course the JavaScript implementation of the product. The `example` folder includes an empty custom script with comments that will hopefully help you build your own custom script._\n- Add an entry pointing to your script to the top level markdown file (i.e. if adding a script for Sentinel 2 add the link to `sentinel-2.md` in the folder `sentinel-2`).  \n  _A link and a short description will do._\n- And create a pull request :).\n  _There is extensive help on creating pull requests on GitHub [help](https://help.github.com/categories/collaborating-with-issues-and-pull-requests/), but if you feel overwhelmed by this step and would still like to contribute, send us the folder you've created and we will take care of it for you._\n\nPublishing your product should be easy, nevertheless, any feedback and ideas how to improve or make the process simpler is very appreciated.\n\n#### Test your changes locally\n\nThis is optional but makes Pull Requests quicker to handle since they should have less mistakes.  \nBefore you create the PR you can check if everything looks right on the website. To do this follow these steps which are based on [Testing your GitHub Pages site locally with Jekyll](https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/testing-your-github-pages-site-locally-with-jekyll) page:\n\n##### Linux\n\n- In the root directory of your fork open a terminal\n- Install ruby\n  - Ubuntu: `sudo apt install ruby ruby-dev`\n- Install bundler\n  - `gem install bundler`\n  - On Ubuntu you might have to add `sudo`\n- Create a Gemfile\n  - In the root folder of the repository (where the `_config.yml` file is) create a new file `Gemfile`.\n  - i.e `touch Gemfile`\n  - and add the following content:\n\n```\nsource 'https://rubygems.org'\ngem \"github-pages\", \"~\u003e GH_VERSION\", group: :jekyll_plugins\ngem \"just-the-docs\"\n```\n\nReplace `GH_VERSION` with the version number that is displayed next to github-pages [here](https://pages.github.com/versions/).\n\n- Serve the page\n  - First install all necessary gems with `bundle install`\n  - then the site can be built with `bundle exec jekyll serve`\n  - The site should then be visible on `127.0.0.1:4000`\n\n##### macOS\n\n- In the root directory of your fork open a terminal\n- Install ruby\n\n  - `brew install chruby ruby-install xz`\n\n    - If homebrew hasn't been installed yet, intall homebrew\n\n    ```\n    /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n    ```\n\n  - `ruby-install ruby 3.1.3`\n  - After installation run the following codes:\n\n  ```\n  echo \"source $(brew --prefix)/opt/chruby/share/chruby/chruby.sh\" \u003e\u003e ~/.zshrc\n  echo \"source $(brew --prefix)/opt/chruby/share/chruby/auto.sh\" \u003e\u003e ~/.zshrc\n  echo \"chruby ruby-3.1.3\" \u003e\u003e ~/.zshrc # run 'chruby' to see actual version\n  ```\n\n  - Quit and relaunch Terminal, then check that everything with `ruby -v`\n  - It should show ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) or a newer version\n\n- Install Jekyll\n  - `gem install jekyll`\n- Install bundler\n  - `gem install bundler`\n- Following the **Create a Gemfile** step in the Linux section\n- Serve the page\n\n  - First install all necessary gems with `bundle install`\n  - Add the missing webrick package with `bundle add webrick`\n\n    - Run this command again when the following error message pops out:\n\n    ```\n    bundler: failed to load command: jekyll\n    ```\n\n  - then the site can be built with `bundle exec jekyll serve`\n  - The site should then be visible on `127.0.0.1:4000`\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["ogc-services","sentinel-2","eo-data","eo-research","color-perception","true-color","cloud-detector"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/1164","html_url":"https://ost.ecosyste.ms/projects/1164"}