{"id":20508097,"url":"https://github.com/jinjinov/openhabittracker","last_synced_at":"2025-04-05T04:08:36.126Z","repository":{"id":207260683,"uuid":"718796532","full_name":"Jinjinov/OpenHabitTracker","owner":"Jinjinov","description":"C# .NET 9 Blazor habit tracker application. Works on Web, Windows, Linux, Android, iOS and macOS.","archived":false,"fork":false,"pushed_at":"2025-03-28T20:01:08.000Z","size":5613,"stargazers_count":155,"open_issues_count":0,"forks_count":13,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-28T20:23:43.520Z","etag":null,"topics":["blazor","blazor-server","blazor-wasm","blazor-webassembly","cross-platform","csharp","ef-core","efcore","google-keep","indexeddb","markdown","maui","maui-blazor","maui-blazor-hybrid","net8","open-source","photino","photino-blazor","winforms","wpf"],"latest_commit_sha":null,"homepage":"https://openhabittracker.net","language":"C#","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/Jinjinov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-14T20:21:27.000Z","updated_at":"2025-03-28T20:01:13.000Z","dependencies_parsed_at":"2024-12-08T22:22:38.784Z","dependency_job_id":"43a044b6-b41a-41f9-90f5-43ef432dca16","html_url":"https://github.com/Jinjinov/OpenHabitTracker","commit_stats":{"total_commits":977,"total_committers":3,"mean_commits":325.6666666666667,"dds":"0.035823950870010224","last_synced_commit":"9f46f67b972f3f60519c40f3dd12022e94782b16"},"previous_names":["jinjinov/ididit.today"],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jinjinov%2FOpenHabitTracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jinjinov%2FOpenHabitTracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jinjinov%2FOpenHabitTracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jinjinov%2FOpenHabitTracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jinjinov","download_url":"https://codeload.github.com/Jinjinov/OpenHabitTracker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247284944,"owners_count":20913704,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["blazor","blazor-server","blazor-wasm","blazor-webassembly","cross-platform","csharp","ef-core","efcore","google-keep","indexeddb","markdown","maui","maui-blazor","maui-blazor-hybrid","net8","open-source","photino","photino-blazor","winforms","wpf"],"created_at":"2024-11-15T20:16:56.435Z","updated_at":"2025-04-05T04:08:36.076Z","avatar_url":"https://github.com/Jinjinov.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenHabitTracker\n\nhttps://openhabittracker.net\n\n## App:\n\nhttps://pwa.openhabittracker.net\n\nTake Markdown notes, plan tasks, track habits\n\n- Free and Ad-Free\n- Open Source\n- Privacy Focused: All user data is stored locally on your device\n- Available on Windows, Linux, Android, iOS, macOS, and as a web app\n- Localized to English, German, Spanish, Slovenian\n\nKey Features:\n\n- Markdown support for notes\n- Use categories and priorities to organize your notes, tasks, and habits\n- Advanced Search, Filter, and Sort\n- Data Export/Import: JSON, YAML, TSV, Markdown\n- Import your notes from Google Keep\n- Available in 26 themes with Dark and Light modes\n\n## Stores:\n\nWindows:  \n[\u003cimg src=\"OpenHabitTracker.Web/icons/Microsoft.svg\" height=\"48\"\u003e](https://apps.microsoft.com/detail/9mwzmlxzzllr)\n\nLinux - Flathub:  \n[\u003cimg src=\"OpenHabitTracker.Web/icons/Flathub.svg\" height=\"48\"\u003e](https://flathub.org/apps/net.openhabittracker.OpenHabitTracker)\n\nLinux - Snap Store:  \n[\u003cimg src=\"OpenHabitTracker.Web/icons/SnapStore.svg\" height=\"48\"\u003e](https://snapcraft.io/openhabittracker)\n\nAndroid:  \n[\u003cimg src=\"OpenHabitTracker.Web/icons/Google.svg\" height=\"48\"\u003e](https://play.google.com/store/apps/details?id=net.openhabittracker)\n\niOS:  \n[\u003cimg src=\"OpenHabitTracker.Web/icons/AppStore.svg\" height=\"48\"\u003e](https://apps.apple.com/us/app/openhabittracker/id6654885470?platform=iphone)\n\nmacOS:  \n[\u003cimg src=\"OpenHabitTracker.Web/icons/MacAppStore.svg\" height=\"48\"\u003e](https://apps.apple.com/us/app/openhabittracker/id6654885470?platform=mac)\n\nAndroid - APKPure:  \n[\u003cimg src=\"OpenHabitTracker.Web/icons/APKPure.svg\" height=\"48\"\u003e](https://apkpure.com/openhabittracker/net.openhabittracker)\n\n## Docker image contains a Blazor Server app for one user\n\nhttps://hub.docker.com/r/jinjinov/openhabittracker\n\nhttps://github.com/Jinjinov/OpenHabitTracker/pkgs/container/openhabittracker\n\nSet your username and password with environment variables:\n\n.env\n```\nAPPSETTINGS_USERNAME=admin\nAPPSETTINGS_EMAIL=admin@admin.com\nAPPSETTINGS_PASSWORD=admin\nAPPSETTINGS_JWT_SECRET=your-extremely-strong-secret-key\n```\n\nReplace `your-extremely-strong-secret-key` in Windows terminal:\n\n```\n[System.Convert]::ToBase64String([System.Security.Cryptography.RandomNumberGenerator]::GetBytes(32))\n```\n\nReplace `your-extremely-strong-secret-key` in Linux / macOS terminal:\n\n```\nopenssl rand -base64 32\n```\n\ndocker-compose.yml\n```\nservices:\n  openhabittracker:\n    image: jinjinov/openhabittracker:latest\n    ports:\n      - \"5000:8080\"\n    environment:\n      - AppSettings__UserName=${APPSETTINGS_USERNAME}\n      - AppSettings__Email=${APPSETTINGS_EMAIL}\n      - AppSettings__Password=${APPSETTINGS_PASSWORD}\n      - AppSettings__JwtSecret=${APPSETTINGS_JWT_SECRET}\n    volumes:\n      - ./.OpenHabitTracker:/app/.OpenHabitTracker\n```\n\nAfter you login at http://localhost:5000/login you can use the same browser tab to access:\n- logs: http://localhost:5000/watchdog\n- OpenAPI json: http://localhost:5000/openapi/v1.json\n- OpenAPI UI: http://localhost:5000/scalar/v1\n\n## Made with:\n\n*   [Blazor](https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor)\n*   [Bootstrap](https://getbootstrap.com)\n*   [Bootswatch](https://bootswatch.com)\n*   [CsvHelper](https://joshclose.github.io/CsvHelper)\n*   [DnetIndexedDb](https://github.com/amuste/DnetIndexedDb)\n*   [Markdig](https://github.com/xoofx/markdig)\n*   [WebView2](https://developer.microsoft.com/en-us/microsoft-edge/webview2)\n*   [YamlDotNet](https://aaubry.net/pages/yamldotnet.html)\n\n## Runs with:\n\n*   [Blazor WASM](https://learn.microsoft.com/en-us/aspnet/core/blazor)\n*   [Blazor Server](https://learn.microsoft.com/en-us/aspnet/core/blazor)\n*   [MAUI](https://learn.microsoft.com/en-us/dotnet/maui)\n*   [Photino.Blazor](https://github.com/tryphotino/photino.Blazor)\n*   [WinForms](https://learn.microsoft.com/en-us/dotnet/desktop/winforms)\n*   [Wpf](https://learn.microsoft.com/en-us/dotnet/desktop/wpf)\n\n## Desktop screenshots:\n\n[![](OpenHabitTracker.Web/images/desktop_1_settings.png)](OpenHabitTracker.Web/images/desktop_1_settings.png)\n[![](OpenHabitTracker.Web/images/desktop_2_note.png)](OpenHabitTracker.Web/images/desktop_2_note.png)\n[![](OpenHabitTracker.Web/images/desktop_3_notes.png)](OpenHabitTracker.Web/images/desktop_3_notes.png)\n[![](OpenHabitTracker.Web/images/desktop_4_task.png)](OpenHabitTracker.Web/images/desktop_4_task.png)\n[![](OpenHabitTracker.Web/images/desktop_5_tasks.png)](OpenHabitTracker.Web/images/desktop_5_tasks.png)\n[![](OpenHabitTracker.Web/images/desktop_6_habit.png)](OpenHabitTracker.Web/images/desktop_6_habit.png)\n[![](OpenHabitTracker.Web/images/desktop_7_habits.png)](OpenHabitTracker.Web/images/desktop_7_habits.png)\n[![](OpenHabitTracker.Web/images/desktop_8_backup.png)](OpenHabitTracker.Web/images/desktop_8_backup.png)\n\n## Phone screenshots:\n\n[![](OpenHabitTracker.Web/images/phone_1_empty.png)](OpenHabitTracker.Web/images/phone_1_empty.png)\n[![](OpenHabitTracker.Web/images/phone_2_notes.png)](OpenHabitTracker.Web/images/phone_2_notes.png)\n[![](OpenHabitTracker.Web/images/phone_3_markdown.png)](OpenHabitTracker.Web/images/phone_3_markdown.png)\n[![](OpenHabitTracker.Web/images/phone_4_task.png)](OpenHabitTracker.Web/images/phone_4_task.png)\n[![](OpenHabitTracker.Web/images/phone_5_habit.png)](OpenHabitTracker.Web/images/phone_5_habit.png)\n[![](OpenHabitTracker.Web/images/phone_6_search.png)](OpenHabitTracker.Web/images/phone_6_search.png)\n[![](OpenHabitTracker.Web/images/phone_7_settings.png)](OpenHabitTracker.Web/images/phone_7_settings.png)\n[![](OpenHabitTracker.Web/images/phone_8_backup.png)](OpenHabitTracker.Web/images/phone_8_backup.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjinjinov%2Fopenhabittracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjinjinov%2Fopenhabittracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjinjinov%2Fopenhabittracker/lists"}