# task
**Repository Path**: danqingcheng/task
## Basic Information
- **Project Name**: task
- **Description**: No description available
- **Primary Language**: JavaScript
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-05-09
- **Last Updated**: 2026-05-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 任务打卡助手




一个简洁优雅的本地化任务管理应用,帮助你养成良好的生活习惯
[特性](#特性) • [安装](#安装教程) • [使用](#使用说明) • [技术栈](#技术架构) • [贡献](#参与贡献)
---
## 📖 项目介绍
日常生活中的每日打卡任务,例如运动、阅读、学习等,可以帮助人们养成良好的生活习惯,提高生活质量。
现有的打卡应用普遍存在需要登录认证、广告繁多、信息泄露等问题。**任务打卡助手**应运而生,它是一款完全本地化的任务管理工具:
- ✅ **无需登录** - 开箱即用,无需注册账号
- ✅ **无广告** - 清爽界面,专注任务管理
- ✅ **隐私安全** - 所有数据存储在本地,不会上传到云端
- ✅ **开源免费** - 代码完全开源,可自由定制开发
- ✅ **AI 辅助开发** - 使用 AI 技术开发,支持跨平台部署
无论你有无编程基础,都可以轻松上手进行二次开发!
---
## ✨ 特性
### 🎯 核心功能
- **📅 日历视图** - 直观的日历界面,一目了然查看任务完成情况
- **✅ 任务管理** - 创建、编辑、删除每日任务,支持任务描述
- **🔄 固定任务** - 设置每日重复的固定任务,自动添加到日历
- **📸 打卡记录** - 为任务添加图片和文字记录,追踪成长历程
- **📊 数据统计** - 周统计、月统计图表,可视化展示完成率
- **🎁 奖励兑换** - 完成任务获得积分,兑换心仪奖励(开发中)
### 🌍 用户体验
- **🌐 多语言支持** - 支持中文和英文切换,默认中文显示
- **🎨 现代UI** - 采用 HeroUI 组件库,美观流畅的交互体验
- ** 底部导航** - Tab Bar 设计,快速切换任务和我的页面
- ** 参数设置** - 灵活配置应用参数,支持语言切换
- ** 奖励管理** - 自定义奖励项目,管理积分兑换
- **💾 本地存储** - 使用 AsyncStorage 持久化数据,快速可靠
- **🔄 实时刷新** - 页面聚焦自动更新数据,保持最新状态
### 🔒 隐私保护
- **离线可用** - 无需网络连接即可使用全部功能
- **数据私有** - 所有数据存储在设备本地
- **无追踪** - 不收集任何用户信息和行为数据
---
## 📱 应用截图
> 提示:在此处添加应用截图展示主要功能界面
---
## 🚀 安装教程
### 环境要求
- Node.js >= 18.x
- pnpm >= 8.x(推荐)或 npm/yarn
- Expo CLI
- Android Studio(Android 开发)
- Xcode(iOS 开发,仅 macOS)
### 快速开始
#### 1. 克隆仓库
```bash
git clone https://gitee.com/your-username/task.git
cd task/client
```
#### 2. 安装依赖
```bash
# 使用 pnpm(推荐)
pnpm install
# 或使用 npm
npm install
```
#### 3. 启动开发服务器
```bash
# Web 端开发(默认)
pnpm start
# Android 真机/模拟器
pnpm android
# iOS 模拟器(macOS)
pnpm ios
```
#### 4. 访问应用
- **Web**: 浏览器自动打开 `http://localhost:8081`
- **移动端**: 使用 Expo Go App 扫描二维码
---
## 📖 使用说明
### 基本操作
#### 1️⃣ 添加任务
1. 在日历页面点击「**添加**」按钮
2. 输入任务标题和描述(可选)
3. 选择日期(默认为当天)
4. 点击保存
#### 2️⃣ 设置固定任务
1. 点击底部「**固定**」按钮进入固定任务页面
2. 点击「**添加固定任务**」
3. 输入任务信息
4. 固定任务会自动添加到每天的日历中
#### 3️⃣ 完成任务
- 点击任务左侧的**圆圈**标记为完成/未完成
- 已完成的任务会显示删除线
#### 4️⃣ 任务打卡
1. 点击任务右侧的**相机**图标
2. 拍摄照片或从相册选择
3. 添加打卡心得(可选)
4. 保存打卡记录
#### 5️ 查看统计
1. 点击「**汇总**」按钮
2. 查看本周/本月的任务完成率
3. 通过图表了解习惯养成进度
#### 6️⃣ 积分奖励
1. 完成当天所有任务后,系统自动提示领取积分
2. 点击「**领取**」获得每日积分奖励
3. 积分可用于兑换奖励
#### 7️ 参数设置
1. 进入「**我的**」→「**参数设置**」
2. 配置每日积分奖励值(默认 1 分)
3. 切换应用语言(中文/英文)
4. 管理奖励兑换列表(添加/编辑/删除)
#### 8️⃣ 奖励兑换
1. 进入「**我的**」→「**奖励兑换**」
2. 查看当前积分
3. 浏览可兑换的奖励项目
4. 点击「**兑换**」按钮
5. 确认兑换后自动扣除积分
---
## 🏗️ 技术架构
### 核心技术栈
| 技术 | 版本 | 说明 |
|------|------|------|
| React Native | 0.81.5 | 跨平台移动应用框架 |
| Expo | 54.0.33 | React Native 开发工具链 |
| TypeScript | 5.8.3 | 类型安全的 JavaScript |
| Expo Router | 6.0.23 | 基于文件的路由系统 |
| HeroUI Native | 1.2.7 | UI 组件库 |
| FontAwesome6 | - | 图标库 |
### 数据存储
- **AsyncStorage** - 键值对存储(任务、设置)
- **expo-file-system** - 文件系统存储(图片)
- **react-native-calendars** - 日历组件及本地化
### 项目结构
```
client/
├── app/ # 路由页面(Expo Router)
│ ├── _layout.tsx # 根布局(Tab Bar)
│ ├── index.tsx # 首页重定向
│ ├── task/ # 任务模块
│ │ ├── _layout.tsx # 任务布局
│ │ ├── index.tsx # 任务首页(日历)
│ │ └── edit.tsx # 编辑任务
│ ├── profile/ # 我的模块
│ │ ├── _layout.tsx # 我的布局
│ │ └── index.tsx # 我的首页
│ ├── reward/ # 奖励兑换模块
│ │ └── index.tsx # 奖励兑换页面
│ └── settings/ # 参数设置模块
│ └── index.tsx # 参数设置页面
├── screens/ # 屏幕组件
│ ├── calendar/ # 日历页面
│ ├── profile/ # 我的页面
│ ├── checkin/ # 打卡页面
│ ├── recurring/ # 固定任务页面
│ ├── stats/ # 统计页面
│ ├── reward/ # 奖励兑换页面
│ └── settings/ # 参数设置页面
├── components/ # 通用组件
├── contexts/ # 全局上下文
│ ├── AuthContext.tsx # 认证上下文
│ └── LocaleContext.tsx # 语言上下文
├── utils/ # 工具函数
│ ├── storage.ts # 数据存储管理
│ └── index.ts # 其他工具
├── hooks/ # 自定义 Hooks
├── heroui/ # HeroUI 组件库
└── assets/ # 静态资源
```
### 关键特性实现
#### 🌍 国际化
使用全局 `LocaleContext` 实现应用级中英文切换:
```typescript
// 创建语言上下文
const { locale, setLocaleState } = useLocale();
// 设置语言
await setLocaleState('en');
LocaleConfig.defaultLocale = 'en';
// 在组件中使用
{locale === 'zh' ? '任务' : 'Task'}
```
Tab Bar、所有页面和弹窗均支持实时语言切换。
#### 💾 数据持久化
跨平台统一存储接口:
```typescript
// Web 平台使用 AsyncStorage
// 移动平台使用 expo-file-system
const tasks = await getAllTasks();
await createTask({ title: '阅读30分钟' });
```
#### 📊 统计分析
自动计算固定任务实例,提供准确的完成率统计:
```typescript
// 周统计
const weeklyStats = await getWeeklyStats(weekOffset);
// 月统计
const monthlyStats = await getMonthlyStats(monthOffset);
```
#### 🎁 积分系统
完整的积分获取和兑换系统:
```typescript
// 完成任务获取积分
await addPoints(dailyPoints);
// 兑换奖励扣除积分
await deductPoints(reward.cost);
// 奖励管理
const rewards = await getAllRewards();
await createReward({ title: '随便吃', cost: 10 });
```
---
## 🤝 参与贡献
我们非常欢迎任何形式的贡献!
### 贡献流程
1. **Fork** 本仓库
2. 新建 **Feat_xxx** 分支(例如:Feat_add-dark-mode)
3. 提交代码,确保代码规范
4. 新建 **Pull Request**
5. 等待审核合并
### 可以贡献的方向
- 🐛 **Bug 修复** - 发现并修复问题
- ✨ **新功能** - 添加新的实用功能
- 🎨 **UI 优化** - 改进界面设计和交互体验
- 📝 **文档完善** - 补充或改进文档
- 🌍 **翻译** - 添加更多语言支持
- 💡 **建议** - 提出改进建议或新功能想法
### 开发规范
- 使用 TypeScript 编写代码
- 遵循现有的代码风格
- 添加必要的注释
- 确保代码能够正常运行
---
## 📄 开源协议
本项目采用 [MIT](LICENSE) 开源协议,你可以自由地使用、修改和分发代码。
---
## 🙏 致谢
- **React Native** - 优秀的跨平台框架
- **Expo** - 简化 React Native 开发
- **HeroUI** - 精美的 UI 组件库
- **所有贡献者** - 感谢每一位为项目做出贡献的人
---
## 📞 联系我们
- 📧 Email: your-email@example.com
- 💬 Gitee Issues: [提交问题](https://gitee.com/your-username/task/issues)
- 🌐 项目主页: [https://gitee.com/your-username/task](https://gitee.com/your-username/task)
---
**如果这个项目对你有帮助,请给一个 ⭐ Star 支持!**
Made with ❤️ by Community