logo
0
0
WeChat Login

📝 self-todo

一个给自己用的待办应用,主打 分组清晰、拖拽顺手、界面直接、部署简单
后端用 Go + Gin + SQLite,前端用 React + Vite + Mantine,构建后前端资源可直接内嵌进后端,单文件部署更省心。 🚀

截图

创建todo 主界面

✨ 项目特点

  • 📌 分组管理:支持创建、重命名、删除任务分组
  • 任务状态清晰planned / doing / done
  • 🎯 拖拽排序:任务可在分组间自由拖拽调整顺序
  • 🧩 子任务支持:一个任务里可以继续拆分小步骤
  • 🖼️ 图片附件:支持粘贴截图、拖拽上传
  • ☁️ R2 直传:可接入 Cloudflare R2 存储图片附件
  • 🔐 密码登录:基于 JWT 的简单鉴权
  • 📦 单体部署:前端可打包进 Go 服务,部署时只跑一个服务

🧱 技术栈

  • 🐹 后端:Go、Gin、SQLite
  • ⚛️ 前端:React 19、Vite、TypeScript
  • 🎨 UI:Mantine
  • 🤏 交互:dnd-kit、framer-motion
  • 🗂️ 存储:SQLite
  • ☁️ 附件:Cloudflare R2(可选)

🖥️ 界面与功能

这个项目当前包含这些核心能力:

  • 🗂️ 看板式分组视图
  • ➕ 快速新建任务和分组
  • ✏️ 编辑任务标题、描述、状态、所属分组
  • 📋 管理子任务
  • 🙈 一键隐藏已完成任务
  • 🖱️ 拖拽任务到其他分组
  • 🖼️ 上传和管理任务图片附件

🚀 快速开始

1. 准备配置

复制配置文件:

cp config.example.json config.json

至少要改这两项:

  • 🔑 auth.password
  • 🔐 jwt.secret

2. 安装前端依赖

cd web pnpm install cd ..

3. 构建前端并启动后端

make build-frontend go run main.go

默认访问地址:

http://localhost:8080

🛠️ 开发方式

前后端分开开发

后端:

go run main.go

前端:

cd web && pnpm dev

如果你这样开发,建议把 config.json 里的 cors.allow_origin 设成:

{ "cors": { "allow_origin": "http://localhost:5173" } }

构建完整可执行文件

make build

生成的可执行文件:

./self-todo

🐳 Docker 部署

项目支持 Docker Compose 部署,适合直接丢到服务器上跑。 🐋

cp config.docker.example.json config.docker.json docker compose up -d --build

默认访问:

http://localhost:8080

更完整的部署说明见 DEPLOY.md

☁️ 附件上传说明

如果配置了 Cloudflare R2,图片上传流程是:

  1. 📨 前端向后端申请预签名上传地址
  2. ⬆️ 浏览器直接上传到 R2
  3. 🔗 后端记录附件并绑定到任务

这意味着除了应用本身的 CORS,你还需要给 R2 Bucket 单独配置 CORS。
具体配置方式见 DEPLOY.md

📁 项目结构

. ├── main.go # Go 服务入口 ├── internal/ # 后端业务逻辑 │ ├── config/ # 配置读取 │ ├── db/ # 数据库初始化 │ ├── handler/ # API 处理器 │ ├── middleware/ # 鉴权中间件 │ ├── model/ # 数据模型 │ └── webui/ # 前端静态资源挂载/嵌入 ├── web/ # React 前端 ├── config.example.json # 本地配置示例 ├── config.docker.example.json └── docker-compose.yml

💡 适合谁

  • 🧍 想要一个自己可控的个人待办系统的人
  • 🛠️ 想要一个轻量、可自部署、没有复杂依赖的任务板
  • 🧪 想拿一个 Go + React 的小型全栈项目做参考的人

📜 License

本项目采用 MIT License
你可以免费使用、修改、分发和商用,但需保留许可证声明。

About

一个支持docker部署的, 看板形式的web todo

1.21 MiB
0 forks0 stars2 branches0 TagREADMEMIT license
web-todorepo-named
Language
TypeScript49.6%
Go47%
CSS1.5%
Makefile0.6%
Others1.3%