Releases: kite88/mini-im
Release list
v1.0.0
首个正式版本:Go + Gin + GORM(PostgreSQL) + Redis 实现的即时通讯 / 客服系统。前端是 Vue2 + Axios 静态页,由后端直接托管,无构建流程、无外部图片资源。
功能
账号
- 注册 / 登录 / 退出,JWT 鉴权,token 剩余有效期不足 12 小时自动续签
- 单点登录:账号在别处登录后旧 token 立即失效,前端清理本地态并跳回登录页
- 头像由
/avatar按用户名哈希动态生成 SVG,服务不依赖任何图片资源
联系人
- 按账号 / 昵称模糊搜索,结果标注双方关系(可添加 / 申请中 / 待你处理 / 已是好友 / 已拉黑)
- 好友申请:同意 / 拒绝、重复申请 upsert、双方互相申请直接成为好友,并实时推送事件
- 删除好友:单向软删除,只清我这一侧的列表与聊天记录,对方记录不受影响
- 黑名单:单向拦截「被拉黑方 → 拉黑方」方向的消息,可随时移出并自动恢复
消息
- WebSocket 实时收发,同账号可多端在线;离线消息在对方上线后按原顺序补发
- 支持文本、emoji 与图片表情,单条报文上限 8KB
- 发送前双向校验好友关系与黑名单,未送达时撤回本地乐观渲染的消息并回执事件
(not_friend/unfriended/blacklisted) - 未读数基于已读游标计算,打开会话即标记已读;消息经 Redis 队列异步落库,失败转入错误队列
前端
- 一套 DOM 响应式适配 PC 与手机(断点 991px),移动端全屏聊天 +
visualViewport键盘避让 - 浅色 / 跟随系统 / 深色主题,中文 / English,字号 10~30px 可调,字重切换
- 无 jQuery、无 Bootstrap JS,Bootstrap CSS 按实际用到的 class 裁剪至约 12KB
技术栈
| 层 | 选型 |
|---|---|
| 服务端 | Go 1.23、Gin、GORM(PostgreSQL)、go-redis、golang-jwt |
| 主键 | 用户 / 好友申请用雪花 ID,消息用 UUID v7(RFC 9562) |
| 分层 | api / ws / task → service → dao → db,依赖单向向下 |
| 前端 | Vue 2 + Axios,静态资源由后端托管,无构建步骤 |
快速开始
docker compose up -d # 启动 PostgreSQL + Redis
go run . # 默认 http://127.0.0.1:2580新库是空的,直接在登录页注册账号即可;也可以把 config.yaml 里的 seed.enabled 改成 true 重启,
得到一组两两互加好友的演示账号(密码 123123),开箱即可互发消息。
产物
| 平台 | 归档 | 包内可执行文件 |
|---|---|---|
| Windows | mini-im-windows-<arch>.zip |
mini-im.exe |
| Linux / macOS | mini-im-<os>-<arch>.tar.gz |
mini-im(权限 0755,解压即可运行) |
架构覆盖 amd64 / arm64,共 6 个平台。归档是顶层目录 mini-im-<os>-<arch>/,内含可执行文件、
config.yaml、LICENSE、web/(前端静态页必须与可执行文件放在一起)以及启动脚本
(Linux / macOS 为 start.sh,Windows 为 start.bat):
tar -xzf mini-im-linux-amd64.tar.gz && cd mini-im-linux-amd64
./start.sh # 等价于 ./mini-im,附加参数会原样透传启动脚本会先切到自身所在目录,因此可以在任意位置调用。Windows 下也可以直接双击 start.bat:
它会把控制台切到 UTF-8 代码页以正确显示应用的中文日志(脚本自身提示保持英文,避免 cmd 在多字节
字符上解析出错),并在进程退出后保留窗口、打印退出码与常见失败原因(PostgreSQL / Redis 未启动、
数据库未创建、端口被占用等),不会一闪而过。数据库 / Redis / 端口等配置可用 IM_* 环境变量覆盖。
checksums.txt 是全部 6 个归档的 SHA256(LF 换行,Linux 下可直接 sha256sum -c checksums.txt)。
归档均为 CGO_ENABLED=0 静态编译,并内嵌 IANA 时区数据库,因此在没有安装 Go、系统也没有 tzdata
的机器上(典型是 Windows)同样能解析配置里的 timezone: Asia/Shanghai,不需要额外安装。
质量
tools/e2e端到端回归覆盖注册登录、搜索加好友、在线 / 离线消息、聊天记录、已读、登录态挤线等全链路,
以及拒绝重申请、互相申请、并发消息、超长消息、伪造 sender 等边界,94/94 项断言通过- 文档:中文 README ·
English README
—— 含 PC 端与手机端的实拍操作截图、完整接口说明、数据表与设计要点 - 版本历史见 CHANGELOG.md
许可
MIT © 2026 kite88