Skip to content

Repository files navigation

联讯 · sk-messaging

面向私聊与群聊的全栈通信平台 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.exampleNEXT_PUBLIC_*EXPO_PUBLIC_* 会进入客户端包,只能放公开配置,不能放密钥。

当前边界与路线

已具备 MVP 主链路,但上线前仍需完成刷新令牌与会话撤销、邮件验证、限流与反滥用、内容审核、审计日志、可观测性、备份恢复、推送通知、端到端加密和独立安全评审。端到端加密应接入经过审计的 Matrix Rust SDK/Olm-Megolm 等实现,不应自造密码协议。

架构与后续计划见 docs/ARCHITECTURE.md。欢迎提交 Issue 和 Pull Request。

Star History

Star History Chart

License

MIT

About

Full-stack private and group messaging MVP with NestJS, Next.js, Expo, WebSocket, Prisma, PostgreSQL, Redis, and S3-compatible storage.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages