a4c1ac59782c777a89ff607d89e9d89ead38023a
dodo
一个自托管、移动端友好的任务与生活管理 PWA,数据由自己掌控。
当前主要能力
- 文件夹、收集箱与自定义清单;清单归档后保留任务归属,恢复后原样可见
- 任务与一层子任务、优先级、Markdown 备注、日期/时间、回收站、拖拽排序
- RFC 5545 计划重复与“完成后重复”;乐观锁避免并发覆盖
- 今日页按逾期任务、今日任务、今日习惯分组,并提供进度与环境信息
- 完成型/数值型习惯、日/周/月/间隔计划、暂停、历史与归档
- 倒数日、纪念日、生日及公历/农历重复
- Markdown 备忘录及软删除/恢复
- 任务附件、登录设备管理与审计日志
- 完整 ZIP v2 备份(含附件字节、manifest 与 SHA-256)及预检后合并/替换恢复
- 兼容旧版 CSV / JSON v1 恢复
界面约定
- 弹层统一使用
AppSheet/AppDialog,共享遮罩、焦点陷阱、Escape、背景 inert 和嵌套栈行为 - 设置页按“数据、账户与安全、登录设备、活动、危险操作”连续分组
- 手机底栏直接进入今天、习惯、倒数日、设置,不再使用“更多”中转
- 新增入口是普通的圆形 Plus FAB,共用于任务、习惯、倒数日和备忘录
技术栈
- Frontend: Vue 3 + TypeScript + Vite + Tailwind CSS
- Backend: FastAPI + Pydantic v2 + SQLAlchemy 2 Async + Alembic
- DB: PostgreSQL(测试使用 SQLite)
- Package: uv + pnpm
本地开发
cd /Users/bboysoul/PycharmProjects/dodo
uv sync
uv run uvicorn backend.main:app --host 0.0.0.0 --port 8781
cd frontend
pnpm install
pnpm run dev
配置项见 .env.example,API 与数据合同见 docs/api.md 和 docs/data-model.md。
验证
uv run ruff check backend tests
uv run pytest -q
cd frontend
pnpm test
pnpm build
cd ..
git diff --check
Languages
TypeScript
41.9%
Python
38.8%
Vue
18.1%
HTML
0.7%
JavaScript
0.4%