{"id":637,"name":"Treetracker","description":"Coordinates the digital capture of tree growth data in the field, allowing to establish employment for people living in extreme poverty based on tree planting.","url":"https://github.com/Greenstand/treetracker-android","last_synced_at":"2026-05-13T17:06:31.539Z","repository":{"id":37276107,"uuid":"103445150","full_name":"Greenstand/treetracker-android","owner":"Greenstand","description":"Treetracker is Greenstands open source Android app to track and verify reforestation efforts globally. NEW DEVELOPERS:  Please refer to the README for is issue milestones and topics!  https://github.com/Greenstand/treetracker-android/blob/master/README.md","archived":false,"fork":false,"pushed_at":"2026-05-08T23:19:05.000Z","size":114489,"stargazers_count":97,"open_issues_count":137,"forks_count":106,"subscribers_count":17,"default_branch":"master","last_synced_at":"2026-05-09T01:29:06.098Z","etag":null,"topics":["android"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Greenstand.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","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":"AGENTS.md","dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":"https://www.paypal.com/donate/?hosted_button_id=3YGXULRCRZZEQ"}},"created_at":"2017-09-13T20:05:32.000Z","updated_at":"2026-05-08T23:25:41.000Z","dependencies_parsed_at":"2023-12-17T04:33:29.969Z","dependency_job_id":"c4dd3ecd-f546-4cf4-bb38-9780cb694798","html_url":"https://github.com/Greenstand/treetracker-android","commit_stats":{"total_commits":1475,"total_committers":49,"mean_commits":"30.102040816326532","dds":0.6657627118644067,"last_synced_commit":"13e8a65b4edf480ea1c081ec338a6509ea93d0a9"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/Greenstand/treetracker-android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Greenstand%2Ftreetracker-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Greenstand%2Ftreetracker-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Greenstand%2Ftreetracker-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Greenstand%2Ftreetracker-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Greenstand","download_url":"https://codeload.github.com/Greenstand/treetracker-android/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Greenstand%2Ftreetracker-android/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32992004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"ssl_error","status_checked_at":"2026-05-13T13:14:51.610Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"Greenstand","name":"Greenstand","uuid":"25363578","kind":"organization","description":"Treetracker - Addressing Poverty and Climate Change through transparency in tree growing efforts","email":"info@greenstand.org","website":"https://app.gitbook.com/@greenstand/s/engineering/","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/25363578?v=4","repositories_count":54,"last_synced_at":"2023-03-03T22:46:34.987Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/Greenstand","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-14T06:13:32.341Z","updated_at":"2023-03-03T22:46:35.150Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Greenstand","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Greenstand/repositories"},"packages":[],"commits":{"id":1254312,"full_name":"Greenstand/treetracker-android","default_branch":"master","total_commits":1543,"total_committers":58,"total_bot_commits":1,"total_bot_committers":1,"mean_commits":26.603448275862068,"dds":0.6804925469863902,"past_year_total_commits":60,"past_year_total_committers":12,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":5.0,"past_year_dds":0.3833333333333333,"last_synced_at":"2026-04-06T23:14:38.424Z","last_synced_commit":"4928df91d4e283ac98c43e9c7f3f5babea98a1f2","created_at":"2023-03-27T11:32:01.141Z","updated_at":"2026-04-06T23:10:11.677Z","committers":[{"name":"Matthew Xi","email":"matthew.fullstackgis@gmail.com","login":"ZavenArra","count":493},{"name":"Elforama","email":"elforama@gmail.com","login":"Elforama","count":335},{"name":"Taofeek Oduola","email":"oduola.taofeekkola@gmail.com","login":"EngrTaofeek","count":107},{"name":"Arun Bakt","email":"arunbakt@gmail.com","login":"arunbakt","count":99},{"name":"Treetracker Automation","email":"automation@treetracker.org","login":null,"count":67},{"name":"Peacenux","email":"peacenguyen1@gmail.com","login":null,"count":52},{"name":"Lawrence Muller","email":"lawrencejmuller@gmail.com","login":null,"count":50},{"name":"LaviniaDragunoi","email":"lavinia.dragunoi@yahoo.ro","login":"LaviniaDragunoi","count":47},{"name":"DavidEzraJay","email":"Jay@greenstand.org","login":"Davidezrajay","count":42},{"name":"emmanue","email":"brinkcorp@gmail.com","login":"emmanue","count":35},{"name":"Jhoon Saravia","email":"jhoonsar@gmail.com","login":"jhoon","count":25},{"name":"Ahmed Salem","email":"mozarty11@gmail.com","login":"mozarty","count":21},{"name":"Sebastian Gärtner","email":"sg@esea.co.tz","login":"sebastiangaertner","count":19},{"name":"Caleb Langat","email":"95022986+Mzazi25","login":"Mzazi25","count":17},{"name":"Rick Frank","email":"rfrank@dominionsw.com","login":"DominionSoftware","count":15},{"name":"Surbhi79","email":"spate212@nyit.edu","login":"Surbhi79","count":13},{"name":"lastforeverzl","email":"lastforeverzl@gmail.com","login":"lastforeverzl","count":9},{"name":"Darren Gu","email":"darrengyl@gmail.com","login":"darrengyl","count":7},{"name":"Matthew Xi","email":"matt@winterroot.net","login":null,"count":6},{"name":"Gaurav","email":"gauravjain.dtu@gmail.com","login":"gaurav133","count":6},{"name":"Hening Zheng","email":"heningzheng@henings-mbp.home","login":null,"count":5},{"name":"joshikapujari","email":"pjoshika811@gmail.com","login":"Joshika8055","count":4},{"name":"Habib Shakibanejad","email":"35790658+habbs19","login":"habbs19","count":4},{"name":"Ezra Kanake","email":"10kanake@gmail.com","login":"kanake10","count":4},{"name":"EsraaAkram","email":"totalappsingplay@gmail.com","login":"EsraaAkram","count":4},{"name":"Siddharth sharma","email":"ethicalhacker365@gmail.com","login":"sidsharma2002","count":4},{"name":"Anup0101","email":"anup.iyer.0101@gmail.com","login":null,"count":4},{"name":"Azri","email":"muhammad.azri.f.s@gmail.com","login":"muhAzri","count":3},{"name":"mckornfield","email":"matthew.kornfield@appian.com","login":null,"count":3},{"name":"Roger Hannagan","email":"roger.hannagan113@gmail.com","login":"thenotoriousrog","count":3},{"name":"Tarek-Bohdima","email":"tarek.buhdeima@gmail.com","login":"Tarek-Bohdima","count":3},{"name":"beastlyCoder","email":"imaaronacs@gmail.com","login":"aaronallenCS","count":3},{"name":"Rooter","email":"rooter@Rooters-MacBook-Pro-2.local","login":null,"count":2},{"name":"brntsw","email":"bruno.pardini6@gmail.com","login":"brntsw","count":2},{"name":"Zhixuan Li","email":"lizhixuan16@gmail.com","login":"EmmaLi1","count":2},{"name":"Ryan Beckett","email":"beckett.ryan@gmail.com","login":"ryan-beckett","count":2},{"name":"Marcellino Chris O'Vara","email":"marcellinocovara@gmail.com","login":"MarcellinoCO","count":2},{"name":"Kyle Zhu","email":"jiacongzhu66@gmail.com","login":"jiacongkylezhu","count":2},{"name":"Evan Sarkar","email":"51132505+evanofficial","login":"evanofficial","count":2},{"name":"ArtemPolovin","email":"65748653+ArtemPolovin","login":"ArtemPolovin","count":2},{"name":"qorex","email":"vaqkat321@mail.ru","login":"qorexdev","count":1},{"name":"erinfolami","email":"50245033+erinfolami","login":"erinfolami","count":1},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":1},{"name":"Tristan Elliott","email":"47083513+thePlebDev","login":"thePlebDev","count":1},{"name":"Sara Gupta","email":"100728009+SaraGupt","login":"SaraGupt","count":1},{"name":"Sakya-Kanuparthy","email":"70663149+Sakya-Kanuparthy","login":"Sakya-Kanuparthy","count":1},{"name":"Renan Barros","email":"renanbarrosrbs@gmail.com","login":"renanrbs","count":1},{"name":"Krešimir Pleše","email":"kresimir.plese@appscometrue.com","login":null,"count":1},{"name":"Rafael de Lima Silva","email":"rafael.lsdeveloper@gmail.com","login":"rafaellsdev","count":1},{"name":"Pradhyumna Reddy Madhulapally","email":"76251043+pradhyumna186","login":"pradhyumna186","count":1},{"name":"PatchDynamics","email":"xone@fromthegut.org","login":"patchdynamics","count":1},{"name":"Natalie Kim","email":"93747759+nationalkim","login":"nationalkim","count":1},{"name":"Melissa Linkert","email":"melissa.linkert@gmail.com","login":"melissalinkert","count":1},{"name":"MRI1822git","email":"mriganks@outlook.com","login":"MRI1822","count":1},{"name":"Luiz Carlos","email":"lc.estevao23@gmail.com","login":"LuizCarlos23","count":1},{"name":"Kelvin Pere","email":"36895007+KelvnPere","login":"KelvnPere","count":1},{"name":"GorlovDanila","email":"90065897+GorlovDanila","login":"GorlovDanila","count":1},{"name":"Brandon Lin","email":"44827002+JellyRollJunior","login":"JellyRollJunior","count":1}],"past_year_committers":[{"name":"Jonathan Muller","email":"elforama@gmail.com","login":"Elforama","count":37},{"name":"Taofeek","email":"oduola.taofeekkola@gmail.com","login":"EngrTaofeek","count":6},{"name":"joshikapujari","email":"pjoshika811@gmail.com","login":"Joshika8055","count":4},{"name":"Azri","email":"muhammad.azri.f.s@gmail.com","login":"muhAzri","count":3},{"name":"Zhixuan Li","email":"lizhixuan16@gmail.com","login":"EmmaLi1","count":2},{"name":"Evan Sarkar","email":"51132505+evanofficial","login":"evanofficial","count":2},{"name":"qorex","email":"vaqkat321@mail.ru","login":"qorexdev","count":1},{"name":"Sakya-Kanuparthy","email":"70663149+Sakya-Kanuparthy","login":"Sakya-Kanuparthy","count":1},{"name":"Rafael de Lima Silva","email":"rafael.lsdeveloper@gmail.com","login":"rafaellsdev","count":1},{"name":"Pradhyumna Reddy Madhulapally","email":"76251043+pradhyumna186","login":"pradhyumna186","count":1},{"name":"GorlovDanila","email":"90065897+GorlovDanila","login":"GorlovDanila","count":1},{"name":"Gaurav","email":"gauravjain.dtu@gmail.com","login":"gaurav133","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/Greenstand%2Ftreetracker-android/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-09T00:00:23.197Z","repositories_count":6212577,"commits_count":914700709,"contributors_count":35335598,"owners_count":1143285,"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":"Greenstand/treetracker-android","html_url":"https://github.com/Greenstand/treetracker-android","last_synced_at":"2026-04-05T20:00:18.471Z","status":null,"issues_count":601,"pull_requests_count":608,"avg_time_to_close_issue":10027062.732824428,"avg_time_to_close_pull_request":1576013.2131979696,"issues_closed_count":524,"pull_requests_closed_count":591,"pull_request_authors_count":54,"issue_authors_count":42,"avg_comments_per_issue":1.805324459234609,"avg_comments_per_pull_request":0.6529605263157895,"merged_pull_requests_count":504,"bot_issues_count":0,"bot_pull_requests_count":2,"past_year_issues_count":20,"past_year_pull_requests_count":50,"past_year_avg_time_to_close_issue":6784876.333333333,"past_year_avg_time_to_close_pull_request":217159.475,"past_year_issues_closed_count":6,"past_year_pull_requests_closed_count":40,"past_year_pull_request_authors_count":10,"past_year_issue_authors_count":7,"past_year_avg_comments_per_issue":1.8,"past_year_avg_comments_per_pull_request":0.22,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":37,"created_at":"2023-05-09T10:36:40.539Z","updated_at":"2026-04-05T20:00:18.506Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Greenstand%2Ftreetracker-android","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/Greenstand%2Ftreetracker-android/issues","issue_labels_count":{"android":102,"bug":86,"UX/UI":39,"enhancement":32,"good first issue":29,"help wanted":24,"Feature":21,"p1":21,"release 2.2":16,"p2":16,"Ice Box":15,"Design":13,"question":10,"p0":8,"needs analysis":6,"web/admin panel":5,"crash - analyzing":4,"2.3":4,"Epic":3,"infra":2,"in testing":2,"5 Token Reward":2,"release blocker":1,"dev-environment":1,"work in progress":1,"Documentation":1,"3 Token Reward":1,"payments":1,"library update":1,"backend":1,"wontfix":1},"pull_request_labels_count":{"work in progress":3,"android":3,"needs analysis":2,"dependencies":2,"Feature":2,"bug":1},"issue_author_associations_count":{"CONTRIBUTOR":472,"COLLABORATOR":68,"NONE":58,"MEMBER":3},"pull_request_author_associations_count":{"CONTRIBUTOR":382,"COLLABORATOR":187,"NONE":28,"MEMBER":11},"issue_authors":{"ZavenArra":159,"Davidezrajay":119,"Elforama":117,"sebastiangaertner":55,"EngrTaofeek":41,"arunbakt":20,"Surbhi79":16,"nprude":10,"ghost":9,"LaviniaDragunoi":7,"camwebb":4,"imos64":3,"shubhamk008":3,"dezidaisy":3,"martinariasf":3,"saramuseo":2,"AndroidDev77":2,"cynthiabondi":2,"Tarek-Bohdima":2,"Amritah9":2,"debpedrano":1,"amit88265":1,"AndrewKerr47":1,"sametceylan":1,"tarun1506":1,"jhoon":1,"donenoyes":1,"mozarty":1,"zularizal":1,"jbeguna04":1,"minami-yu":1,"dadiorchen":1,"habbs19":1,"Kpoke":1,"JonTrimarco":1,"peacengn":1,"natalieschulz":1,"aaronallenCS":1,"peakvalleytech":1,"sidsharma2002":1,"nmcharlton":1,"ryan-beckett":1},"pull_request_authors":{"Elforama":201,"EngrTaofeek":123,"arunbakt":48,"ZavenArra":44,"Mzazi25":17,"LaviniaDragunoi":16,"sebastiangaertner":14,"Surbhi79":10,"lastforeverzl":9,"aaronallenCS":8,"Davidezrajay":8,"gaurav133":7,"ghost":7,"sidsharma2002":7,"mozarty":5,"Tarek-Bohdima":5,"kanake10":5,"thenotoriousrog":4,"EmmaLi1":4,"Sakya-Kanuparthy":4,"jhoon":4,"hz97":3,"DominionSoftware":3,"habbs19":3,"brntsw":3,"mckornfield":3,"ArtemPolovin":3,"darrengyl":2,"S1210":2,"Joshika8055":2,"SaraGupt":2,"muhAzri":2,"dependabot[bot]":2,"precious3173":2,"ryan-beckett":2,"pradhyumna186":2,"gravetriste":2,"Naphtali-cpu":2,"EsraaAkram":2,"MarcellinoCO":2,"rafaellsdev":1,"GorlovDanila":1,"dezidaisy":1,"melissalinkert":1,"renanrbs":1,"MRI1822":1,"peacengn":1,"LuizCarlos23":1,"jiacongkylezhu":1,"JellyRollJunior":1,"abdullah-maher-abbod":1,"erinfolami":1,"KelvnPere":1,"thePlebDev":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-06T00:00:09.270Z","repositories_count":14114691,"issues_count":34474565,"pull_requests_count":112578710,"authors_count":11227916,"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":{"help wanted":4,"bug":4,"2.3":3,"android":2,"5 Token Reward":2,"needs analysis":2,"infra":1,"release blocker":1,"UX/UI":1,"backend":1,"Design":1,"dev-environment":1,"enhancement":1,"good first issue":1},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"COLLABORATOR":8,"NONE":8,"CONTRIBUTOR":4},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":29,"COLLABORATOR":16,"NONE":5},"past_year_issue_authors":{"EngrTaofeek":8,"Davidezrajay":4,"imos64":3,"cynthiabondi":2,"dadiorchen":1,"minami-yu":1,"tarun1506":1},"past_year_pull_request_authors":{"EngrTaofeek":16,"Elforama":15,"EmmaLi1":4,"Sakya-Kanuparthy":4,"gaurav133":3,"Joshika8055":2,"muhAzri":2,"pradhyumna186":2,"GorlovDanila":1,"rafaellsdev":1},"maintainers":[{"login":"EngrTaofeek","count":164,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/EngrTaofeek"},{"login":"arunbakt","count":68,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/arunbakt"},{"login":"LaviniaDragunoi","count":23,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/LaviniaDragunoi"},{"login":"Tarek-Bohdima","count":7,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Tarek-Bohdima"},{"login":"jhoon","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jhoon"},{"login":"MarcellinoCO","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MarcellinoCO"}],"active_maintainers":[{"login":"EngrTaofeek","count":24,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/EngrTaofeek"}]},"events":{"total":{"PullRequestEvent":58,"ForkEvent":6,"IssuesEvent":110,"WatchEvent":4,"IssueCommentEvent":46,"PushEvent":68,"PullRequestReviewEvent":1,"GollumEvent":1,"CreateEvent":28},"last_year":{"PullRequestEvent":45,"ForkEvent":5,"IssuesEvent":88,"IssueCommentEvent":37,"PushEvent":59,"PullRequestReviewEvent":1,"GollumEvent":1,"CreateEvent":22}},"keywords":["android"],"dependencies":[{"ecosystem":"maven","filepath":"app/build.gradle","sha":null,"kind":"manifest","created_at":"2022-07-12T04:31:24.783Z","updated_at":"2022-07-12T04:31:24.783Z","repository_link":"https://github.com/Greenstand/treetracker-android/blob/master/app/build.gradle","dependencies":[{"id":151882500,"package_name":"com.amazonaws:aws-android-sdk-core","ecosystem":"maven","requirements":"2.16.8","direct":true,"kind":"implementation","optional":false},{"id":151882501,"package_name":"com.amazonaws:aws-android-sdk-s3","ecosystem":"maven","requirements":"2.16.8","direct":true,"kind":"implementation","optional":false},{"id":151882502,"package_name":"io.insert-koin:koin-android","ecosystem":"maven","requirements":"$koin_version","direct":true,"kind":"implementation","optional":false},{"id":151882503,"package_name":"io.insert-koin:koin-androidx-compose","ecosystem":"maven","requirements":"$koin_version","direct":true,"kind":"implementation","optional":false},{"id":151882504,"package_name":"io.insert-koin:koin-test","ecosystem":"maven","requirements":"$koin_version","direct":true,"kind":"testImplementation","optional":false},{"id":151882505,"package_name":"androidx.appcompat:appcompat","ecosystem":"maven","requirements":"1.3.1","direct":true,"kind":"implementation","optional":false},{"id":151882506,"package_name":"androidx.multidex:multidex","ecosystem":"maven","requirements":"2.0.1","direct":true,"kind":"implementation","optional":false},{"id":151882507,"package_name":"androidx.exifinterface:exifinterface","ecosystem":"maven","requirements":"1.3.2","direct":true,"kind":"implementation","optional":false},{"id":151882508,"package_name":"androidx.lifecycle:lifecycle-viewmodel-ktx","ecosystem":"maven","requirements":"2.3.1","direct":true,"kind":"implementation","optional":false},{"id":151882509,"package_name":"androidx.lifecycle:lifecycle-runtime-ktx","ecosystem":"maven","requirements":"2.3.1","direct":true,"kind":"implementation","optional":false},{"id":151882510,"package_name":"androidx.work:work-runtime-ktx","ecosystem":"maven","requirements":"2.7.1","direct":true,"kind":"implementation","optional":false},{"id":151882511,"package_name":"androidx.compose.runtime:runtime","ecosystem":"maven","requirements":"$compose_version","direct":true,"kind":"implementation","optional":false},{"id":151882512,"package_name":"androidx.compose.runtime:runtime-livedata","ecosystem":"maven","requirements":"$compose_version","direct":true,"kind":"implementation","optional":false},{"id":151882513,"package_name":"androidx.compose.foundation:foundation","ecosystem":"maven","requirements":"$compose_version","direct":true,"kind":"implementation","optional":false},{"id":151882514,"package_name":"androidx.compose.foundation:foundation-layout","ecosystem":"maven","requirements":"$compose_version","direct":true,"kind":"implementation","optional":false},{"id":151882515,"package_name":"androidx.compose.ui:ui","ecosystem":"maven","requirements":"$compose_version","direct":true,"kind":"implementation","optional":false},{"id":151882516,"package_name":"androidx.compose.ui:ui-tooling","ecosystem":"maven","requirements":"$compose_version","direct":true,"kind":"implementation","optional":false},{"id":151882517,"package_name":"androidx.compose.material:material","ecosystem":"maven","requirements":"$compose_version","direct":true,"kind":"implementation","optional":false},{"id":151882518,"package_name":"androidx.compose.animation:animation","ecosystem":"maven","requirements":"$compose_version","direct":true,"kind":"implementation","optional":false},{"id":151882519,"package_name":"androidx.activity:activity-compose","ecosystem":"maven","requirements":"1.3.0","direct":true,"kind":"implementation","optional":false},{"id":151882520,"package_name":"androidx.navigation:navigation-compose","ecosystem":"maven","requirements":"2.4.1","direct":true,"kind":"implementation","optional":false},{"id":151882521,"package_name":"com.google.accompanist:accompanist-permissions","ecosystem":"maven","requirements":"0.21.1-beta","direct":true,"kind":"implementation","optional":false},{"id":151882522,"package_name":"org.jetbrains.kotlin:kotlin-stdlib-jdk7","ecosystem":"maven","requirements":"$kotlin_version","direct":true,"kind":"implementation","optional":false},{"id":151882523,"package_name":"org.jetbrains.kotlinx:kotlinx-coroutines-core","ecosystem":"maven","requirements":"1.5.0","direct":true,"kind":"implementation","optional":false},{"id":151882524,"package_name":"org.jetbrains.kotlinx:kotlinx-coroutines-android","ecosystem":"maven","requirements":"1.5.0","direct":true,"kind":"implementation","optional":false},{"id":151882525,"package_name":"org.jetbrains.kotlinx:kotlinx-datetime","ecosystem":"maven","requirements":"0.3.2","direct":true,"kind":"implementation","optional":false},{"id":151882526,"package_name":"androidx.room:room-runtime","ecosystem":"maven","requirements":"2.4.0-beta01","direct":true,"kind":"implementation","optional":false},{"id":151882527,"package_name":"androidx.room:room-ktx","ecosystem":"maven","requirements":"2.4.0-beta01","direct":true,"kind":"implementation","optional":false},{"id":151882528,"package_name":"com.squareup.retrofit2:converter-gson","ecosystem":"maven","requirements":"${retrofit2Version}","direct":true,"kind":"api","optional":false},{"id":151882529,"package_name":"com.squareup.retrofit2:retrofit","ecosystem":"maven","requirements":"${retrofit2Version}","direct":true,"kind":"implementation","optional":false},{"id":151882530,"package_name":"com.squareup.okhttp3:logging-interceptor","ecosystem":"maven","requirements":"4.9.3","direct":true,"kind":"implementation","optional":false},{"id":151882531,"package_name":"androidx.camera:camera-core","ecosystem":"maven","requirements":"$camerax_version","direct":true,"kind":"implementation","optional":false},{"id":151882532,"package_name":"androidx.camera:camera-camera2","ecosystem":"maven","requirements":"$camerax_version","direct":true,"kind":"implementation","optional":false},{"id":151882533,"package_name":"androidx.camera:camera-lifecycle","ecosystem":"maven","requirements":"$camerax_version","direct":true,"kind":"implementation","optional":false},{"id":151882534,"package_name":"androidx.camera:camera-view","ecosystem":"maven","requirements":"$camerax_view_version","direct":true,"kind":"implementation","optional":false},{"id":151882535,"package_name":"androidx.camera:camera-extensions","ecosystem":"maven","requirements":"$camerax_ext_version","direct":true,"kind":"implementation","optional":false},{"id":151882536,"package_name":"com.jakewharton.timber:timber","ecosystem":"maven","requirements":"4.7.1","direct":true,"kind":"api","optional":false},{"id":151882537,"package_name":"androidx.legacy:legacy-support-v4","ecosystem":"maven","requirements":"${androidSupportVersion}","direct":true,"kind":"implementation","optional":false},{"id":151882538,"package_name":"com.google.firebase:firebase-analytics","ecosystem":"maven","requirements":"18.0.2","direct":true,"kind":"implementation","optional":false},{"id":151882539,"package_name":"com.google.firebase:firebase-crashlytics-ktx","ecosystem":"maven","requirements":"17.3.1","direct":true,"kind":"implementation","optional":false},{"id":151882540,"package_name":"com.google.firebase:firebase-auth-ktx","ecosystem":"maven","requirements":"20.0.2","direct":true,"kind":"implementation","optional":false},{"id":151882541,"package_name":"com.google.firebase:firebase-iid","ecosystem":"maven","requirements":"21.0.1","direct":true,"kind":"implementation","optional":false},{"id":151882542,"package_name":"io.mockk:mockk","ecosystem":"maven","requirements":"1.10.0","direct":true,"kind":"testImplementation","optional":false},{"id":151882543,"package_name":"junit:junit","ecosystem":"maven","requirements":"4.13.1","direct":true,"kind":"testImplementation","optional":false},{"id":151882544,"package_name":"androidx.room:room-testing","ecosystem":"maven","requirements":"2.2.6","direct":true,"kind":"testImplementation","optional":false},{"id":151882545,"package_name":"org.jetbrains.kotlinx:kotlinx-coroutines-test","ecosystem":"maven","requirements":"1.3.9","direct":true,"kind":"testImplementation","optional":false},{"id":151882546,"package_name":"androidx.arch.core:core-testing","ecosystem":"maven","requirements":"2.1.0","direct":true,"kind":"testImplementation","optional":false}]},{"ecosystem":"rubygems","filepath":"Gemfile","sha":null,"kind":"manifest","created_at":"2022-07-12T04:31:25.480Z","updated_at":"2022-07-12T04:31:25.480Z","repository_link":"https://github.com/Greenstand/treetracker-android/blob/master/Gemfile","dependencies":[{"id":151890042,"package_name":"fastlane","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"rubygems","filepath":"Gemfile.lock","sha":null,"kind":"lockfile","created_at":"2022-07-12T04:31:25.914Z","updated_at":"2022-07-12T04:31:25.914Z","repository_link":"https://github.com/Greenstand/treetracker-android/blob/master/Gemfile.lock","dependencies":[{"id":151891341,"package_name":"CFPropertyList","ecosystem":"rubygems","requirements":"3.0.2","direct":false,"kind":"runtime","optional":false},{"id":151891342,"package_name":"addressable","ecosystem":"rubygems","requirements":"2.8.0","direct":false,"kind":"runtime","optional":false},{"id":151891343,"package_name":"atomos","ecosystem":"rubygems","requirements":"0.1.3","direct":false,"kind":"runtime","optional":false},{"id":151891344,"package_name":"aws-eventstream","ecosystem":"rubygems","requirements":"1.1.0","direct":false,"kind":"runtime","optional":false},{"id":151891345,"package_name":"aws-partitions","ecosystem":"rubygems","requirements":"1.374.0","direct":false,"kind":"runtime","optional":false},{"id":151891346,"package_name":"aws-sdk-core","ecosystem":"rubygems","requirements":"3.107.0","direct":false,"kind":"runtime","optional":false},{"id":151891347,"package_name":"aws-sdk-kms","ecosystem":"rubygems","requirements":"1.38.0","direct":false,"kind":"runtime","optional":false},{"id":151891348,"package_name":"aws-sdk-s3","ecosystem":"rubygems","requirements":"1.81.0","direct":false,"kind":"runtime","optional":false},{"id":151891349,"package_name":"aws-sigv4","ecosystem":"rubygems","requirements":"1.2.2","direct":false,"kind":"runtime","optional":false},{"id":151891350,"package_name":"babosa","ecosystem":"rubygems","requirements":"1.0.3","direct":false,"kind":"runtime","optional":false},{"id":151891351,"package_name":"claide","ecosystem":"rubygems","requirements":"1.0.3","direct":false,"kind":"runtime","optional":false},{"id":151891352,"package_name":"colored","ecosystem":"rubygems","requirements":"1.2","direct":false,"kind":"runtime","optional":false},{"id":151891353,"package_name":"colored2","ecosystem":"rubygems","requirements":"3.1.2","direct":false,"kind":"runtime","optional":false},{"id":151891354,"package_name":"commander-fastlane","ecosystem":"rubygems","requirements":"4.4.6","direct":false,"kind":"runtime","optional":false},{"id":151891355,"package_name":"declarative","ecosystem":"rubygems","requirements":"0.0.20","direct":false,"kind":"runtime","optional":false},{"id":151891356,"package_name":"declarative-option","ecosystem":"rubygems","requirements":"0.1.0","direct":false,"kind":"runtime","optional":false},{"id":151891357,"package_name":"digest-crc","ecosystem":"rubygems","requirements":"0.6.1","direct":false,"kind":"runtime","optional":false},{"id":151891358,"package_name":"domain_name","ecosystem":"rubygems","requirements":"0.5.20190701","direct":false,"kind":"runtime","optional":false},{"id":151891359,"package_name":"dotenv","ecosystem":"rubygems","requirements":"2.7.6","direct":false,"kind":"runtime","optional":false},{"id":151891360,"package_name":"emoji_regex","ecosystem":"rubygems","requirements":"3.0.0","direct":false,"kind":"runtime","optional":false},{"id":151891361,"package_name":"excon","ecosystem":"rubygems","requirements":"0.76.0","direct":false,"kind":"runtime","optional":false},{"id":151891362,"package_name":"faraday","ecosystem":"rubygems","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":151891363,"package_name":"faraday-cookie_jar","ecosystem":"rubygems","requirements":"0.0.7","direct":false,"kind":"runtime","optional":false},{"id":151891364,"package_name":"faraday_middleware","ecosystem":"rubygems","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":151891365,"package_name":"fastimage","ecosystem":"rubygems","requirements":"2.2.0","direct":false,"kind":"runtime","optional":false},{"id":151891366,"package_name":"fastlane","ecosystem":"rubygems","requirements":"2.160.0","direct":false,"kind":"runtime","optional":false},{"id":151891367,"package_name":"fastlane-plugin-firebase_app_distribution","ecosystem":"rubygems","requirements":"0.3.4","direct":false,"kind":"runtime","optional":false},{"id":151891368,"package_name":"gh_inspector","ecosystem":"rubygems","requirements":"1.1.3","direct":false,"kind":"runtime","optional":false},{"id":151891369,"package_name":"google-api-client","ecosystem":"rubygems","requirements":"0.38.0","direct":false,"kind":"runtime","optional":false},{"id":151891370,"package_name":"google-cloud-core","ecosystem":"rubygems","requirements":"1.5.0","direct":false,"kind":"runtime","optional":false},{"id":151891371,"package_name":"google-cloud-env","ecosystem":"rubygems","requirements":"1.3.3","direct":false,"kind":"runtime","optional":false},{"id":151891372,"package_name":"google-cloud-errors","ecosystem":"rubygems","requirements":"1.0.1","direct":false,"kind":"runtime","optional":false},{"id":151891373,"package_name":"google-cloud-storage","ecosystem":"rubygems","requirements":"1.29.0","direct":false,"kind":"runtime","optional":false},{"id":151891374,"package_name":"googleauth","ecosystem":"rubygems","requirements":"0.13.1","direct":false,"kind":"runtime","optional":false},{"id":151891375,"package_name":"highline","ecosystem":"rubygems","requirements":"1.7.10","direct":false,"kind":"runtime","optional":false},{"id":151891376,"package_name":"http-cookie","ecosystem":"rubygems","requirements":"1.0.3","direct":false,"kind":"runtime","optional":false},{"id":151891377,"package_name":"httpclient","ecosystem":"rubygems","requirements":"2.8.3","direct":false,"kind":"runtime","optional":false},{"id":151891378,"package_name":"jmespath","ecosystem":"rubygems","requirements":"1.6.1","direct":false,"kind":"runtime","optional":false},{"id":151891379,"package_name":"json","ecosystem":"rubygems","requirements":"2.3.1","direct":false,"kind":"runtime","optional":false},{"id":151891380,"package_name":"jwt","ecosystem":"rubygems","requirements":"2.2.2","direct":false,"kind":"runtime","optional":false},{"id":151891381,"package_name":"memoist","ecosystem":"rubygems","requirements":"0.16.2","direct":false,"kind":"runtime","optional":false},{"id":151891382,"package_name":"mini_magick","ecosystem":"rubygems","requirements":"4.10.1","direct":false,"kind":"runtime","optional":false},{"id":151891383,"package_name":"mini_mime","ecosystem":"rubygems","requirements":"1.0.2","direct":false,"kind":"runtime","optional":false},{"id":151891384,"package_name":"multi_json","ecosystem":"rubygems","requirements":"1.15.0","direct":false,"kind":"runtime","optional":false},{"id":151891385,"package_name":"multipart-post","ecosystem":"rubygems","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":151891386,"package_name":"nanaimo","ecosystem":"rubygems","requirements":"0.3.0","direct":false,"kind":"runtime","optional":false},{"id":151891387,"package_name":"naturally","ecosystem":"rubygems","requirements":"2.2.0","direct":false,"kind":"runtime","optional":false},{"id":151891388,"package_name":"os","ecosystem":"rubygems","requirements":"1.1.1","direct":false,"kind":"runtime","optional":false},{"id":151891389,"package_name":"plist","ecosystem":"rubygems","requirements":"3.5.0","direct":false,"kind":"runtime","optional":false},{"id":151891390,"package_name":"public_suffix","ecosystem":"rubygems","requirements":"4.0.6","direct":false,"kind":"runtime","optional":false},{"id":151891391,"package_name":"rake","ecosystem":"rubygems","requirements":"13.0.1","direct":false,"kind":"runtime","optional":false},{"id":151891392,"package_name":"representable","ecosystem":"rubygems","requirements":"3.0.4","direct":false,"kind":"runtime","optional":false},{"id":151891393,"package_name":"retriable","ecosystem":"rubygems","requirements":"3.1.2","direct":false,"kind":"runtime","optional":false},{"id":151891394,"package_name":"rouge","ecosystem":"rubygems","requirements":"2.0.7","direct":false,"kind":"runtime","optional":false},{"id":151891395,"package_name":"rubyzip","ecosystem":"rubygems","requirements":"2.3.2","direct":false,"kind":"runtime","optional":false},{"id":151891396,"package_name":"security","ecosystem":"rubygems","requirements":"0.1.3","direct":false,"kind":"runtime","optional":false},{"id":151891397,"package_name":"signet","ecosystem":"rubygems","requirements":"0.14.0","direct":false,"kind":"runtime","optional":false},{"id":151891398,"package_name":"simctl","ecosystem":"rubygems","requirements":"1.6.8","direct":false,"kind":"runtime","optional":false},{"id":151891399,"package_name":"slack-notifier","ecosystem":"rubygems","requirements":"2.3.2","direct":false,"kind":"runtime","optional":false},{"id":151891400,"package_name":"terminal-notifier","ecosystem":"rubygems","requirements":"2.0.0","direct":false,"kind":"runtime","optional":false},{"id":151891401,"package_name":"terminal-table","ecosystem":"rubygems","requirements":"1.8.0","direct":false,"kind":"runtime","optional":false},{"id":151891402,"package_name":"tty-cursor","ecosystem":"rubygems","requirements":"0.7.1","direct":false,"kind":"runtime","optional":false},{"id":151891403,"package_name":"tty-screen","ecosystem":"rubygems","requirements":"0.8.1","direct":false,"kind":"runtime","optional":false},{"id":151891404,"package_name":"tty-spinner","ecosystem":"rubygems","requirements":"0.9.3","direct":false,"kind":"runtime","optional":false},{"id":151891405,"package_name":"uber","ecosystem":"rubygems","requirements":"0.1.0","direct":false,"kind":"runtime","optional":false},{"id":151891406,"package_name":"unf","ecosystem":"rubygems","requirements":"0.1.4","direct":false,"kind":"runtime","optional":false},{"id":151891407,"package_name":"unf_ext","ecosystem":"rubygems","requirements":"0.0.7.7","direct":false,"kind":"runtime","optional":false},{"id":151891408,"package_name":"unicode-display_width","ecosystem":"rubygems","requirements":"1.7.0","direct":false,"kind":"runtime","optional":false},{"id":151891409,"package_name":"word_wrap","ecosystem":"rubygems","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false},{"id":151891410,"package_name":"xcodeproj","ecosystem":"rubygems","requirements":"1.18.0","direct":false,"kind":"runtime","optional":false},{"id":151891411,"package_name":"xcpretty","ecosystem":"rubygems","requirements":"0.3.0","direct":false,"kind":"runtime","optional":false},{"id":151891412,"package_name":"xcpretty-travis-formatter","ecosystem":"rubygems","requirements":"1.0.0","direct":false,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/pull_request.yml","sha":null,"kind":"manifest","created_at":"2023-02-16T07:15:22.139Z","updated_at":"2023-02-16T07:15:22.139Z","repository_link":"https://github.com/Greenstand/treetracker-android/blob/master/.github/workflows/pull_request.yml","dependencies":[{"id":7706108231,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7706108232,"package_name":"actions/setup-java","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/release-beta.yaml","sha":null,"kind":"manifest","created_at":"2023-02-16T07:15:22.453Z","updated_at":"2023-02-16T07:15:22.453Z","repository_link":"https://github.com/Greenstand/treetracker-android/blob/master/.github/workflows/release-beta.yaml","dependencies":[{"id":7706109044,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7706109045,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"maven","filepath":"build.gradle","sha":null,"kind":"manifest","created_at":"2023-09-21T19:09:18.336Z","updated_at":"2023-09-21T19:09:18.336Z","repository_link":"https://github.com/Greenstand/treetracker-android/blob/master/build.gradle","dependencies":[]}],"score":9.51576412590412,"created_at":"2023-09-11T11:54:35.461Z","updated_at":"2026-05-13T17:06:31.564Z","avatar_url":"https://github.com/Greenstand.png","language":"Kotlin","category":"Biosphere","sub_category":"Deforestation and Reforestation","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"![Build Status](https://github.com/Greenstand/treetracker-android/workflows/Treetracker%20Android%20App%20CI/badge.svg?branch=master)\n\n# Treetracker Android\n\n## Current Milestones and Issue Topics\n\n### Next feature release\n\nFeature we are currently prioritizing\nhttps://github.com/orgs/Greenstand/projects/109/views/2\n\n\u0026nbsp;\n\u0026nbsp;\n\n## Project Details\n\nThis is the Android app for Greenstands Treetracker open source project (www.treetracker.org). \nThis project coordinates the digital capture of tree growth data in the field, allowing to establish employment for people living in extreme poverty based on tree planting.\nThe Android segment is the data collection tool that transports the information into the next service through a data pipeline towards the veryification service.\n\nFor more on design intent and the app's user story see the [wiki in this repository](https://github.com/Greenstand/treetracker-android/wiki/User-Story)\n\n\u0026nbsp;\n\u0026nbsp;\n\n## Project Setup\nDevelopers will need to ask the #android_chat channel in Slack for the treetracker.keys.properties file to build gradle for the application.\n\nFor development, select the build variant _dev_. This build variant is configured to allow trees to be added without a specific accuracy.  \n\n\u0026nbsp;\n\n## QC Deployment\n\nTo join the Greenstand Testers for this app follow this [testing invite link](https://appdistribution.firebase.dev/i/f98b34cc1ff2c0b7) and add your mail used on your android device\nNote: QC deployment pipeline are on Github Actions.\n\n### CREATING INTERNAL RELEASES MANUALLY\nTo create an internal release manually on firebase, \nIncrease the version code by 1(Optionally you can change the version name if it's a major release)\nChange the build variant to 'beta'  \nGenerate an unsigned apk or aab in the above variant,\nOn firebase console, go to firebase distribution, switch the app to 'Treetracker Test' \nUpload the apk or aab generated above, Select Greenstand Testers and complete it.\n\n### AUTOMATED INTERNAL RELEASES WITH GITHUB ACTIONS(CURRENTLY NOT AVAILABLE)\nClick on Actions in this [repo](https://github.com/Greenstand/treetracker-android.git)  \nSelect Release Beta and run workflow\nSelect Branch you want to create release for and run. This would create a new release on Firebase and also send messages on slack to members that a new release has been created.\n\n\n\n\n\n\n\n\n\n\n\n\n\n### Fastlane\n\nFastlane must be installed using\nbundle install --path vendor/bundle\nfastlane install_plugins\nfirebase login\n\notherwise the firebase plugin will not work\n\n\n\n\u0026nbsp;\n\u0026nbsp;\n\n## Deployment\n\nThere is one prerequisite to using the appropriate gradle tasks:\n\n1) Placing the relevant keys.json from the PlayStore in the ./app folder [example here](https://docs.fastlane.tools/getting-started/android/setup/#collect-your-google-credentials)\n\nOnce this is done, you can proceed by running one of the following tasks to run the release:\n\n* `bootstrapReleasePlayResources` | Downloads the play store listing for the Release build. No download of image resources. See #18.\n* `generateReleasePlayResources`  | Collects play store resources for the Release build\n* `publishListingRelease`         | Updates the play store listing for the Release build\n\n\u0026nbsp;\n\u0026nbsp;\n\n## Contributing\n\n See [Contributing in the Development-Overview README](https://github.com/Greenstand/Development-Overview/blob/master/README.md)\n\nReview the project board for current priorities [Android Project](https://github.com/orgs/Greenstand/projects/109)\n\nPlease review the [issue tracker](https://github.com/Greenstand/treetracker-android/issues) here on this github repository \n\nCheck out the cool [roadmap](https://github.com/Greenstand/Development-Overview/blob/master/Roadmap.md)\n\nAll contributions should be submitted as pull requests against the master branch in this github repository. https://github.com/Greenstand/treetracker-android/\n","funding_links":["https://www.paypal.com/donate/?hosted_button_id=3YGXULRCRZZEQ"],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["climate-change","non-profit","reforestation"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/637","html_url":"https://ost.ecosyste.ms/projects/637"}