# byjob **Repository Path**: junjungithome/byjob ## Basic Information - **Project Name**: byjob - **Description**: No description available - **Primary Language**: JavaScript - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-20 - **Last Updated**: 2026-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # KidTask - 小朋友每日任务系统 🎯 为小朋友设计的任务管理 Web 应用,家长在后台发布每日任务,孩子在前端完成打卡。 --- ## 功能特性 ### 👶 儿童端(默认首页) - 只显示**今天**的任务,界面活泼可爱 - 环形进度条,实时显示完成进度 - 按分类展示任务(语文、数学等) - 每个任务可操作:**▶ 开始 → ✅ 完成 → 📷 拍照** - 开始后自动计时,超过限时会变红提醒 - 全部完成后触发烟花庆祝特效 🎉 ### 🔧 管理后台(/admin) - 密码登录(默认 `admin123`,可在 `.env` 修改) - 任意日期发布任务,支持: - 设置任务分类(带颜色和图标) - 限时要求(分钟) - 建议开始时间 - 任务排序 - 📋 **一键从历史任务复制**(选择以往任务批量复制到某天) - 📊 **统计分析**:完成率、连续打卡天数、各分类对比 --- ## 快速启动 ### 1. 准备数据库 ```sql -- 登录 MySQL,执行初始化脚本 mysql -u root -p < backend/init.sql ``` ### 2. 配置环境变量 ```bash cd backend cp .env.example .env # 编辑 .env,填入数据库密码等配置 ``` ```env DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASSWORD=你的数据库密码 DB_NAME=kidtask PORT=3000 ADMIN_PASSWORD=你的后台密码 SESSION_SECRET=随机字符串 ``` ### 3. 安装依赖并启动 ```bash cd backend npm install npm start ``` ### 4. 访问 | 入口 | 地址 | |------|------| | 👶 儿童端 | http://localhost:3000/ | | 🔧 管理后台 | http://localhost:3000/admin | --- ## 云服务器部署 ### 方式一:直接运行(推荐简单场景) ```bash # 安装 Node.js(建议 18+) curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt install -y nodejs # 克隆/上传项目到服务器 cd /opt/kidtask/backend npm install --production # 用 PM2 持久运行 npm install -g pm2 pm2 start server.js --name kidtask pm2 startup # 开机自启 pm2 save ``` ### 方式二:Nginx 反代(推荐生产) ```nginx server { listen 80; server_name 你的域名或IP; # 上传文件 location /uploads/ { alias /opt/kidtask/backend/uploads/; } # 反代到 Node location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; client_max_body_size 20m; } } ``` --- ## 目录结构 ``` kidtask/ ├── backend/ │ ├── server.js # 主入口 │ ├── db.js # 数据库连接 │ ├── init.sql # 初始化 SQL │ ├── .env.example # 环境变量示例 │ ├── package.json │ ├── routes/ │ │ ├── auth.js # 登录认证 │ │ ├── categories.js # 分类管理 │ │ ├── tasks.js # 任务 CRUD │ │ ├── records.js # 任务记录(开始/完成/拍照) │ │ └── stats.js # 统计分析 │ └── uploads/ # 上传的照片 └── frontend/ ├── child/ │ └── index.html # 儿童端界面 └── admin/ └── index.html # 管理后台界面 ``` --- ## API 简览 | 方法 | 路径 | 说明 | |------|------|------| | GET | /api/tasks/date/:date | 获取某天任务(含完成状态) | | POST | /api/tasks | 新建任务 | | POST | /api/tasks/batch | 批量复制历史任务 | | DELETE | /api/tasks/:id | 删除任务 | | PATCH | /api/records/:taskId/status | 更新任务状态(开始/完成) | | POST | /api/records/:taskId/photo | 上传完成照片 | | GET | /api/stats/overview?days=7 | 统计数据 | | GET | /api/categories | 获取所有分类 | --- ## 注意事项 1. **上传目录**:`backend/uploads/` 需要可写权限,云部署时建议挂载持久盘 2. **照片大小**:默认限制 10MB,可在 `routes/records.js` 修改 3. **安全**:生产环境建议改用更强的 Session 存储(如 Redis)和 HTTPS 4. **备份**:定期备份 MySQL 数据库和 uploads 目录