AppFlowy-IO/AppFlowy

AppFlowy

用 Flutter 与 Rust 拆解一款本地优先的跨平台知识工作区

难度
较难
适合
入门 / 进阶
主要语言
Dart
GitHub
75.1k
许可证
AGPL-3.0
快照日期
2026年8月10日

先判断要不要学

这个项目值得拆什么?

AppFlowy 是一款强调数据控制权的开源知识工作区,覆盖文档、数据库视图、项目协作与 AI 辅助,并以同一套 Flutter 客户端支持桌面和移动平台。这个仓库把可见的 Dart 界面与 Rust 文档、数据库、搜索、存储和同步适配层连接起来,适合学习本地优先产品如何在原生体验、数据模型与跨语言边界之间取舍;完整云端协作服务位于独立仓库。

  1. 01

    文档与数据库视图都是熟悉的生产力场景,可以从一个组件或交互开始学习

  2. 02

    Flutter 界面、Rust 领域模块和 Dart FFI 边界清晰,展示了跨平台复杂产品的真实分层

  3. 03

    本地数据能力与云端协作解耦,便于讨论离线可用、同步和数据控制权

可以学什么

不只是看代码,而是找到产品的骨架

  • 学界面
  • 学产品结构
  • 学数据库
  • 学 AI 接入
  • 学部署
  • 学完整项目组织
01

可见界面与领域核心分层

从 Flutter 页面追踪到 Rust 文档或数据库模块,理解跨语言架构如何避免把业务规则散落在组件中。

frontend/appflowy_flutter/lib · frontend/rust-lib/flowy-document · frontend/rust-lib/flowy-database2
02

本地优先的数据底座

观察本地存储、搜索与协作数据整合层如何让客户端在不依赖持续联网时仍具备核心价值。

frontend/rust-lib/flowy-sqlite · frontend/rust-lib/flowy-search · frontend/rust-lib/collab-integrate
03

同一产品的多平台交付

比较 Android、iOS、macOS、Windows、Linux 和 Web 工程入口,识别共享 Flutter 代码之外仍需维护的平台配置。

frontend/appflowy_flutter/android · frontend/appflowy_flutter/ios · frontend/appflowy_flutter/macos · frontend/appflowy_flutter/windows · frontend/appflowy_flutter/linux · frontend/appflowy_flutter/web
04

AI 作为工作区能力接入

通过独立的 AI 模块理解模型能力如何服务文档任务,同时保留文档与数据库的非 AI 主链路。

frontend/rust-lib/flowy-ai · frontend/rust-lib/flowy-ai-pub · frontend/appflowy_flutter/lib

三段学习路径

从理解、修改到做出你的版本

0130 分钟先跑通

建立 AppFlowy 客户端的代码地图。

  1. 先读 README 的产品定位与平台范围
  2. 查看 frontend 下 Flutter 与 rust-lib 的边界
  3. 在 Flutter lib 中找到一个熟悉的文档或设置界面
  4. 在 rust-lib 中定位对应领域模块

完成标志:能说明界面、领域逻辑、本地存储与云端服务分别位于哪里。

022 小时动手改

完成一个不触及同步协议的界面改造。

  1. 选择空状态、快捷操作或设置项等小需求
  2. 定位 Flutter 组件与状态来源
  3. 复用现有主题和本地化约定
  4. 补充桌面与移动宽度下的交互检查

完成标志:得到一个符合现有设计语言、跨屏幕可用的客户端功能。

031 天做变体

追踪一个文档动作跨越 Dart 与 Rust 的完整链路。

  1. 选择创建块、修改标题或更新数据库单元格等单一动作
  2. 从 Flutter 事件找到 FFI 调用
  3. 定位 Rust 的公开接口与领域模块
  4. 确认数据落盘和错误返回方式
  5. 为离线、失败与重复操作设计验证用例

完成标志:得到一份标注界面、桥接、领域模型和持久化责任的端到端学习记录。

评分解释

每一分都要说清楚为什么

可复刻性16 / 25
16 / 25

局部 Flutter 功能可复刻,完整编辑器、协作与跨平台构建门槛较高。

文档与代码清晰度17 / 20
17 / 20

Flutter 与 Rust 顶层分工明确,深入功能时仍需跨多个 crate 和桥接层。

新手学习价值16 / 20
16 / 20

产品任务直观,适合有基础的学习者按单一流程深入。

产品完整度15 / 15
15 / 15

文档、数据库视图、项目协作、AI 与多平台客户端均较成熟。

vibe coding 代表性8 / 10
8 / 10

适合用 AI 辅助定位跨语言调用和制作局部体验,但数据一致性必须人工验证。

活跃度5 / 5
5 / 5

仓库持续发布并保持较活跃的开发。

新颖性4 / 5
4 / 5

本地优先知识工作区与 Flutter、Rust 组合具有较强参考价值。