licsber 3c271a2a72
Some checks failed
Build and Push Docker Image / buildx (push) Has been cancelled
fix: docker permission again.
2025-11-11 15:24:40 +08:00
2025-11-11 15:09:02 +08:00
2025-11-11 14:59:22 +08:00
2025-11-11 15:24:40 +08:00
2025-11-11 15:18:01 +08:00
2025-11-11 15:09:02 +08:00
2025-11-11 14:36:09 +08:00
2025-11-11 15:24:40 +08:00
2025-11-11 14:36:09 +08:00
2025-11-11 14:36:09 +08:00
2025-11-11 15:18:01 +08:00
2025-11-11 14:36:09 +08:00

任务日历系统

一个可以给每天打勾/打圈的极简任务日历,支持多服务器、多终端同步,还自带 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 自动构建和推送

  1. 在 GitHub 仓库中设置以下 secrets:

    • DOCKERHUB_USERNAME - 你的 Docker Hub 用户名
    • DOCKERHUB_TOKEN - 你的 Docker Hub 访问令牌
  2. 推送代码到 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 目录复制回项目根目录即可。

🧭 使用指南

  1. 添加服务器:页面底部输入想连接的后端地址,点击「添加」,并从下拉框选择它
  2. 注册 / 登录:按提示填写信息,完成后即可自动加载个人日历
  3. 打勾打圈:点击某天即可循环切换状态;右上角的 Toast 会给出操作反馈
  4. 自动保存:系统会在短暂延迟后后台保存,提示「数据已保存」即完成
  5. 随时切换:切换到其他服务器/账号时,会自动同步对应数据

🏗 项目结构

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:后端监听端口,默认 3000
  • JWT_SECRETJWT 密钥,默认简单字符串,生产环境务必更换
  • DB_PATHSQLite 数据库文件路径,默认 /app/data/data.db

💡 小贴士

  • 服务器列表保存在浏览器 LocalStorage可随时增删
  • 支持多个浏览器/设备同时登录同一账号,数据实时同步
  • 若要重置数据,直接删除根目录下的 data 目录即可(注意备份)

🧱 技术栈速览

  • 后端Node.js、Express 5、SQLite、JWT、bcryptjs
  • 前端:原生 HTML/CSS/JS + 模块化组织
  • 部署Docker / Docker Compose 一键启动

Enjoy hacking! 🎉

Description
No description provided
Readme 131 KiB
Languages
JavaScript 73%
CSS 17.9%
HTML 7.2%
Dockerfile 1.2%
Shell 0.7%