Skip to content

📝 TodoApp

一款小而美、离线优先的跨平台待办事项应用

支持 Windows 11 桌面端与 Android 移动端,多端实时同步,断网照常使用。


✨ 核心亮点

🔌 离线优先(Offline-First) 断网状态下可正常增删改查,操作写入本地 SQLite + 离线队列(Outbox Pattern),联网后自动按序同步至服务端,操作不丢失、不重复。

⚡ 实时多端同步 基于 SSE(Server-Sent Events)实现服务端到客户端的实时推送。设备 A 修改待办,设备 B 在数秒内自动刷新,无需手动操作。Client-ID 过滤机制确保发起变更的设备不会收到冗余推送。

📱 跨平台响应式外壳 同一套 Flutter 代码编译出 Windows 桌面端(NavigationRail 侧边栏)和 Android 移动端(BottomNavigationBar 底栏),两端共享全部业务组件,平台差异只在外层壳中处理。

🔒 完善的安全设计 全链路 HTTPS、bcrypt 密码哈希、JWT 双 Token 鉴权(access 1小时 / refresh 30天)、后端端口隔离、敏感配置环境变量管理。


🖥 功能预览

模块功能
待办管理创建 / 编辑 / 删除 / 完成,支持标题、备注、优先级、截止时间
筛选与搜索按状态、优先级筛选,关键字实时搜索,多维排序
账号体系邮箱注册登录,忘记密码(验证码邮件),访客模式
多端同步实时同步,离线队列,增量拉取
到期提醒临期(15 分钟前)和逾期通知,Windows 托盘 / Android 系统推送
日志调试应用内日志查看器,全链路 Correlation ID,后端 /logs/ Web 界面

🚀 快速开始

后端部署

前提:Ubuntu 22.04+ VPS,已安装 Docker、Nginx,域名已解析。

bash
# 1. 克隆后端代码
git clone <your-backend-repo-url> ~/todo_backend
cd ~/todo_backend

# 2. 创建配置文件
cp .env.example .env
vim .env  # 填写 JWT_SECRET、DB_PASSWORD、RESEND_API_KEY 等

# 3. 创建日志目录并启动
mkdir -p logs
docker compose up -d --build

# 4. 验证服务启动
docker compose logs -f api

Nginx 配置SSL 证书申请完整环境变量说明 详见 第七章:生产环境部署

客户端构建

bash
# Windows 桌面端
flutter build windows --release

# Android(arm64,体积最优)
flutter build apk --release --target-platform android-arm64

📖 技术文档

章节内容
一、项目概览功能清单、技术栈详解、数据安全保护
二、系统架构设计整体架构图、数据流向、前后端分层
三、核心架构亮点离线优先、实时同步、跨平台响应式外壳深度解析
四、技术选型思考Flutter / Dart Shelf / SSE / Drift / JWT / Nginx 的选型对比与理由
五、踩坑与调优实录SSE 死穴、像素溢出、Release 包网络失败、通知库编译报错等真实排查过程
六、安全设计传输层、密码存储、JWT、端口隔离、日志安全全链路保护
七、生产环境部署从零部署完整操作手册,含 Nginx 配置、SSL 证书、Resend 邮件配置
八、项目结构前后端目录树、各层职责说明、数据库表结构

📁 仓库结构

todo_app/          ← Flutter 前端
todo_backend/      ← Dart Shelf 后端