Files
timeline/README.md
licsber f1a88c9890
Some checks failed
Build and Push Docker Image / buildx (push) Has been cancelled
feat: docker buildx.
2025-11-11 15:09:02 +08:00

105 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 任务日历系统
一个可以给每天打勾/打圈的极简任务日历,支持多服务器、多终端同步,还自带 Docker 部署方案。
## ✨ 特色功能
- **三态标记**:未标记 / 已完成(✓)/ 部分完成(○),一键轮换
- **多服务器同步**:同一套前端,想连哪台后端就连哪台
- **自动保存**:修改 0.5 秒后自动写入数据库,再也不怕刷新丢数据
- **多端布局**:桌面、平板、手机都能舒舒服服地操作
- **模块化前后端**:逻辑拆分清晰,方便二次开发
## 🚀 快速开始
### 方式一Docker
```bash
docker-compose up -d
```
然后访问 `http://localhost:3000`
### 方式二:本地运行
```bash
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 将自动构建并推送镜像。
### 手动构建和推送
```bash
# 设置 buildx
docker buildx create --name mybuilder --use
docker buildx inspect --bootstrap
# 构建并推送多平台镜像
docker buildx build --platform linux/amd64,linux/arm64 -t yourusername/timeline-calendar:latest --push .
```
## 🧭 使用指南
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_SECRET`JWT 密钥,默认简单字符串,生产环境务必更换
## 💡 小贴士
- 服务器列表保存在浏览器 LocalStorage可随时增删
- 支持多个浏览器/设备同时登录同一账号,数据实时同步
- 若要重置数据,直接删除根目录下的 `data.db` 即可(注意备份)
## 🧱 技术栈速览
- **后端**Node.js、Express 5、SQLite、JWT、bcryptjs
- **前端**:原生 HTML/CSS/JS + 模块化组织
- **部署**Docker / Docker Compose 一键启动
Enjoy hacking! 🎉