# himate_server_nest **Repository Path**: zyz1720/himate_server_nest ## Basic Information - **Project Name**: himate_server_nest - **Description**: himate聊天音乐应用的Nest.js后端服务 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 3 - **Created**: 2023-12-26 - **Last Updated**: 2026-02-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: Nestjs, TypeScript ## README English | 简体中文 # Himate Nest Server Himate Nest Server 是一个基于 NestJS 框架开发的现代化后端服务,提供了完整的用户管理、实时通信、文件管理、音乐服务等功能,采用模块化架构设计,支持多环境配置和国际化。 ## 📋 项目概述 Himate Nest Server 是 Himate 应用的后端服务,提供以下核心功能: - 完整的用户认证和授权系统 - 实时通信(WebSocket)和服务器推送(SSE) - 文件上传和管理 - 音乐服务和元数据管理 - 好友和群组管理 - 消息系统 - 多环境配置支持 - 国际化支持 - API 文档自动生成 ## 🛠 技术栈 ### 核心框架 - **NestJS 10.x** - 渐进式 Node.js 框架 - **TypeScript** - 类型安全的 JavaScript 超集 ### HTTP 服务器 - **Fastify** - 高性能的 Node.js Web 服务器 ### 数据库 - **MySQL** - 关系型数据库 - **TypeORM** - 面向对象的数据库映射工具 ### 缓存和队列 - **Redis** - 高性能缓存数据库 - **Bull** - 基于 Redis 的消息队列 ### 认证和授权 - **JWT** - JSON Web Token 认证 - **Passport** - 身份验证中间件 ### 实时通信 - **Socket.IO** - WebSocket 实时通信 - **SSE** - 服务器发送事件 ### API 文档 - **Swagger** - API 文档自动生成 ### 其他工具 - **class-validator** - 数据验证 - **i18n** - 国际化支持 - **Bcrypt** - 密码加密 - **sharp** - 图像处理 ## 📁 项目结构 ``` himate_nest_server/ ├── config/ # 配置文件 │ ├── env.ts # 环境配置 │ └── file_dir.ts # 文件目录配置 ├── sql/ # 数据库脚本 ├── src/ # 源代码 │ ├── common/ # 通用工具和配置 │ │ ├── bull/ # 任务队列消费者 │ │ ├── constants/ # 常量定义 │ │ ├── context/ # 上下文 │ │ ├── dto/ # 数据传输对象 │ │ ├── factories/ # 工厂类 │ │ ├── filters/ # 异常过滤器 │ │ ├── interceptor/ # 拦截器 │ │ ├── middleware/ # 中间件 │ │ ├── response/ # 响应处理 │ │ ├── subscriber/ # 数据库订阅器 │ │ └── utils/ # 工具函数 │ ├── core/ # 核心功能模块 │ │ ├── auth/ # 认证和授权 │ │ ├── captcha/ # 验证码 │ │ ├── email/ # 邮件服务 │ │ ├── music-api/ # 音乐API │ │ ├── redis/ # Redis服务 │ │ ├── socket/ # WebSocket服务 │ │ ├── sse/ # SSE服务 │ │ └── upload/ # 文件上传 │ ├── modules/ # 业务模块 │ │ ├── app-package/ # 应用包管理 │ │ ├── favorites/ # 收藏管理 │ │ ├── file/ # 文件管理 │ │ ├── group/ # 群组管理 │ │ ├── group-member/ # 群组成员管理 │ │ ├── mate/ # 好友管理 │ │ ├── message/ # 消息管理 │ │ ├── message-read-records/ # 消息阅读记录 │ │ ├── music/ # 音乐管理 │ │ ├── music-extra/ # 音乐附加信息 │ │ ├── session/ # 会话管理 │ │ └── user/ # 用户管理 │ ├── app.controller.ts # 应用控制器 │ ├── app.module.ts # 应用模块 │ └── app.service.ts # 应用服务 ├── test/ # 测试文件 ├── .env # 环境变量 ├── main.ts # 应用入口 ├── nest-cli.json # Nest CLI 配置 ├── package.json # 项目依赖 └── tsconfig.json # TypeScript 配置 ``` ## 🚀 快速开始 ### 环境要求 - Node.js >= 18.x - MySQL >= 5.7 - Redis >= 6.x ### 安装依赖 ```bash yarn ``` ### 环境配置 1. 复制并修改环境变量文件 ```bash cp .env.example .env ``` 2. 修改 `.env` 文件中的配置项 ```env # 服务器配置 PORT=3000 NODE_ENV=local # 数据库配置 DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASSWORD=password DB_DATABASE=himate # Redis配置 REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD= # JWT配置 JWT_SECRET=your_jwt_secret_key JWT_EXPIRES_IN=24h JWT_REFRESH_SECRET=your_jwt_refresh_secret_key REFRESH_TOKEN_EXPIRES_IN=7d # 邮箱配置 EMAIL_HOST=smtp.example.com EMAIL_PORT=587 EMAIL_USER=user@example.com EMAIL_PASSWORD=email_password EMAIL_FROM=Himate # 限流配置 THROTTLE_TTL=60000 THROTTLE_LIMIT=100 ``` ### 启动服务 #### 开发环境 ```bash yarn dev ``` #### 生产环境 ```bash yarn build yarn start:prod ``` ### API 文档 启动服务后,访问以下地址查看 API 文档: ``` http://localhost:3000/swagger ``` ## 📦 核心功能模块 ### 认证模块 (AuthModule) 提供完整的用户认证和授权功能: - JWT 认证 - 角色权限管理 - 刷新令牌机制 - 公开路由装饰器 ### 邮件模块 (EmailModule) 提供邮件发送服务: - 验证码邮件 - 通知邮件 - 模板邮件 ### 文件上传模块 (UploadModule) 提供文件上传和管理功能: - 单文件上传 - 多文件上传 - 文件类型验证 - 文件大小限制 - 缩略图生成 ### 实时通信模块 (SocketModule) 提供 WebSocket 实时通信功能: - 私聊消息 - 群聊消息 - 消息推送 - 连接管理 ### 音乐API模块 (MusicApiModule) 提供音乐相关的 API 服务: - 音乐搜索 - 音乐元数据获取 - 音乐播放链接 ## 🏗 业务模块 ### 用户模块 (UserModule) 用户信息管理: - 用户注册和登录 - 用户资料管理 - 用户头像和背景图 - 用户状态管理 ### 会话模块 (SessionModule) 会话管理: - 会话创建和销毁 - 会话状态管理 - 会话消息记录 ### 好友模块 (MateModule) 好友关系管理: - 好友请求 - 好友列表 - 好友状态 - 好友分组 ### 群组模块 (GroupModule) 群组管理: - 群组创建和管理 - 群组成员管理 - 群组权限 - 群组公告 ### 消息模块 (MessageModule) 消息系统: - 文本消息 - 图片消息 - 音频消息 - 消息状态 ### 音乐模块 (MusicModule) 音乐管理: - 音乐上传 - 音乐元数据 - 音乐分类 - 音乐收藏 ## 🔧 配置管理 ### 环境配置 项目支持多环境配置,通过 `NODE_ENV` 环境变量切换: - `local` - 本地开发环境 - `prod` - 生产环境 - `test` - 测试环境 ### 文件目录配置 文件上传和静态资源目录配置在 `config/file_dir.ts` 中: ```typescript export const FILE_DIR = { UPLOAD: path.resolve('./uploads'), THUMBNAIL: path.resolve('./thumbnail'), RECYCLE_BIN: path.resolve('./recycle_bin'), }; ``` ## 🌐 国际化支持 项目使用 `nestjs-i18n` 实现国际化: - 支持中文和英文 - 通过请求头 `x-custom-lang` 切换语言 - 支持自动根据浏览器语言切换 ## 🔒 安全措施 - JWT 令牌认证 - 密码加密存储 - 接口限流 - 输入数据验证 - SQL 注入防护 - CORS 配置 ## 📈 性能优化 - 数据库连接池 - Redis 缓存 - 异步任务队列 - 响应数据压缩 - 静态资源缓存 ### 开源协议 本项目基于 MIT 开源协议开源,您可以在遵守协议的前提下自由使用、修改和分发本项目的代码。 ### 关联项目 - **前端**: [Himate React Native App](https://gitee.com/zyz1720/himate_app_rn) - **后台管理**: [Himate React Backend](https://gitee.com/zyz1720/himate_backend_react)