
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.
It offers complete privacy and simplicity—your body data stays on your own machine, with automatic deduplication, cycle derivation, and phase coloring, all without requiring Node.js or external services.
极简自托管经期记录。一个 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_PORT | 8080 | 端口 |
PERIOD_HOST | 127.0.0.1 | 监听地址。要对外服务请自己套认证(反代 + Basic Auth 等) |
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/
⚠️ 预测仅供参考,不构成医疗建议;周期异常请咨询医生。
MIT
极简自托管经期记录 · self-hosted period tracker: one JSON file, two APIs, one page
Similar projects matched by category, topics, and programming language.

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.
scriptc compiles ordinary TypeScript into small, fast native executables without needing Node.js, V8, or any JavaScript runtime in the binary.
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.