极简自托管经期记录工具,使用 JSON 文件存储数据,两个 API 和一页前端,无账号、无云、无广告、无数据上报。

Stars

17

7 天增长

暂无数据

Fork 数

1

开放 Issue

0

开源协议

MIT

最近更新

2026-07-07

AI 仓库情报摘要
FR-AI / ANALYSIS

为什么值得关注

完全隐私优先——身体数据只保留在用户自己的机器上,并内置自动去重、周期推导和相位着色功能,无需 Node.js 或外部服务即可运行。

适合谁使用

  • 关注隐私的个人经期追踪用户
  • 希望自建轻量级替代方案的开发者
  • 偏好简单、基于文件备份且无厂商锁定的用户
  • 对月经周期算法感兴趣的入门者

典型使用场景

  • 一键记录经期开始日,或通过日历补记/撤销
  • 查看推导出的周期统计:平均周期、下次预计、当前相位
  • 通过复制单个 JSON 文件实现数据备份
  • 在本地服务器运行,并添加反向代理进行基本认证以对外提供服务

项目优势

  • 前端已预构建,无需 Node.js 环境即可直接使用
  • 同一次经期内重复点击自动去重,避免周期计算偏差
  • 周期推导算法合理(过滤 <15 天和 >60 天的间隔)
  • MIT 开源许可,允许修改和再分发

使用前须知

  • 仅支持单用户,无多用户或共享功能
  • 未内置加密或认证机制(公开访问需自行添加反向代理)
  • 预测仅供参考,不构成医疗建议;记录少于两次时准确性有限

README 快速开始

period-tracker

极简自托管经期记录。一个 JSON 文件存数据、两个 API、一页前端——没有账号、没有云、没有广告、没有数据上报,你的身体数据只待在你自己的机器上。

功能

  • 一键「经期来了」记录来潮起始日;点日历任意一天可补记 / 撤销
  • 自动推导:平均周期、下次预计、当前周期第几天、当前相位(经期 / 卵泡 / 排卵 / 黄体 / 超期)
  • 日历按相位着色(只标到今天为止,不预演未来)
  • 同一次经期内手滑重复点击自动去重,不会算歪周期
  • 数据就是一个 period_state.json,备份 = 复制一个文件

跑起来

pip install -r requirements.txt
python server.py
# 打开 http://127.0.0.1:8080

前端构建产物已带在 static/ 里,克隆即用,不装 Node 也能跑。

配置

环境变量默认说明
PERIOD_DATA./period_state.json数据文件路径
PERIOD_PORT8080端口
PERIOD_HOST127.0.0.1监听地址。要对外服务请自己套认证(反代 + Basic Auth 等)

API

GET  /api/period/state
     → {state: {starts: ["YYYY-MM-DD", ...], period_length: 5}, derived: {...}}

POST /api/period/log
     body: {action: "start" | "undo", date?: "YYYY-MM-DD"}   # date 省略 = 今天
     → 同上

derived 字段:last_start / next_due / recorded / cycles / avg_cycle / period_length / day_of_cycle / days_until_next / phase

改前端

cd web
npm install
npm run dev      # 开发:5173 端口,API 代理到 :8080
npm run build    # 构建落到 ../static

测试

pip install pytest
pytest tests/

周期推导怎么算

  • 平均周期 = 相邻两次来潮起始日间隔的均值;间隔 60 天视为漏记一轮(不计入均值)
  • 排卵日 ≈ 下次预计前 14 天,前后各留一天为排卵窗口
  • 不足两次记录时按默认 28 天周期估算

⚠️ 预测仅供参考,不构成医疗建议;周期异常请咨询医生。

License

MIT

项目描述

极简自托管经期记录 · self-hosted period tracker: one JSON file, two APIs, one page

相关仓库与替代方案

根据分类、Topic 和编程语言匹配的相似项目。

TanStack
精选
TanStack GitHub avatar

router

TanStack Router is a type-safe, data-driven React router with built-in caching, prefetching, and nested layouts, while TanStack Start extends it into a full-stack SSR framework.

Web 开发前端框架
14,861
vercel-labs
精选
vercel-labs GitHub avatar

scriptc

scriptc compiles ordinary TypeScript into small, fast native executables without needing Node.js, V8, or any JavaScript runtime in the binary.

开发者工具代码质量与构建
1,985
Jakubantalik
精选
Jakubantalik GitHub avatar

thinking-orbs

A React component library that renders six hand-tuned animated thought orb loading indicators on a plain 2D canvas, with two purpose-tuned sizes and automatic theme detection for AI and agent UIs.

AI 与机器学习AI 智能体
1,191