Skip to content

shindouhiro/GTD

Repository files navigation

日历待办事项 (Calendar Todo App) - Monorepo

一个现代化的全栈待办事项管理系统,采用 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

桌面端打包 (Tauri)

项目已支持将前端 + 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

🐳 Docker 生产部署 (推荐)

本项目采用了极致的体积优化(~200MB),并支持一键通过 Docker Compose 部署。

1. 快速启动

# 构建镜像并后台运行
docker-compose up --build -d

启动后可访问: http://localhost:3003

2. 配置文件参考 (docker-compose.yml)

您可以直接参考或复制以下配置:

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

3. 数据持久化 (Persistence)

为了确保您的待办事项在容器更新或重启时不丢失,项目默认开启了卷挂载(Volume Mapping)

  • 宿主机目录: ./data
  • 容器内路径: /app/data
  • 数据库文件: todo.db (SQLite)

Important

部署前请确保当前目录下有 data 文件夹写权限,或者手动创建:mkdir -p data && chmod 777 data

3. 常用管理命令

# 查看运行日志
docker-compose logs -f

# 停止并移除容器
docker-compose down

# 重启服务
docker-compose restart

📦 技术栈详情

前端 (@todo-app/client)

  • 框架: React 19 + TypeScript
  • 路由: TanStack Router
  • 样式: Tailwind CSS (Lucide Icons)
  • 日历库: date-fns + lunar-javascript (农历支持)
  • 状态管理: TanStack Query / React Hooks

后端 (@todo-app/server)

  • 运行环境: Node.js + tsx (Watch mode)
  • 数据库: SQLite (better-sqlite3)
  • 架构: RESTful API + Middleware
  • 认证: JWT (jsonwebtoken) + bcrypt

📝 开源协议

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors