Some checks failed
Build and Push Docker Image / buildx (push) Has been cancelled
4.1 KiB
4.1 KiB
任务日历系统
一个可以给每天打勾/打圈的极简任务日历,支持多服务器、多终端同步,还自带 Docker 部署方案。
✨ 特色功能
- 三态标记:未标记 / 已完成(✓)/ 部分完成(○),一键轮换
- 多服务器同步:同一套前端,想连哪台后端就连哪台
- 自动保存:修改 0.5 秒后自动写入数据库,再也不怕刷新丢数据
- 多端布局:桌面、平板、手机都能舒舒服服地操作
- 模块化前后端:逻辑拆分清晰,方便二次开发
🚀 快速开始
方式一:Docker
docker-compose up -d
然后访问 http://localhost:3000
方式二:本地运行
npm install
npm start
同样访问 http://localhost:3000
如需自定义端口,运行前设定
PORT=xxxx即可。
🚀 Docker Buildx 支持
本项目现在支持使用 Docker Buildx 构建多平台镜像,并可推送至 Docker Hub。
使用 GitHub Actions 自动构建和推送
-
在 GitHub 仓库中设置以下 secrets:
DOCKERHUB_USERNAME- 你的 Docker Hub 用户名DOCKERHUB_TOKEN- 你的 Docker Hub 访问令牌
-
推送代码到 main 分支或创建版本标签,GitHub Actions 将自动构建并推送镜像。
手动构建和推送
# 设置 buildx
docker buildx create --name mybuilder --use
docker buildx inspect --bootstrap
# 构建并推送多平台镜像
docker buildx build --platform linux/amd64,linux/arm64 -t registry.cn-beijing.aliyuncs.com/licsber/timeline:latest --push .
🗄️ 数据库持久化
Docker 部署时,用户数据存储在 SQLite 数据库中,默认会持久化到项目根目录的 data 文件夹中。
- 数据库文件路径:
./data/data.db
要备份数据,只需复制整个 data 目录。要恢复数据,将备份的 data 目录复制回项目根目录即可。
🧭 使用指南
- 添加服务器:页面底部输入想连接的后端地址,点击「添加」,并从下拉框选择它
- 注册 / 登录:按提示填写信息,完成后即可自动加载个人日历
- 打勾打圈:点击某天即可循环切换状态;右上角的 Toast 会给出操作反馈
- 自动保存:系统会在短暂延迟后后台保存,提示「数据已保存」即完成
- 随时切换:切换到其他服务器/账号时,会自动同步对应数据
🏗 项目结构
timeline/
├── server.js # 后端入口
├── server/
│ ├── config.js # 基础配置
│ ├── database.js # SQLite 连接与初始化
│ ├── middleware/
│ │ └── auth.js # JWT 鉴权
│ ├── routes/
│ │ ├── auth.js # 登录 / 注册 / 当前用户
│ │ └── calendar.js # 日历数据读写
│ └── utils/
│ └── shutdown.js # 优雅关闭处理
├── public/
│ ├── index.html
│ ├── style.css
│ └── js/
│ ├── main.js # 前端入口
│ ├── auth.js # 登录注册逻辑
│ ├── calendar.js # 日历渲染与交互
│ ├── api.js # 与后端通信
│ ├── storage.js # 本地存储封装
│ ├── state.js # 全局状态
│ └── toast.js # 提示组件
├── Dockerfile
├── docker-compose.yml
├── package.json
└── README.md
⚙️ 配置项
PORT:后端监听端口,默认3000JWT_SECRET:JWT 密钥,默认简单字符串,生产环境务必更换DB_PATH:SQLite 数据库文件路径,默认/app/data/data.db
💡 小贴士
- 服务器列表保存在浏览器 LocalStorage,可随时增删
- 支持多个浏览器/设备同时登录同一账号,数据实时同步
- 若要重置数据,直接删除根目录下的
data目录即可(注意备份)
🧱 技术栈速览
- 后端:Node.js、Express 5、SQLite、JWT、bcryptjs
- 前端:原生 HTML/CSS/JS + 模块化组织
- 部署:Docker / Docker Compose 一键启动
Enjoy hacking! 🎉