OpenHabitTracker 1.2.5 介绍与选型指南

OpenHabitTracker 1.2.5(.NET Blazor 开源习惯追踪/任务/笔记应用)介绍与选型指南:项目身份、六端架构、overdue 计量模型、功能特性、快速开始,及与 Habitica、Loop、Beaver Habits 的量化对比(数据查询日期 2026-10-24)。

OpenHabitTracker习惯追踪自托管任务管理2026/10/24

OpenHabitTracker 1.2.5 介绍与选型指南

目标:为「想在自有服务器/自有设备上做习惯追踪、任务与笔记管理」的读者提供 OpenHabitTracker 的全面认知与选型依据——覆盖项目身份、核心架构、功能特性、快速上手、适用场景限制,以及与 Habitica、Loop Habit Tracker、Beaver Habits 的量化对比。本文信息全部来自官方仓库与官网溯源(来源与查询日期随文标注),未做本地实测。

一、环境信息

本文为认知与选型篇,全部信息通过官方渠道联网取证,未在本地部署实测:

二、软件概述

OpenHabitTracker 是一款免费开源的「习惯追踪 + 任务管理 + 笔记」三合一应用。作者 Jinjinov(GitHub 用户 20396198)以 .NET Blazor 技术栈独立开发,项目定位非常明确:数据完全归用户自己所有——官方 README 的原话是:

  • "All your data stays on your device, and syncs only to a server you run yourself"(所有数据留在你的设备上,只同步到你自己运行的服务器)
  • "The app has no ads, no trackers, no account, no subscriptions and no in-app purchases"(无广告、无追踪器、无账号体系、无订阅、无应用内购买)

这段定位对应的是当前个人效率工具市场的主流痛点:Habitica、Todoist 等闭源 SaaS 应用把数据存在厂商云上;而多数开源竞品又只覆盖单一形态(如 Loop Habit Tracker 只有 Android 端)。OpenHabitTracker 用「一套 C# 代码库、六种运行形态」来同时覆盖桌面、手机与浏览器(详见第三章)。

防混淆提示:OpenHabitTracker 是一个具体项目名,与泛指的 "open source habit tracker" 类目不同;与其他同名或近名项目(如安卓社区的各种 habit tracker 模板工程)无关,认准官方仓库 Jinjinov/OpenHabitTracker 与官网 openhabittracker.net 即可。它与游戏化习惯应用 Habitica、安卓单机应用 Loop Habit Tracker 属于同类不同路线的竞品,关系在第七章展开。

版本与活跃度基线(2026-10-24 查询):

维度数据取证来源
最新稳定版1.2.5(2026-09-27)仓库 releases.atom
上一版本1.2.4.1(2026-08-12)、1.2.4(2026-08-15)仓库 releases.atom
星标 / fork303 / 24shields.io 徽章接口
主分支main(仓库 id 718796532)仓库页面 HTML
许可证GPL-3.0仓库 LICENSE 文件
官方网站与文档openhabittracker.netREADME

💡 说明:版本节奏上,1.2.x 系列在 2026 年 8—9 月连续发布 3 个版本(1.2.4 → 1.2.4.1 → 1.2.5),处于活跃维护期。1.2.5 的更新内容(自述 Release Notes,2026-10-24 查询)包括:习惯统计图表(target、history、calendar、best streaks、frequency)、每日待办摘要通知、任务计划时间前的提醒通知、在线同步异常图标,以及同步断线重试、周统计不刷新等修复——统计与同步是这个项目近期的主要演进方向。

三、核心架构

OpenHabitTracker 的架构核心是「一套共享代码,多形态宿主」。官方 README "Runs with" 一节列出了全部运行形态,本章按此溯源整理。

3.1 运行形态与技术栈

运行形态承载技术典型用途
Web 应用(PWA)Blazor WASM + IndexedDB浏览器直接使用,数据存浏览器端
自托管服务器Blazor Server(ASP.NET Core,Kestrel)部署在自有服务器,数据存 SQLite,可作多设备同步中枢
Windows / Linux / macOS 桌面Photino.Blazor / WinForms / WPF桌面客户端,走各应用商店或包管理器分发
Android / iOS 移动端.NET MAUIGoogle Play / App Store 分发

技术组件(官方 README "Made with" 一节,2026-10-24 查询):Bootstrap + Bootswatch(界面与 26 套主题)、Markdig(Markdown 渲染)、YamlDotNet(YAML 备份)、CsvHelper(TSV 导入导出)、DnetIndexedDb(浏览器 IndexedDB 封装)、WatchDog(自托管形态的日志查看页,见 1.2.5 自述中的 /watchdog)、Microsoft.AspNetCore.OpenApi + Scalar(API 文档)。

💡 技术拓展:Blazor 有两种主要托管模型,OpenHabitTracker 同时用了两者,理解差异有助于选型——

模型原理特点OpenHabitTracker 中的角色
Blazor WASM.NET 运行时经 WebAssembly 下载到浏览器执行首次加载慢、之后可离线;逻辑全在客户端pwa.openhabittracker.net 在线应用,数据存浏览器 IndexedDB,无服务器也能用
Blazor Server浏览器与服务器保持 SignalR 长连接,UI 事件在服务端处理首屏快、依赖连接;数据天然在服务端官方容器镜像的形态,数据存服务器 SQLite,作为桌面/手机客户端的同步中枢

同一套 UI 组件代码(Razor 组件)在两种模型下复用,这正是「自托管服务器做同步中枢、浏览器端离线兜底」双形态的基础。

3.2 数据存储与同步

数据分两层:

  • 客户端层:PWA 形态使用 IndexedDB(经 DnetIndexedDb 访问),数据保存在浏览器存储中,不依赖服务器;桌面/移动原生形态数据存本地文件。
  • 服务器层:自托管形态使用 SQLite 数据库(程序目录下 .OpenHabitTracker/OpenHT.db,这是官方 Docker 镜像挂载卷的路径,见 README Docker 一节);登录凭据通过 ASP.NET Core Identity 存储,API 访问使用 JWT Bearer 令牌,刷新令牌 90 天有效期且每次轮换(1.2.5 源码 AuthController 自述常量,2026-10-24 实查)。
  • 同步模型:客户端应用(桌面/手机/PWA)在设置中填入自托管服务器地址与账号即可开启 "Online sync"。README 强调单用户模型——"Docker image contains a Blazor Server app for one user"(容器镜像内置的 Blazor Server 应用面向单个用户)。

💡 技术拓展:浏览器端持久化常见方案对比——

方案容量特点本文项目实际采用
localStorage约 5MB纯键值字符串,同步 API否(容量不足)
IndexedDB数百 MB 级异步、结构化存储、可建索引是(DnetIndexedDb 封装),PWA 主存储
OPFS(文件系统访问)大较新,浏览器支持参差否

选 IndexedDB 是 PWA 数据量(笔记全文 + 历史记录)下的合理选择。

3.3 部署形态一览

形态载体面向人群数据位置
在线 PWApwa.openhabittracker.net不想装任何东西的用户浏览器 IndexedDB
自托管服务器官方镜像 jinjinov/openhabittracker(Docker Hub 与 GHCR 双发布)有服务器/NAS 的用户服务器 SQLite
桌面应用Microsoft Store / Flathub / Snap Store / winget(winget install OpenHabitTracker)Windows/Linux/macOS 桌面用户本地文件
移动应用Google Play / App Store / APKPure / GitHub Releases(配合 Obtainium 自动更新)Android/iOS 用户本地文件

关键差异:所有形态数据模型一致,可通过应用内「Data → Online sync」指向同一台自托管服务器实现多端同步;不部署服务器时各端数据彼此独立。

四、功能特性

以下特性来自官方 README 功能清单(2026-10-24 查询,特性名按原文意译):

4.1 笔记、任务、习惯三合一

  • 笔记(Notes):Markdown 书写,列表页直接渲染 Markdown,读一条笔记不需要点进去;
  • 任务(Tasks):支持计划日期与时间、时长(duration)、清单(checklist)与计时器(timer);
  • 习惯(Habits):支持按次/按时间/按数量三种计量(对应 DisplayMetric:Repetitions/Time/Quantity),每个习惯有目标值(target)与重复周期(间隔天数/周/月/年);
  • 分类与优先级:三者在分类(Category)与优先级(Priority:None→VeryLow→Low→Medium→High→VeryHigh 六档,2026-10-24 实查 1.2.5 OpenAPI 文档枚举)两个维度上打通。

4.2 习惯计量模型:overdue 而非 streak

这是 OpenHabitTracker 与多数习惯应用最核心的产品差异。README 原文:

"Habits measured by how overdue they are rather than by an unbroken streak: a habit with a 10 day interval that is 2 days overdue reads 120%"(习惯以「超期程度」计量而非「连续不中断」:间隔 10 天的习惯超期 2 天时显示 120%)

💡 技术拓展:习惯类应用有两种主流计量模型——

模型原理心理效应代表应用
连击(streak)中断一次即清零损失厌恶驱动坚持,但一次中断易导致放弃Loop Habit Tracker、Habitica
超期百分比(overdue)按「距上次完成的时间 / 间隔」计算健康度,超期仍可补救容忍中断,强调回到正轨OpenHabitTracker

OpenHabitTracker 同时提供 best streaks 统计图表,两种视角都有,但主模型是 overdue。适合「间歇性执行、怕清零挫败感」的用户;偏好打卡清零仪式感的用户可能更习惯 streak 模型。

4.3 搜索、过滤与排序

  • 搜索覆盖笔记正文与清单项,不只是标题;
  • 过滤支持日期(固定日期或距今天数,保存的过滤器不会因时间推移失效)、分类、优先级、状态;习惯可按超期程度设上下界过滤;
  • 「反向」的完成日期过滤:查「某段时间内没做过什么」;
  • 笔记、任务、习惯各自可选 11 种排序键。

4.4 统计与图表

  • 每个列表旁有周统计:习惯在轨/临近/超期、任务完成与超期(含耗时)、笔记新增与更新;
  • 每个习惯有五类图表(1.2.5 新增,见 Release Notes):今日/本周/本月/本季/本年目标进度、按日/周/月/季/年的历史、连续日历(月份间无断档)、十条最长连击、按星期/月份的完成量分布。

4.5 数据导入导出与本地化

  • 导出/导入 JSON、YAML、TSV、Markdown 四种格式,并可从 Google Keep Takeout ZIP 导入;
  • 设置本身也会随 JSON/YAML 备份一并导出并参与同步;
  • 本地化 20 种语言(含简体中文、英语、德语、法语、日语、韩语等,README 列表);
  • 26 套主题(Bootswatch),深浅色模式;
  • 完整键盘导航与屏幕阅读器支持(无障碍);
  • 通知:每日待办摘要 + 任务计划时间前提醒(1.2.5 新增);几乎所有界面元素可开关自定义。

五、快速开始(最小可用示例)

本章给两条官方路径:零安装(PWA)与自托管(官方容器镜像)。均为官方 README 给出的标准方式(2026-10-24 查询),部署细节与逐条实测回显见本专栏部署篇与配置篇。

5.1 零安装:直接使用官方 PWA

浏览器打开 https://pwa.openhabittracker.net 即可使用,数据存于浏览器 IndexedDB,不经过任何第三方服务器。这是评估产品功能最快的路径。

5.2 自托管:官方容器镜像 + Compose

官方 README 给出的最小 compose 定义(原文节选,占位值需替换为自己的强口令与 JWT 密钥):

services:
  openhabittracker:
    image: jinjinov/openhabittracker:latest
    ports:
      - "5050:8080"
    environment:
      - AppSettings__UserName=${APPSETTINGS_USERNAME}
      - AppSettings__Email=${APPSETTINGS_EMAIL}
      - AppSettings__Password=${APPSETTINGS_PASSWORD}
      - AppSettings__JwtSecret=${APPSETTINGS_JWT_SECRET}
      - TZ=Europe/Berlin # replace with your timezone
    volumes:
      - ./.OpenHabitTracker:/app/.OpenHabitTracker

配套 .env(官方示例结构,口令请换成强口令):

APPSETTINGS_USERNAME=admin
APPSETTINGS_EMAIL=admin@admin.com
APPSETTINGS_PASSWORD=<强口令>
APPSETTINGS_JWT_SECRET=<openssl rand -base64 32 生成的密钥>

启动后在 http://<服务器IP>:5050/login 登录;桌面/手机客户端在「菜单 → Data → Online sync」填服务器地址与账号即可开启同步(README "Sync desktop or mobile app with Docker" 一节,2026-10-24 查询)。

完整的带健康检查与实测回显的部署流程,见本专栏部署篇《OpenHabitTracker Docker Compose 部署指南》;参数逐项解释见《OpenHabitTracker 1.2.5 配置参数详解》;REST API 的实测用法见《OpenHabitTracker 1.2.5 API 使用详解》。

六、适用场景与限制

6.1 适用场景

  1. 个人多端效率中枢:桌面(Store 版)+ 手机(Play/App Store 版)+ 浏览器(PWA)三端并用,一台自托管服务器做同步中枢,数据不出家门;
  2. NAS / 家庭服务器玩家:官方单容器镜像 + SQLite 单文件存储,备份就是拷一个目录,非常适合群晖等 NAS 的 Container Manager 部署(README 专门给出 Synology NAS 部署步骤);
  3. Markdown 笔记重度用户:从 Google Keep 迁移(官方支持 Takeout ZIP 导入),笔记在列表直读,配合任务与习惯统一管理;
  4. 反对订阅制与账号绑架的用户:无账号体系、无遥测,GPL-3.0 可自由自用与修改。

6.2 限制与注意

  1. 单用户模型:官方镜像明确是 "for one user"——家庭/团队多人共用一个实例并不在官方支持范围(每个成员需要各自实例或各自数据目录);
  2. 社区体量小:303 星、单人维护(2026-10-24 查询),issue 响应与功能诉求的可持续性弱于 Habitica 这类有组织维护的项目;
  3. 无官方多实例/集群方案:数据层是单文件 SQLite,没有内建的横向扩展或主从复制能力;
  4. 无官方 SSO/LDAP 集成:认证就是用户名口令 + JWT,企业级身份源接入需要自行改造;
  5. GPL-3.0:商用分发衍生品需遵守 GPL 义务,与 MIT/Apache 类项目混用时需注意合规。

七、同类选型对比

对比对象选取三类代表性项目:游戏化多端 SaaS 型(Habitica)、移动单机型(Loop Habit Tracker)、自托管轻量型(Beaver Habits)。数据口径:星标/fork 取自 shields.io 徽章接口、版本取自各仓库 releases.atom,均于 2026-10-24 查询。

7.1 量化对比表

维度OpenHabitTrackerHabiticaLoop Habit TrackerBeaver Habits
仓库Jinjinov/OpenHabitTrackerHabitRPG/habiticaiSoron/uhabitsdaya0576/beaverhabits
星标 / fork303 / 2414k /(未取)10k /(未取)1.8k /(未取)
最新版本1.2.5(2026-09-27)v5.51.0v2.3.22026-07-30 前后(release feed)
技术栈C# .NET 10 Blazor闭源 SaaS + 客户端Android 原生(Kotlin/Java)Python(FastAPI/HTMX 系)
自托管官方镜像,单容器单用户可自托管但组件重(多服务)不适用(单机应用)官方镜像,轻量
客户端覆盖Web/Win/Linux/macOS/Android/iOS 六形态Web/Android/iOS仅 Android仅 Web(移动适配)
离线可用是(PWA/本地端全离线)弱(在线为主)完全离线弱
多用户否(单用户)是(队伍/社交)否否
数据模型笔记+任务+习惯三合一,overdue 计量任务+习惯,游戏化 RPG 激励纯习惯,streak+量化评分纯习惯,日历打卡
数据导出JSON/YAML/TSV/Markdown + Keep 导入CSV(有限)Android 本地备份/CSVJSON/Markdown
许可证GPL-3.0GPL-3.0(代码)GPL-3.0MIT

7.2 社区活跃度与版本节奏解读

  • Habitica(14k 星):十年期老项目、有基金会与核心团队,版本号持续滚动;代价是自托管栈重(Web + 客户端 + 数据库多组件)、且产品核心是队伍社交游戏化,单人用户用不到其主体功能;
  • Loop Habit Tracker(10k 星):安卓端口碑最好的习惯应用,streak 模型打磨成熟;但它是纯 Android 单机应用,没有服务器同步与桌面端,不适合多端场景;
  • Beaver Habits(1.8k 星):2024 年后崛起的轻量自托管打卡应用,理念最接近 OpenHabitTracker(单用户、自托管、日历打卡);但只有 Web 形态、功能面窄(无任务/笔记、无 overdue 计量模型);
  • OpenHabitTracker(303 星):绝对热度最小,但功能覆盖面(六端形态 + 三合一数据 + 双计量模型 + 20 语言)在四者中最宽,版本节奏活跃(2026 年 8—9 月三连发)。适合「功能要全、数据要自己拿」的用户;风险是单人维护的长期可持续性。

7.3 「如果……则选……」建议

  • 如果你只想要一个 Android 打卡应用,不需要服务器 → Loop Habit Tracker;
  • 如果你想要队伍打卡、游戏化激励、不介意数据在云端 → Habitica(官方 SaaS);
  • 如果你只需要极简的每日日历打卡 Web 应用 → Beaver Habits;
  • 如果你需要自托管 + 多端同步 + 笔记任务习惯三合一 + 数据可全量导出 → OpenHabitTracker;
  • 如果你在 OpenHabitTracker 与 Beaver Habits 之间纠结:需要原生客户端(桌面/手机 App)与任务笔记功能选前者;只要 Web 打卡、追求极轻部署选后者。

八、参考链接

本文所有外部数据(版本号、星标数、功能清单、README 引文)查询日期均为 2026-10-24;后续版本演进请以官方仓库为准。