AppFlowy — Rust 写的开源 Notion
待复核AppFlowy 是一个开源的协作工作台:你可以在里面写文档、管任务、做表格、放知识库,还能选择本地或自托管来控制数据。
日常类比:Notion 像租来的精装办公室,AppFlowy 更像可以买材料自己改的办公室,默认能用,也允许你拆墙、换灯、接自己的服务器。
从命令上看,它不是一个只在浏览器里跑的小网页,而是一个用 Flutter 做界面、Rust 做底层能力的跨平台客户端:
git clone https://github.com/AppFlowy-IO/AppFlowy.gitcd AppFlowy/frontendcargo make --profile production-linux-x86_64 appflowy这段命令的重点不是让你马上编译,而是说明一件事:AppFlowy 的价值在于“产品能直接用,源码也能继续改”。
如果你只是想用它,它像一个隐私优先的笔记和项目管理软件;如果你想学习,它又是一个很大的 Flutter + Rust 工程样本。
不理解 AppFlowy,下面这些事会很难判断:
- 你会把“开源 Notion”误解成“完全照抄 Notion”,看不懂它为什么强调数据控制、离线体验和自托管。
- 你会在选工具时只比较功能清单,忽略数据放在哪里、以后能不能迁走、团队能不能自己部署。
- 你会把 Flutter 客户端、Rust 后端、AppFlowy Cloud、AppFlowy Editor 混成一团,不知道问题该查哪个仓库或文档。
- 你会以为它适合所有团队,结果碰到协作人数、AI、云同步、许可证或部署维护成本时才发现边界。
-
客户端优先:AppFlowy 先给你一个能装在桌面和移动端的工作台。类比:先有一张能写字的桌子,再考虑要不要把桌子连进办公室网络。
-
数据控制优先:它把本地、云端和自托管都放进路线图里,让用户按隐私和协作需求取舍。类比:同一本账本,你可以锁在家里,也可以放到自己租的保险柜。
-
组件化扩展:AppFlowy Editor、数据库视图、模板、插件和主题都是“积木”。类比:不是给你一整块焊死的柜子,而是给你抽屉、隔板和滑轨。
案例 1:用 Docker 快速跑起桌面客户端
Section titled “案例 1:用 Docker 快速跑起桌面客户端”官方 Docker 文档给了一个 Linux 桌面场景:把 X11、显卡、系统总线和持久化数据卷挂进容器,然后运行 AppFlowy 客户端。
docker run --rm \ -v $HOME/.Xauthority:/root/.Xauthority:rw \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v /dev/dri:/dev/dri \ -v /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket \ -v appflowy-data:/home/appflowy \ -e DISPLAY=${DISPLAY} \ appflowyio/appflowy_client:main逐部分解释:
appflowyio/appflowy_client:main是要运行的 AppFlowy 客户端镜像。appflowy-data:/home/appflowy把用户数据放进 Docker volume,容器删掉后数据还在。DISPLAY、.Xauthority、/tmp/.X11-unix是让容器里的 GUI 能显示到宿主机桌面。/dev/dri是图形加速相关挂载,少了它可能能跑但体验差。- 这个案例适合“先试试看”,不适合完全不懂 Docker 和 Linux 图形栈的新手长期使用。
案例 2:从源码构建,确认自己能改客户端
Section titled “案例 2:从源码构建,确认自己能改客户端”官方 Linux 构建文档的核心路径是:克隆仓库,准备 Flutter/Rust 环境,进入 frontend,用 cargo make 调构建脚本。
git clone https://github.com/AppFlowy-IO/AppFlowy.gitcd AppFlowy./frontend/scripts/install_dev_env/install_linux.shcd frontendcargo make --profile development-linux-x86_64 appflowy-dev逐部分解释:
git clone拿到的是整个客户端源码,而不是一个插件包。install_linux.sh会准备项目需要的开发环境;官方文档也提醒 Flutter 版本要匹配。cd frontend很关键,因为构建脚本和 Flutter 工程主要在这个目录下面。development-linux-x86_64 appflowy-dev是开发构建,适合调试;发布构建则换成production-linux-x86_64 appflowy。- 这个案例的真实用途是贡献代码、排查 bug,或学习大型 Flutter 桌面项目怎么组织。
案例 3:把 AppFlowy Editor 嵌进自己的 Flutter 应用
Section titled “案例 3:把 AppFlowy Editor 嵌进自己的 Flutter 应用”AppFlowy Editor 是 AppFlowy 的核心富文本编辑器组件,也作为 Flutter package 给外部项目使用。
flutter pub add appflowy_editorflutter pub getfinal editorState = EditorState.blank(withInitialText: true);final editor = AppFlowyEditor( editorState: editorState,);逐部分解释:
flutter pub add appflowy_editor把编辑器组件加进 Flutter 项目。EditorState.blank创建一个空白文档状态,像拿出一张空白纸。AppFlowyEditor是真正渲染和处理输入的编辑器 widget。- 官方还展示了从 JSON 创建文档、定制主题、定制快捷键等方式;这说明 AppFlowy 不是只有成品 App,还有可复用的编辑器积木。
- 如果你的目标是做自己的写作工具,先理解 AppFlowy Editor 比直接读完整 AppFlowy 更轻。
-
把自托管等同于免费无限协作:官方 AppFlowy Cloud 仓库说明它采用 open-core 模式,自托管免费层也有席位和访客限制。
-
Flutter / Rust 版本随手装最新:官方文档明确写了受支持的 Flutter 版本和 Rust 版本线索,版本不匹配会让构建错误变得很绕。
-
Docker 桌面容器打不开窗口:它需要访问宿主机 X server,权限或网络参数没配好时会出现
cannot open display。 -
只看主仓库不看组件仓库:AppFlowy Editor、AppFlowy Cloud 等能力分散在不同官方仓库或文档页,定位问题时要先分清模块。
适用 vs 不适用场景
Section titled “适用 vs 不适用场景”适用:
- 想要 Notion 类体验,但更在意数据控制、离线能力和自托管选择。
- 想学习大型 Flutter 桌面 / 移动应用如何接 Rust 底层能力。
- 想在自己的 Flutter 应用里使用可定制富文本编辑器。
- 团队有基础设施能力,愿意为自托管、升级和备份付出维护成本。
不适用:
- 只想要“打开网页就多人协作”,不想碰客户端、部署、版本或账号配置。
- 需要和 Notion 生态完全等价的插件、模板、自动化和第三方集成。
- 对 AGPL / open-core / 商业功能边界没有判断能力,却要把它嵌进公司闭源产品。
- 期待 AI、云同步和高级协作全部本地免费无限用。
历史小故事(可跳过)
Section titled “历史小故事(可跳过)”- 2021 年前后:AppFlowy 开始以“开源 Notion 替代品”的定位进入大众视野,核心矛盾是 Notion 好用但数据和扩展控制不够自由。
- 早期路线:项目选择 Flutter 做多端界面,选择 Rust 承担更底层、更强调性能和可靠性的部分。
- 社区增长:主仓库已经有 7 万以上 star,官网也强调有来自许多国家的社区成员和贡献者。
- 产品演进:它从笔记 / 表格 / 看板逐渐扩展到 AI、移动端、模板、站点发布和团队协作。
- 云端分化:AppFlowy Cloud 走 open-core 路线,提醒学习者别把“开源客户端”和“所有云服务完全开源免费”混为一谈。
- AppFlowy 的关键词不是“复制 Notion”,而是“把工作台的控制权还给用户和团队”。
- Flutter + Rust 的组合适合做跨平台客户端:界面统一,底层能力可以更稳。
- 自托管不是按钮,而是一组长期责任:部署、升级、备份、权限、费用和许可证都要一起算。
- 真正值得学的不是某个页面怎么用,而是它如何把成品应用、可复用编辑器组件和云端协作拆开。
- 官方仓库:AppFlowy-IO/AppFlowy(README、release、issue 都从这里进)
- 官方文档:Start here(先理解数据控制、多平台和可扩展定位)
- 构建文档:Building from Source(按系统选择 Linux / macOS / Windows)
- 编辑器组件:appflowy_editor on pub.dev(学习富文本编辑器积木)
- notion —— AppFlowy 最常被拿来对比的封闭式协作工作台
- flutter —— AppFlowy 客户端 UI 的主要技术栈
- flutter —— AppFlowy 用它做跨平台客户端界面。
- rust —— AppFlowy 用它支撑更底层的可靠性和性能需求。
- notion —— AppFlowy 的产品定位需要通过 Notion 对比来理解。
- docker —— 官方给了 Docker 运行客户端和自托管相关路径。
- rich-text-editor —— AppFlowy Editor 的核心就是可定制富文本编辑。
- self-hosting —— AppFlowy 的差异点之一是让团队可以自己掌控部署。
(暂无反向链接)