一个现代化的全栈待办事项管理系统,采用 Monorepo 架构,集成了交互式日历与高效的任务列表。
- 📅 智能日历视图:支持按月查看任务,深度集成农历(Lunar Calendar),完美支持中国传统节气和节日。
- 📋 列表表格视图:一键切换至高效的表格模式,支持任务的快速预览、筛选与管理。
- 🏷️ 全中文化分类:内置工作、生活、学习等多种中文分类,支持自定义颜色与图标。
- 📊 多维统计分析:直观展示任务完成趋势,实时把控工作效率。
- 🎨 多套皮肤主题:内置 Default、Ocean、Forest、Cyberpunk 等多种精美皮肤,支持一键切换并自动保存偏好。
- 📝 自动变更日志:基于 changelogithub 规范,自动生成版本更新日志,确保项目透明度与规范性。
- 🛡️ 安全认证:基于 JWT 的用户认证体系,保障数据安全。
calendar-todo-app/
├── packages/
20: │ ├── client/ # React 前端 (Vite + Tailwind CSS)
15: │ └── server/ # Express 后端 (SQLite + TypeScript)
22: ├── pnpm-workspace.yaml # Monorepo 工作区配置 (PNPM Catalogs)
24: ├── Dockerfile # 极致优化的多阶段构建脚本
25: └── docker-compose.yml # 一键启动配置
- Node.js >= 20
- pnpm >= 10
pnpm install# 同时运行前端和后端
pnpm dev
# 前端地址: http://localhost:3000
# 后端地址: http://localhost:3001# 全局编译
pnpm build项目已支持将前端 + Node 后端一起打包到桌面应用(macOS / Windows)。
# 1) 准备打包资源(构建前端、部署后端依赖、复制 Node runtime)
pnpm tauri:prepare
# 2) 执行桌面打包(默认 targets=all)
pnpm tauri:build说明:
- 打包时会将后端放入
src-tauri/resources/server,并由 Tauri 启动时自动拉起。 - 生产数据库默认写入系统应用数据目录(
app_data_dir/todo.db),不会污染项目目录。 - 如仅需 macOS
.app,可执行node scripts/run-tauri.mjs build --bundles app。
本项目采用了极致的体积优化(~200MB),并支持一键通过 Docker Compose 部署。
# 构建镜像并后台运行
docker-compose up --build -d启动后可访问: http://localhost:3003
您可以直接参考或复制以下配置:
version: '3.8'
services:
calendar-todo:
image: shindouhiro/calendar-todo:latest
build:
context: .
dockerfile: Dockerfile
ports:
- '3003:3001'
volumes:
- ./data:/app/data
restart: unless-stopped
healthcheck:
test: [CMD, wget, --no-verbose, --tries=1, --spider, 'http://localhost:3001/health']
interval: 30s
timeout: 3s
retries: 3
environment:
- NODE_ENV=production
- DB_PATH=/app/data/todo.db为了确保您的待办事项在容器更新或重启时不丢失,项目默认开启了卷挂载(Volume Mapping):
- 宿主机目录:
./data - 容器内路径:
/app/data - 数据库文件:
todo.db(SQLite)
Important
部署前请确保当前目录下有 data 文件夹写权限,或者手动创建:mkdir -p data && chmod 777 data。
# 查看运行日志
docker-compose logs -f
# 停止并移除容器
docker-compose down
# 重启服务
docker-compose restart- 框架: React 19 + TypeScript
- 路由: TanStack Router
- 样式: Tailwind CSS (Lucide Icons)
- 日历库: date-fns + lunar-javascript (农历支持)
- 状态管理: TanStack Query / React Hooks
- 运行环境: Node.js + tsx (Watch mode)
- 数据库: SQLite (better-sqlite3)
- 架构: RESTful API + Middleware
- 认证: JWT (jsonwebtoken) + bcrypt
MIT


