项目背景
除了传统的聊天软件,还有为固定需求打造的定位其他的聊天软件
比如钉钉立足于工作流,slack专注于程序员之间的项目沟通。而TRPG Engine
就是一款为了小众的跑团玩家所打造的通用即时通讯解决方案
项目亮点
- 基于XML描述的人物卡系统(可以理解为动态表单) - Playground
- Web端与RN端共享redux状态的实践与工具链
- 多端并存与代码共享(Web端, RN端, Portal端 (Portal端是RN端通过webview进行一部分中间操作的方式,类似于各种手机App的H5端) )
- 其他的一些自研实用工具,如
RN端WEB端通用Portal组件
,快速生成通用表单
,基于BBCode的消息解释器
,通用缓存管理机制
- 工程化代码,可拓展性强
- 移动端兼容与PWA
依赖
- MySql 5.7+
- Redis
功能列表
通用功能
- 用户登入登出
- 用户注册
- 私聊/群聊
- 头像上传与裁剪
- 用户设置
- 好友管理
- 好友发送邀请/同意邀请
- 基于BBCode的消息解析器
- url内容
- 图片内容
- @提及
- 多种消息类型
- 通用消息
- 提示消息
- 卡片消息
- 消息回复与消息撤回
- 自动抓取消息内的网址的预览信息
- 基于slate的富文本编辑器
- 消息通知
- 移动端基于
upush
。包括本地进程未被杀死的本地推送与本地被杀死后的upush推送
- 移动端基于
- 多种文件管理策略
- 头像上传七牛云或本地
- 聊天图片使用外置图片服务转发到第三方图床
- 聊天文件存储在本地,定时删除
- 单向聊天消息机器人
- 群组多面板
- 多面板类型: 目前有笔记面板与文字频道
- 面板的编辑/删除/拖拽排序
- app热更新与apk更新
- 热更新基于自部署的
codepush
服务器, apk更新会自动获取最新的apk版本
- 热更新基于自部署的
- app下载管理
- 多国语言(中英, 尚未完全覆盖)
跑团相关
- 基于Slate的笔记系统
- 人物卡系统
- 基于XML的布局描述与内置JS沙盒解释器来解释js脚本
- 人物卡的切换与切换时发送消息变换头像与名字
- 人物卡分享与Fork
- 投骰表达式与消息拦截器
- 输入时向所有人发送输入状态
- 在线招募系统
线上监控
- 计划任务记录
- 接口耗时统计
- 请求限流
- 系统日志: 日志会被转发到
loggly
或本地记录。其他的操作相关会存储到数据库- 用户登录记录
- 机器人记录
- 投骰记录
- oss文件记录
- 登录/注册统计汇总
- 前端后端错误汇报
项目规模
- 开发时间: 3年
- 所用数据表: 61张
- 功能完整的多端:
- 两版网页端
- 基于React Native的安卓端
预览
在线地址: https://trpg.moonrailgun.com/
开源地址: https://github.com/TRPGEngine/Client