ChronoMail - 时光胶囊邮箱
项目简介
ChronoMail是一个基于Vue3的时光胶囊邮箱应用,用户可以撰写邮件并设定未来的发送时间,将此刻的心情、想法和祝福寄给未来的自己或他人。
技术栈
- Vue 3
- Vue Router
- Vant UI组件库
- Axios
- Electron
功能特点
- 📧 撰写时光胶囊邮件
- ⏰ 设定未来发送时间
- 🌌 深空主题UI设计
- 📱 移动端适配
- 🔐 用户登录注册
- 📬 收件箱和发件箱管理
- 🕐 时间线展示
- 🤖 AI写作辅助
- 📊 数据统计
- 🎨 自定义胶囊样式
API接口对接
本项目已完整对接后端API,支持以下功能:
用户认证
- 用户注册与登录
- Token刷新机制
- 自动登录状态保持
邮件管理
- 创建未来邮件
- 获取邮件列表(收件箱/发件箱/草稿箱)
- 邮件详情查看
- 邮件编辑与删除
- 邮件撤销发送
时光胶囊
- 胶囊视图展示
- 胶囊样式自定义
- 3D空间效果
AI助手
- 写作辅助
- 情感分析
- 未来预测
个人空间
- 时间线展示
- 数据统计
- 用户信息管理
文件上传
- 附件上传
- 头像上传
推送通知
- 设备注册
- 通知设置
详细的API文档请参考:README-API.md
安装和运行
安装依赖
npm install
启动开发服务器
npm run serve
构建生产版本
npm run build
运行Electron应用
npm run electron:serve
项目结构
src/
├── api/            # API接口模块
│   ├── index.js    # API方法集合
│   └── request.js  # Axios实例和拦截器配置
├── assets/         # 静态资源
│   └── styles/     # 样式文件
├── components/     # 公共组件
├── router/         # 路由配置
├── store/          # 状态管理
├── utils/          # 工具函数
├── views/          # 页面组件
│   ├── Login.vue   # 登录页
│   ├── Register.vue # 注册页
│   ├── Home.vue    # 首页
│   ├── Compose.vue # 撰写邮件
│   ├── Inbox.vue   # 收件箱
│   ├── Sent.vue    # 发件箱
│   ├── Profile.vue # 个人中心
│   ├── Timeline.vue # 时间线
│   ├── CapsuleDetail.vue # 胶囊详情
│   └── ApiDemo.vue # API示例
├── App.vue         # 根组件
└── main.js         # 入口文件
开发说明
- 本项目使用Vue 3 Composition API
- 使用Vant UI组件库进行界面开发
- 使用Vue Router进行路由管理
- 使用Axios进行HTTP请求
- 使用Vue 3响应式API进行状态管理
- 项目采用深空主题设计,营造时光穿梭的视觉体验
环境配置
项目使用环境变量来配置不同环境的API地址:
- 开发环境:.env.development
- 生产环境:.env.production
# 开发环境配置
VUE_APP_API_BASE_URL=http://localhost:3000/api/v1
VUE_APP_TITLE=ChronoMail - 未来邮箱
# 生产环境配置
VUE_APP_API_BASE_URL=https://api.chronomail.com/api/v1
VUE_APP_TITLE=ChronoMail - 未来邮箱
注意事项
- 所有API请求都会自动添加Authorization头,格式为Bearer {token}
- 当收到401或403响应时,会自动清除用户信息并跳转到登录页
- 文件上传需要使用FormData格式
- 日期格式统一使用ISO 8601标准
- 所有状态变更都应通过相应的Actions方法进行,以保证状态一致性
API示例页面
项目包含一个API示例页面(/api-demo),展示了如何在Vue组件中使用各种API接口,包括:
- 用户认证
- 邮件操作
- 胶囊管理
- AI助手调用
您可以在登录后访问该页面,查看API调用的实际效果。
Description
				
					Languages
				
				
								
								
									Vue
								
								54.2%
							
						
							
								
								
									JavaScript
								
								26%
							
						
							
								
								
									CSS
								
								19.1%
							
						
							
								
								
									HTML
								
								0.7%