面向私聊与群聊的全栈通信平台 MVP。联讯提供账号认证、会话与消息、WebSocket 实时通信、消息回执、对象存储直传,以及 Web、桌面浏览器和移动端基础界面。
当前定位是可运行、可演进的产品基座,不是已经完成生产加固的即时通信服务。当前版本尚未实现端到端加密。
- 私聊、群聊、会话列表与消息历史
- WebSocket 实时消息通道与基础消息回执
- JWT + Argon2id 认证、Prisma 数据访问与 Swagger API 文档
- S3 兼容对象存储直传,默认使用本地 MinIO
- NestJS API、Next.js Web/桌面界面、Expo 移动端
apps/mobile Expo + React Native ─┐
apps/web Next.js + React ├─ HTTP / WebSocket ─ apps/api
└──────────────────── PostgreSQL
Redis / MinIO
| 目录 | 作用 |
|---|---|
apps/api |
NestJS API、认证、会话、WebSocket 网关、Prisma schema 与迁移 |
apps/web |
Next.js App Router Web/桌面浏览器界面 |
apps/mobile |
Expo Router 移动端 |
docs |
架构说明、边界与演进路线 |
compose.yaml |
本地 PostgreSQL、Redis、MinIO |
要求 Node.js 24 LTS、pnpm 10、Docker。
nvm use
cp .env.example .env
cp apps/web/.env.example apps/web/.env.local
cp apps/mobile/.env.example apps/mobile/.env
pnpm install
pnpm infra:up
pnpm db:generate
pnpm db:migrate
pnpm --filter @sk-messaging/api prisma:seed分别启动:
pnpm dev:api # API: http://localhost:4101,Swagger: /docs
pnpm dev:web # Web: http://localhost:3101
pnpm dev:mobile # Expo 开发服务器本地基础设施端口为 PostgreSQL 5433、Redis 6380、MinIO API 9001。移动真机调试时,请将 EXPO_PUBLIC_API_URL 改为开发机局域网地址。
pnpm build
pnpm lint
pnpm test
pnpm --filter @sk-messaging/api test:e2e
pnpm infra:down完整配置见 .env.example。NEXT_PUBLIC_* 与 EXPO_PUBLIC_* 会进入客户端包,只能放公开配置,不能放密钥。
已具备 MVP 主链路,但上线前仍需完成刷新令牌与会话撤销、邮件验证、限流与反滥用、内容审核、审计日志、可观测性、备份恢复、推送通知、端到端加密和独立安全评审。端到端加密应接入经过审计的 Matrix Rust SDK/Olm-Megolm 等实现,不应自造密码协议。
架构与后续计划见 docs/ARCHITECTURE.md。欢迎提交 Issue 和 Pull Request。