本文档全面介绍了AppFlowy作为一款软件系统,涵盖了其核心理念、架构设计和关键组件。它为理解AppFlowy如何实现一个开源、隐私优先的协同工作空间工具(如Notion)替代方案奠定了基础。
有关Flutter前端架构的具体实现细节,请参阅前端架构和应用程序初始化。有关后端服务组织和Rust核心系统,请参阅后端架构和核心服务。开发设置和构建过程在入门和安装中有所涵盖。
AppFlowy是一个开源的协同工作空间应用程序,其设计基于三个基本原则:数据隐私优先、可靠的原生体验和社区驱动的可扩展性。与云优先的替代方案不同,AppFlowy让用户完全控制他们的数据,同时提供现代生产力工具所期望的丰富功能。
该系统结合了基于Flutter的跨平台前端和Rust驱动的后端,支持文档、数据库、AI集成以及在桌面和移动平台上的实时协作。
| 原则 | 实现 |
|---|---|
| 数据隐私优先 | 本地优先架构,可选自托管云同步 |
| 原生体验 | Flutter UI,针对桌面和移动设备进行平台特定适配 |
| 社区可扩展性 | 具有插件架构和模块化设计的开源代码库 |
来源: README.md108-149
AppFlowy采用分层架构,清晰地分离了用户界面、业务逻辑和数据持久化层。
来源: 提供的系统架构图,README.md54-58
AppFlowy的架构基于两项主要技术,这些技术使其具备跨平台能力和性能特征
该系统优先考虑本地数据存储和处理,云同步作为可选的增强功能而非必需。
来源: README.md129-133 系统架构图
Flutter前端围绕主要功能区域组织,每个区域都作为独立的页面组件和支持系统实现
| 组件 | 主要类 | 目的 |
|---|---|---|
| 文档编辑器 | AppFlowyEditorPage | 具有块级架构的富文本编辑 |
| AI聊天 | AIChatPage | 会话式 AI 界面 |
| 导航 | HomeSideBar | 工作区导航和视图管理 |
| 数据库视图 | 各种视图专用小部件 | 网格、看板和日历界面 |
| 移动适配 | 平台特定实现 | 触控优化的移动界面 |
Rust后端通过专门的管理器类提供核心业务逻辑和数据管理
来源: 系统架构图,README.md54-58
AppFlowy实现了Flutter前端和Rust后端之间的事件驱动通信模式,确保类型安全和高性能的数据交换。
该应用程序使用BLoC(业务逻辑组件)模式进行状态管理,提供可预测的状态转换以及UI和业务逻辑之间的清晰分离。
来源: 系统架构图,Flutter前端模式
AppFlowy支持多种部署场景和平台
| 平台 | 分发方式 | 实现说明 |
|---|---|---|
| 桌面 | 直接下载、FlatHub、Snapcraft | 原生Flutter桌面实现 |
| 移动端 | App Store (iOS), Play Store (Android) | 平台特定的移动适配 |
| 自托管 | Docker 容器 | 完整的服务器部署 |
| 开发 | 源代码编译 | 完整的开发环境 |
该项目使用cargo-make进行跨平台构建协调,支持所有目标平台的一致构建,同时管理Flutter-Rust集成的复杂性。
来源: README.md42-53 README.md64-67
AppFlowy通过全面的国际化系统支持20多种语言,翻译文件在/frontend/resources/translations中管理。该系统集成了在线翻译工具,并支持自动化翻译工作流。
来源: README.md94-101
这一架构基础使AppFlowy能够兑现其隐私、原生性能和可扩展性的核心承诺,同时保持用户对现代协同工作空间工具所期望的丰富功能。