我们是声网旗下的白板团队,几年来一直致力于为在线教育公司提供稳定且优质的白板服务,包括灵活可定制化的 API 、基于信令的白板云录制与回放、自研动态 PPT 以及简单易用的白板综合体验。
我们从 2020 年 8 月开始去做这个项目,集成了我们自己的 agora 音视频 sdk 和 在线白板 sdk 。目前我们起名为: Flat
我们基于 MIT 协议,前后端代码完全开源,无任何限制。
目前的功能包括但不限于:
- 微信登陆
- 预订房间、预约周期性房间
- 在线云盘
- 小班课、大班课、一对一
- 视频、语音、聊天、在线白板(支持 pptx 、doc 、pdf 等静态资源渲染,包括 pptx 动画)
- 回放
目前仅支持: Windows / macOS 。 Android / iOS 正在开发中(预计 6 月底就会上线), Pad 也会在考虑之中
除了全平台之外,一些功能也会在 Q2 一一实现:互动答题、全套快捷键、白板多窗口、支持常用插件(如 VS Code)、屏幕分享
我们的技术选型:
前端
- TypeScript
- React
- Mobx
- Storybook
- Electron
- yarn workspace
后端
- TypeScript
- Fastify
- TypeORM
- MySQL
- Redis
而 Flat 作为我们团队在开源领域第一次正式尝试,我们有十分严格的 code review ,我们做出了以下的努力:
- 每个 PR,必须由其他人进行仔细的 code review
- 为了保证代码风格,我们编写了相关的 eslint-plugin 进行约束
- 使用 husky / commitlint 对 代码 及 commit message 做校验
在开发过程中,我们也借鉴学习了很多开源社区的技术,并且我们给 helm-kubectl、axios、electron-devtools-installer、zh.mobx.js.org、Kubernetes Lens 等第三方库都贡献过代码。
我们在开发过程中也遇到了很多难点并最终攻克,包括 electron 多窗口 / electron preload 加载 / 打包签名 / 公证 / 课程录制 /回放 / 麦克风 /摄像头授权 / webpack 优化 / Kubernetes 部署 等。
如果大家在开发其他应用时,遇到了相关的问题,那么 Flat 将会是一个很好的借鉴。
效果图:



gif 可移步查看: https://i.imgur.com/fScd7eF.gif