{"id":15032087,"url":"https://github.com/isoron/uhabits","last_synced_at":"2026-10-18T22:22:49.118Z","repository":{"id":23007266,"uuid":"26357991","full_name":"iSoron/uhabits","owner":"iSoron","description":"Loop Habit Tracker, a mobile app for creating and maintaining long-term positive habits","archived":false,"fork":false,"pushed_at":"2026-07-21T12:59:15.000Z","size":40577,"stargazers_count":10317,"open_issues_count":53,"forks_count":1268,"subscribers_count":143,"default_branch":"dev","last_synced_at":"2026-10-11T10:58:13.622Z","etag":null,"topics":["android","habit-tracker","habits","java","kotlin","streak"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iSoron.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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":"NOTICE.md","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-11-08T11:07:12.000Z","updated_at":"2026-10-11T08:55:56.000Z","dependencies_parsed_at":"2026-01-19T13:12:22.679Z","dependency_job_id":null,"html_url":"https://github.com/iSoron/uhabits","commit_stats":{"total_commits":2292,"total_committers":69,"mean_commits":33.21739130434783,"dds":0.5780977312390925,"last_synced_commit":"fc9cc423d06c9c83ee14dc9ae4bdeb0781a93a5c"},"previous_names":[],"tags_count":47,"template":false,"template_full_name":null,"purl":"pkg:github/iSoron/uhabits","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iSoron%2Fuhabits","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iSoron%2Fuhabits/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iSoron%2Fuhabits/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iSoron%2Fuhabits/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iSoron","download_url":"https://codeload.github.com/iSoron/uhabits/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iSoron%2Fuhabits/sbom","scorecard":{"id":476949,"data":{"date":"2025-08-11","repo":{"name":"github.com/iSoron/uhabits","commit":"5aa8744ef4c8e391c875bbb482e3e79740b5fd81"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.3,"checks":[{"name":"Maintained","score":10,"reason":"27 commit(s) and 12 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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/main.yml:1","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":"Code-Review","score":0,"reason":"Found 1/30 approved changesets -- score normalized to 0","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":"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":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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/main.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/iSoron/uhabits/main.yml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/iSoron/uhabits/main.yml/dev?enable=pin","Info:   0 out of   2 GitHub-owned 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"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v2.3.1 not signed: https://api.github.com/repos/iSoron/uhabits/releases/239848458","Warn: release artifact v2.3.0 not signed: https://api.github.com/repos/iSoron/uhabits/releases/227527311","Warn: release artifact v2.2.0 not signed: https://api.github.com/repos/iSoron/uhabits/releases/139237211","Warn: release artifact v2.1.3 not signed: https://api.github.com/repos/iSoron/uhabits/releases/118908697","Warn: release artifact v2.3.1 does not have provenance: https://api.github.com/repos/iSoron/uhabits/releases/239848458","Warn: release artifact v2.3.0 does not have provenance: https://api.github.com/repos/iSoron/uhabits/releases/227527311","Warn: release artifact v2.2.0 does not have provenance: https://api.github.com/repos/iSoron/uhabits/releases/139237211","Warn: release artifact v2.1.3 does not have provenance: https://api.github.com/repos/iSoron/uhabits/releases/118908697"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 1 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"}}]},"last_synced_at":"2025-08-19T15:34:21.544Z","repository_id":23007266,"created_at":"2025-08-19T15:34:21.544Z","updated_at":"2025-08-19T15:34:21.544Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38342744,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-18T02:00:06.448Z","response_time":63,"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"}},"keywords":["android","habit-tracker","habits","java","kotlin","streak"],"created_at":"2024-09-24T20:17:17.163Z","updated_at":"2026-10-18T22:22:49.108Z","avatar_url":"https://github.com/iSoron.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eLoop Habit Tracker\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/iSoron/uhabits/releases/latest\"\u003e\n    \u003cimg alt=\"release\" src=\"https://img.shields.io/github/v/release/iSoron/uhabits\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/iSoron/uhabits/discussions\"\u003e\n    \u003cimg alt=\"GitHub\" src=\"https://img.shields.io/badge/GitHub-Discussions-%23fc4ebc\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nLoop is a mobile app that helps you create and maintain good habits,\nallowing you to achieve your long-term goals. Detailed graphs and statistics\nshow you how your habits improved over time. It is completely ad-free and open\nsource.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://play.google.com/store/apps/details?id=org.isoron.uhabits\u0026utm_source=global_co\u0026utm_medium=prtnr\u0026utm_content=Mar2515\u0026utm_campaign=PartBadge\u0026pcampaignid=MKT-AC-global-none-all-co-pr-py-PartBadges-Oct1515-1\"\u003e\u003cimg alt=\"Get it on Google Play\" src=\"https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png\" height=\"80px\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://f-droid.org/app/org.isoron.uhabits\"\u003e\u003cimg alt=\"Get it on F-Droid\" src=\"https://f-droid.org/badge/get-it-on.png\" height=\"80px\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Screenshots\n\n[![Main screen][screen1th]][screen1]\n[![Edit habit][screen2th]][screen2]\n[![Habit strength][screen3th]][screen3]\n[![Habit history and streaks][screen4th]][screen4]\n[![Widgets][screen5th]][screen5]\n[![Night mode][screen6th]][screen6]\n\n## Features\n\n* **Beautiful, minimalistic and lightweight interface.** Loop has an elegant and minimalistic interface that is very easy to use, even for first-time users. Highly optimized for speed, the app works well even on older phones.\n\n* **Habit score.** Loop has an advanced formula for calculating the strength of your habits. Every repetition makes your habit stronger and every missed day makes it weaker. A few missed days after a long streak, however, will not completely destroy your progress, unlike many other don't-break-the-chain apps.\n\n* **Flexible schedules.** In addition to daily habits, Loop supports habits with more complex schedules, such as 3 times per week or every other day.\n\n* **Reminders.** Schedule notifications to remind you of your habits. Each habit can have its own reminder, at a chosen time of the day. Easily check or dismiss your habit directly from the notification.\n\n* **Widgets.** Be reminded of your habits whenever you unlock your phone. Colorful widgets allow you to track your habits directly from your home screen, without even opening the app.\n\n* **Take control of your data.** If you want to further analyze your data, or move it to another service, Loop allows you to export it to spreadsheets (CSV) or to a database file (SQLite). For power users, checkmarks can be added through other apps, such as Tasker.\n\n* **No limitations.** Track as many habits as you wish. Loop imposes no artificial limits on how many habits you can have. All features are available to all users. There are no in-app purchases.\n\n* **Completely ad-free and open source.** There are no advertisements, annoying notifications or intrusive permissions in this app, and there will never be. The app is completely open-source (GPLv3).\n\n* **Works offline and respects your privacy.** Loop doesn't require an Internet connection or online account registration. Your confidential data is never sent to anyone. Neither the developers nor any third-parties have access to it.\n\n## Installing\n\nThe easiest way to install Loop is through the [Google Play Store][playstore] or [F-Droid][fdroid].\nYou may also download and install the APK from the [releases page][releases];\nnote, however, that the app will not be updated automatically.  To build this\napp from the source code, see [build instructions][build].\n\n## Contributing\n\nLoop is an open source project developed entirely by volunteers. If you would\nlike to contribute to the project, you are very welcome. There are many ways to\ncontribute, even if you are not a software developer.\n\n* **Report bugs, suggest features.** The easiest way to contribute is to simply\n  use the app and let us know if you find any problems or have any suggestions\n  to improve it. To report a problem, please [create a new bug report](https://github.com/iSoron/uhabits/issues/new/choose).\n  To request a new feature or vote on existing feature requests, please visit\n  our [GitHub Discussions page](https://github.com/iSoron/uhabits/discussions/categories/feature-requests).\n  If you would like to receive the newest versions of the app\n  earlier than everyone else, [join our open beta on Google Play][beta].\n\n* **Spread the word.** If you like the app, share it with your family, friends\n  and colleagues. You can also rate and review the app on Google Play Store, to help\n  other users find it more easily.\n\n* **Translate the app into your own language.** If you are not a native English\n  speaker, and would like to see the app translated into your own language,\n  please join our [open translation project][poedit]. If the translation\n  is already completed, you are also very welcome to join and proofread it.\n\n* **Write some code.** If you are an Android developer, you are very welcome to\n  contribute with code. Please see the [guidelines](https://github.com/iSoron/uhabits/blob/dev/docs/GUIDELINES.md).\n\n## License\n\n\u003cimg align=\"right\" alt=\"GPL v3\" src=\"https://www.gnu.org/graphics/gplv3-88x31.png\"\u003e\n\n  Copyright (C) 2016-2025 Álinson Santos Xavier \u003cisoron@gmail.com\u003e\n\n  Loop Habit Tracker is free software: you can redistribute it and/or modify\n  it under the terms of the GNU General Public License as published by the\n  Free Software Foundation, either version 3 of the License, or (at your\n  option) any later version.\n\n  Loop Habit Tracker is distributed in the hope that it will be useful, but\n  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\n  more details.\n\n  You should have received a copy of the GNU General Public License along\n  with this program. If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\n[screen1]: screenshots/1.png\n[screen2]: screenshots/2.png\n[screen3]: screenshots/3.png\n[screen4]: screenshots/4.png\n[screen5]: screenshots/5.png\n[screen6]: screenshots/6.png\n[screen1th]: screenshots/1.thumb.png\n[screen2th]: screenshots/2.thumb.png\n[screen3th]: screenshots/3.thumb.png\n[screen4th]: screenshots/4.thumb.png\n[screen5th]: screenshots/5.thumb.png\n[screen6th]: screenshots/6.thumb.png\n[poedit]: https://translate.loophabits.org\n[playstore]: https://play.google.com/store/apps/details?id=org.isoron.uhabits\n[releases]: https://github.com/iSoron/uhabits/releases\n[fdroid]: https://f-droid.org/app/org.isoron.uhabits\n[build]: https://github.com/iSoron/uhabits/blob/dev/docs/BUILD.md\n[beta]: https://play.google.com/apps/testing/org.isoron.uhabits\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisoron%2Fuhabits","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisoron%2Fuhabits","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisoron%2Fuhabits/lists"}