心灵伴侣 - 心理健康微信小程序
这是一个专注于心理健康的微信小程序,为用户提供情感支持、心理评估、情绪管理和冥想放松等功能。系统采用Express后端 + 微信小程序原生开发的架构,提供匿名树洞、专业心理测试、情绪日记记录、冥想音频等核心功能,帮助用户关注和改善心理健康状态。
项目封面

项目说明
心灵伴侣 - 心理健康微信小程序
项目简介
这是一个专注于心理健康的微信小程序,为用户提供情感支持、心理评估、情绪管理和冥想放松等功能。系统采用Express后端 + 微信小程序原生开发的架构,提供匿名树洞、专业心理测试、情绪日记记录、冥想音频等核心功能,帮助用户关注和改善心理健康状态。
技术栈
后端技术
| 技术 | 版本/说明 |
|---|---|
| 运行环境 | Node.js 20+ |
| Web框架 | Express 5.1.0 |
| 数据库 | MySQL 8.0+ |
| 数据库驱动 | mysql2 3.14.1 |
| HTTP请求 | axios 1.9.0 |
| 环境变量 | dotenv 16.5.0 |
| 交互式CLI | inquirer 8.2.5 |
| 热重载 | nodemon 3.1.0 |
小程序端技术
| 技术 | 版本/说明 |
|---|---|
| 开发框架 | 微信小程序原生框架 |
| 开发语言 | JavaScript (ES6+) |
| 样式语言 | WXSS |
| 模板语言 | WXML |
| 音频播放 | 微信小程序音频API |
项目特点
- 纯后端+小程序架构:无管理后台,专注小程序端用户体验
- 匿名树洞:安全的情感倾诉空间,支持匿名分享
- 专业心理测试:多种科学的心理评估工具
- 情绪日记:记录和追踪情绪变化,智能分析情绪趋势
- 冥想放松:引导式冥想音频和呼吸练习
- 简洁设计:清新温暖的UI设计,营造舒适的使用体验
- 隐私保护:用户数据加密存储,支持匿名功能
功能模块
小程序端功能
1. 首页模块 (pages/index)
- 功能导航入口
- 心理健康资讯
- 每日心情打卡
- 快速访问各功能模块
2. 树洞倾诉模块 (pages/treehole)
- 匿名发表心声
- 浏览他人分享内容
- 情感标签分类
- 安全的情感倾诉空间
- 互相支持和鼓励
3. 心理测试模块 (pages/psychtest)
- 多种专业心理评估
- 焦虑自评量表
- 抑郁自评量表
- 压力测试
- 个性化测试结果分析
- 专业建议推荐
- 历史测试记录
4. 情绪日记模块 (pages/emotion)
-
日记首页 (
index/index)- 情绪日记列表
- 情绪统计概览
- 快速记录入口
-
创建日记 (
create/create)- 情绪评分(1-10分)
- 日记内容记录
- 情绪标签选择(开心、兴奋、满足、焦虑、悲伤等)
- 日期时间记录
-
日记详情 (
detail/detail)- 查看历史日记
- 编辑和删除日记
-
情绪统计 (
stats/stats)- 情绪数据可视化
- 情绪变化趋势分析
- 情绪分布统计
- 情绪提醒功能
5. 冥想与放松模块 (pages/meditation)
-
冥想首页 (
index/index)- 冥想资源列表
- 分类浏览(呼吸冥想、正念冥想、睡眠冥想、减压冥想、主题冥想)
- 播放次数统计
-
音频播放器 (
player/player)- 引导式冥想音频播放
- 播放进度控制
- 背景播放支持
- 播放历史记录
-
呼吸练习 (
breathing/breathing)- 呼吸节奏引导
- 可视化呼吸动画
- 自定义练习时长
-
放松训练 (
relax/relax)- 渐进式肌肉放松
- 身体扫描练习
- 放松技巧指导
6. 用户登录模块 (pages/login)
-
登录页 (
index/index)- 微信授权登录
- 账号密码登录
- 自动登录
-
注册页 (
register/register)- 用户注册
- 信息完善
-
忘记密码 (
forget/forget)- 密码找回
- 密码重置
项目结构
xinli-health-min/
├── express/ # 后端服务(Express + MySQL)
│ ├── config/ # 配置文件
│ │ ├── db.js # 数据库配置
│ │ └── wx.js # 微信配置
│ ├── controllers/ # 控制器
│ │ ├── authController.js # 认证控制器
│ │ ├── emotionController.js # 情绪日记控制器
│ │ ├── meditationController.js # 冥想控制器
│ │ ├── psychtestController.js # 心理测试控制器
│ │ └── treeholeController.js # 树洞控制器
│ ├── public/ # 静态资源
│ │ ├── audio/ # 音频文件
│ │ └── images/ # 图片文件
│ ├── routes/ # 路由文件
│ │ └── miniapp.js # 小程序API路由
│ ├── .env # 环境变量配置
│ ├── index.js # 服务入口
│ ├── setup.js # 数据库初始化脚本
│ └── package.json
│
├── min/ # 微信小程序
│ ├── pages/ # 页面目录
│ │ ├── index/ # 首页
│ │ │ └── index.*
│ │ ├── login/ # 登录模块
│ │ │ ├── index/ # 登录页
│ │ │ ├── register/ # 注册页
│ │ │ └── forget/ # 忘记密码
│ │ ├── treehole/ # 树洞模块
│ │ │ └── index/
│ │ ├── psychtest/ # 心理测试模块
│ │ │ └── index.*
│ │ ├── emotion/ # 情绪日记模块
│ │ │ ├── index/ # 日记列表
│ │ │ ├── create/ # 创建日记
│ │ │ ├── detail/ # 日记详情
│ │ │ └── stats/ # 情绪统计
│ │ └── meditation/ # 冥想模块
│ │ ├── index/ # 冥想首页
│ │ ├── player/ # 音频播放器
│ │ ├── breathing/ # 呼吸练习
│ │ └── relax/ # 放松训练
│ ├── static/ # 静态资源
│ │ └── images/ # 图片资源
│ ├── utils/ # 工具函数
│ │ ├── request.js # 请求封装
│ │ └── util.js # 工具函数
│ ├── app.js # 小程序入口
│ ├── app.json # 小程序配置
│ ├── app.wxss # 全局样式
│ ├── emotion.wxs # WXS脚本
│ └── project.config.json # 项目配置
│
├── miniapp_db.sql # 数据库SQL文件
├── 运行手册.md # 运行说明
└── 演示视频.mp4 # 演示视频
数据模型
用户表 (users)
{
id: varchar(50), // 用户ID(主键)
username: varchar(50), // 用户名(唯一)
password: varchar(128), // 密码(加密)
salt: varchar(32), // 密码盐值
nickname: varchar(255), // 昵称
avatar_url: varchar(255), // 头像URL
gender: tinyint(4), // 性别 (0未知 1男 2女)
open_id: varchar(50), // 微信OpenID
created_at: timestamp, // 创建时间
last_login: timestamp // 最后登录时间
}
情绪日记表 (emotion_diaries)
{
id: int, // 日记ID(主键,自增)
user_id: varchar(50), // 用户ID
mood_score: int, // 情绪评分(1-10)
content: text, // 日记内容
tags: json, // 情绪标签(JSON数组)
created_at: timestamp // 创建时间
}
冥想资源表 (meditation_resources)
{
id: int, // 资源ID(主键,自增)
title: varchar(100), // 标题
description: text, // 描述
audio_url: varchar(255), // 音频URL
cover_url: varchar(255), // 封面图URL
duration: int, // 时长(分钟)
category: varchar(50), // 分类
play_count: int, // 播放次数
created_at: timestamp, // 创建时间
updated_at: timestamp // 更新时间
}
树洞表 (tree_holes)
{
id: int, // 树洞ID(主键,自增)
content: text, // 内容
user_id: varchar(50), // 用户ID
is_anonymous: tinyint(1), // 是否匿名 (0否 1是)
created_at: timestamp // 创建时间
}
冥想资源分类
| 分类名称 | 说明 | 时长 |
|---|---|---|
| 呼吸冥想 | 通过专注于呼吸,帮助平静心情,缓解压力和焦虑 | 5分钟 |
| 正念冥想 | 培养当下觉知能力,改善注意力和情绪管理 | 10分钟 |
| 睡眠冥想 | 帮助放松身心,为良好的睡眠做准备 | 15分钟 |
| 减压冥想 | 专为缓解压力和焦虑设计的冥想练习 | 8分钟 |
| 主题冥想 | 感恩冥想、自信冥想等主题练习 | 12分钟 |
情绪标签
| 标签类型 | 标签示例 |
|---|---|
| 积极情绪 | 开心、兴奋、满足、平静、感恩、自信 |
| 消极情绪 | 焦虑、悲伤、愤怒、失落、疲惫、孤独 |
| 中性情绪 | 平淡、困惑、思考、期待 |
运行环境要求
后端环境
- Node.js 20.0+
- MySQL 8.0+
- npm 或 yarn
小程序端
- 微信开发者工具(最新稳定版)
- 基础库版本 2.19.0+
- 需要有效的AppID
快速开始
1. 数据库配置
- 修改环境变量配置
编辑
express/.env文件:
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=miniapp_db
- 自动初始化数据库
cd express
npm install
npm run setup
该命令会自动:
- 创建数据库
- 导入表结构
- 插入初始数据
2. 配置微信参数
编辑 express/config/wx.js,配置微信小程序参数:
module.exports = {
appId: 'your_app_id',
appSecret: 'your_app_secret'
}
3. 启动后端服务
cd express
# 开发模式启动
npm run dev
后端服务默认运行在 http://localhost:3000
4. 运行小程序
- 打开微信开发者工具
- 选择"导入项目"
- 选择
min目录 - 填入AppID(可使用测试号)
- 点击"导入"
5. 配置小程序API地址
编辑 min/utils/request.js,修改API基础地址:
const baseUrl = 'http://localhost:3000' // 修改为你的后端地址
注意:开发时需在微信开发者工具中关闭"不校验合法域名"选项
默认账号
测试账号
- 用户名:test
- 密码:123456
- 用户ID:test_user_id
小程序端
- 支持微信授权登录
- 或使用测试账号登录
API接口说明
用户认证
POST /api/login- 用户登录POST /api/register- 用户注册POST /api/wx-login- 微信授权登录
树洞
GET /api/treeholes- 获取树洞列表POST /api/treeholes- 发布树洞DELETE /api/treeholes/:id- 删除树洞
情绪日记
GET /api/emotion-diaries- 获取日记列表POST /api/emotion-diaries- 创建日记GET /api/emotion-diaries/:id- 获取日记详情PUT /api/emotion-diaries/:id- 更新日记DELETE /api/emotion-diaries/:id- 删除日记GET /api/emotion-diaries/stats- 获取情绪统计
冥想资源
GET /api/meditation-resources- 获取冥想资源列表GET /api/meditation-resources/:id- 获取资源详情POST /api/meditation-resources/:id/play- 记录播放次数
心理测试
GET /api/psychtests- 获取测试列表POST /api/psychtests/submit- 提交测试结果GET /api/psychtests/history- 获取测试历史
界面预览
项目包含演示视频文件:
演示视频.mp4- 小程序完整功能演示
扩展建议
如需进一步完善项目,可考虑以下扩展:
- 专业咨询:接入在线心理咨询服务
- 社区功能:用户互助社区和话题讨论
- AI对话:集成AI心理陪伴机器人
- 数据分析:更深入的情绪数据分析和可视化
- 提醒功能:情绪记录提醒、冥想提醒
- 分享功能:分享到朋友圈或好友
- 成就系统:打卡签到和成就徽章
- 课程体系:心理健康知识课程
- 危机干预:紧急心理危机识别和干预
- 多语言支持:国际化多语言版本
注意事项
- 本项目为学习演示项目,涉及心理健康内容仅供参考
- 生产环境部署需要配置HTTPS
- 小程序上线需要完成微信认证
- 涉及心理健康服务需符合相关法规要求
- 建议定期备份数据库数据
- 音频文件需要自行准备或购买版权
- 心理测试量表需要专业授权
常见问题
Q: 数据库连接失败?
A: 检查MySQL服务是否启动,.env文件中的数据库配置是否正确
Q: 音频无法播放?
A: 检查音频文件路径是否正确,音频格式是否支持(建议使用mp3格式)
Q: 小程序无法请求后端?
A: 检查request.js中的baseUrl配置,开发时需在微信开发者工具中关闭"不校验合法域名"
Q: 微信登录失败?
A: 检查wx.js中的appId和appSecret配置是否正确
Q: 情绪标签显示异常?
A: 检查数据库中tags字段是否为JSON格式
隐私与安全
- 用户密码采用加盐哈希加密存储
- 支持匿名发布功能,保护用户隐私
- 敏感数据传输建议使用HTTPS
- 定期清理过期数据
- 遵守相关隐私保护法规
许可证
本项目仅供学习交流使用,请勿用于商业用途。涉及心理健康服务时,请咨询专业人士并遵守相关法规。
技术分类
包含内容
适用人群
学习参考与二次开发
关于 AI源码
AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。
相关推荐
查看全部 →
社区医院儿童健康信息管理系统(java)
社区医院儿童健康信息管理系统是一个专为社区医院设计的儿童健康档案管理平台,采用前后端分离架构,提供儿童健康信息的录入、查询、统计和管理功能。

社区医院儿童健康信息管理系统
社区医院儿童健康信息管理系统是一个基于 Spring Boot 3 + Vue 3 的全栈 Web 应用,旨在为社区医院提供儿童健康信息的数字化管理解决方案。系统支持儿童档案管理、健康测评、疫苗预约、在线咨询等核心功能。

社区医疗服务可视化系统
这是一个基于SpringBoot + Vue2开发的社区医疗服务可视化管理系统,主要面向社区医疗机构提供信息化管理解决方案。系统实现了患者管理、医生管理、预约挂号、病历管理、药品管理、数据统计可视化等核心功能,界面简洁美观,功能完善,适合作为计算机设计或学习项目。

婴幼儿个性化辅食推荐系统
基于 Python Flask + SQLite 的 Web 应用,面向家长管理婴幼儿辅食与营养,并提供三类推荐算法(内容推荐、协同过滤、知识推荐)。

AI在线问诊平台
这是一个基于AI技术的在线问诊平台系统,包含管理后台、医生端PC网站和患者端PC网站三个子系统。系统实现了医生入驻申请、预约挂号、在线问诊、病历管理、实时通讯、AI辅助诊断等核心功能,采用前后端分离架构,适合作为医疗健康类全栈开发学习项目或计算机设计参考。

心理健康教育小程序
这是一个心理健康教育与自助服务的微信小程序,采用纯前端实现,使用本地Mock数据模拟后端接口。项目完整实现了情绪管理、压力应对、助眠放松、正念练习、心理测评、自助工具等核心功能,适合作为微信小程序开发学习项目或计算机设计参考。