# 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 ## 本地开发 ```bash 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`](.env.example),API 与数据合同见 [`docs/api.md`](docs/api.md) 和 [`docs/data-model.md`](docs/data-model.md)。 ## 验证 ```bash uv run ruff check backend tests uv run pytest -q cd frontend pnpm test pnpm build cd .. git diff --check ```