moyin 260ae2c559 docs:简化架构文档,突出四层架构核心设计
- 精简ARCHITECTURE.md,移除冗长的目录结构说明
- 突出四层架构的职责和原则
- 保留核心的架构图和依赖关系说明
- 简化双模式架构和模块依赖的描述
- 移除过于详细的扩展指南,保留核心内容
2026-01-14 15:13:54 +08:00
2025-12-24 18:04:14 +08:00
2026-01-14 13:16:44 +08:00

🐋 Whale Town - 像素游戏后端服务

基于 NestJS 的现代化 2D 像素游戏后端采用四层架构Gateway-Business-Core-Data支持用户认证、实时通信、Zulip集成、管理员后台。

Node.js NestJS TypeScript React Tests

🎯 核心特性

  • 🔐 用户认证多方式登录、验证码登录、GitHub OAuth
  • 🌐 实时通信原生WebSocket、位置广播、地图房间管理
  • 💬 Zulip集成游戏内聊天与Zulip社群双向同步
  • 👑 管理员后台React界面、用户管理、日志监控
  • 🛡️ 安全防护频率限制、维护模式、JWT认证
  • 🗄️ 灵活存储MySQL/内存双模式、Redis/文件双模式
  • 📚 完整文档Swagger UI、WebSocket测试工具

🚀 快速开始

环境要求

  • Node.js >= 18.0.0
  • pnpm >= 8.0.0

安装运行

# 1. 克隆项目
git clone <repository-url>
cd whale-town-end

# 2. 安装依赖
pnpm install

# 3. 配置环境(测试模式,无需数据库)
cp .env.example .env

# 4. 启动服务
pnpm run dev

访问:http://localhost:3000

前端管理界面

# 启动管理后台
cd client
pnpm install
pnpm run dev

访问:http://localhost:5173
默认账号admin / Admin123456

在线体验

🏗️ 项目架构

四层架构设计

Gateway Layer (网关层)
    ↓ HTTP/WebSocket协议处理、数据验证
Business Layer (业务层)
    ↓ 业务逻辑实现、服务协调
Core Layer (核心层)
    ↓ 技术基础设施、数据访问
Data Layer (数据层)
    ↓ 数据持久化、缓存管理

目录结构

whale-town-end/
├── src/
│   ├── gateway/          # 网关层auth, location_broadcast
│   ├── business/         # 业务层auth, user_mgmt, admin, zulip, notice
│   ├── core/             # 核心层db, redis, login_core, admin_core, utils
│   ├── app.module.ts
│   └── main.ts
├── client/               # React管理界面
├── docs/                 # 项目文档
├── test/                 # 测试文件
└── config/               # 配置文件

详细架构:docs/ARCHITECTURE.md

🛠️ 技术栈

后端: NestJS 11 + TypeScript 5 + MySQL + Redis + WebSocket
前端: React 18 + Vite 7 + Ant Design 5
测试: Jest + Supertest99个测试用例
部署: Docker + PM2 + Nginx

📊 开发命令

# 开发
pnpm run dev              # 启动开发服务器
pnpm run build            # 构建项目
pnpm run start:prod       # 生产环境运行

# 测试
pnpm test                 # 运行单元测试
pnpm run test:cov         # 测试覆盖率
.\test-comprehensive.ps1  # API功能测试

🌍 环境配置

开发环境(默认)

USE_FILE_REDIS=true       # 使用文件存储无需Redis
NODE_ENV=development
# 无需配置数据库和邮件

生产环境

USE_FILE_REDIS=false
NODE_ENV=production

# 数据库
DB_HOST=your_mysql_host
DB_USERNAME=your_username
DB_PASSWORD=your_password

# Redis
REDIS_HOST=your_redis_host
REDIS_PASSWORD=your_password

# 邮件
EMAIL_HOST=smtp.163.com
EMAIL_USER=your_email@163.com
EMAIL_PASS=your_password

# Zulip
ZULIP_SERVER_URL=https://your-zulip.com/
ZULIP_BOT_API_KEY=your_api_key

详细配置:docs/deployment/DEPLOYMENT.md

📚 文档

🤖 AI代码检查指南

项目提供了完整的AI辅助代码检查流程帮助确保代码质量和规范性。

快速开始:

向AI发送以下prompt开始代码检查

请使用 docs/ai-reading 中readme的规范对 [模块路径] 进行完整的代码检查。

如何使用:

  • AI会按照7个步骤逐步执行检查命名规范、注释标准、代码质量、架构层级、测试覆盖、文档生成、代码提交
  • 每个步骤完成后会提供检查报告,等待确认后继续下一步
  • 如有问题会自动修复并重新验证
  • 这里建议每个步骤结束后,人工确认是否执行了修复,如果进行了修复,请告诉他:请重新执行一遍该步骤,看看是否有遗漏。

详细说明:docs/ai-reading/README.md | 开发者规范:docs/开发者代码检查规范.md

🤝 参与贡献

贡献流程

  1. Fork项目
  2. 创建分支:git checkout -b feature/your-feature
  3. 开发功能(遵循开发规范)
  4. 运行测试:pnpm test
  5. 提交代码:git commit -m "feat: 添加新功能"
  6. 创建Pull Request

核心团队

完整贡献者:docs/CONTRIBUTORS.md

📝 版本历史

  • v2.1.0 (2026-01) - WebSocket架构升级、地图房间管理
  • v2.0.0 (2025-12) - 四层架构重构、Zulip集成、管理员后台
  • v1.2.0 (2025-11) - 用户管理、安全防护、邮件服务
  • v1.0.0 (2025-10) - 项目初始化、用户认证、双模式存储

📞 联系方式

📄 许可证

MIT License


🐋 Whale Town - 让像素世界更精彩

Made with ❤️ by the Whale Town Team

Star | 🍴 Fork | 📖 Docs | 🐛 Issues

Description
No description provided
Readme MIT 2.8 MiB
Languages
TypeScript 99.9%