菜单

项目结构与技术栈

相关源文件

本文档概述了 AppFlowy 的项目结构、技术选择和架构组织。它涵盖了高层目录布局、核心技术栈决策以及 Flutter 前端和 Rust 后端如何构建和集成。

有关应用程序初始化过程的详细信息,请参阅前端架构和应用程序初始化。有关后端服务架构详情,请参阅后端架构和核心服务

架构概述

AppFlowy 采用**混合架构**,结合了 Flutter 前端和 Rust 后端,旨在实现跨平台部署同时保持原生性能。该系统支持仅本地操作模式和云同步操作模式。

来源: README.md54-58 frontend/appflowy_flutter/lib/startup/tasks/app_widget.dart127-143

项目目录结构

该仓库清晰地分离了前端和后端职责

目录目的技术
frontend/所有 Flutter 相关代码和资源Flutter/Dart
frontend/appflowy_flutter/主 Flutter 应用程序Flutter/Dart
frontend/resources/静态资源、翻译文件JSON、资产文件
后端目录Rust 核心服务和逻辑Rust
doc/文档和指南Markdown
构建脚本跨平台构建自动化Shell, Batch

来源: .gitignore1-44 README.md42-52 frontend/scripts/code_generation/language_files/generate_language_files.sh46-52

前端架构 (Flutter)

Flutter 前端以 ApplicationWidget 为根组件组织,实现了 BLoC 模式进行状态管理,并支持全面的国际化。

核心前端组件

来源: frontend/appflowy_flutter/lib/startup/tasks/app_widget.dart41-125 frontend/appflowy_flutter/lib/startup/deps_resolver.dart45-193

依赖注入系统

前端通过 DependencyResolver 使用了一套全面的依赖注入系统

来源: frontend/appflowy_flutter/lib/startup/deps_resolver.dart106-141 frontend/appflowy_flutter/lib/startup/deps_resolver.dart77-104

技术栈

核心技术

技术目的
前端Flutter 3.x跨平台 UI 框架
后端Rust高性能核心服务
状态管理BLoC 模式可预测的状态管理
导航GoRouter声明式路由
存储SQLite本地数据持久化
FFIflutter_rust_bridgeFlutter-Rust 通信

平台支持矩阵

来源: README.md44-51 README.md54-58

国际化系统

AppFlowy 通过使用 easy_localization 包的全面 i18n 系统支持 20 多种语言

语言支持架构

支持的语言环境

该应用程序支持在 ApplicationWidget 中定义的以下区域设置:

来源: frontend/appflowy_flutter/lib/startup/tasks/app_widget.dart75-110 frontend/appflowy_flutter/packages/flowy_infra/lib/language.dart3-95 project.inlang/settings.json4-35

主题和外观系统

AppFlowy 实现了一套复杂的主题系统,支持浅色/深色模式、自定义主题和广泛的外观定制。

来源: frontend/appflowy_flutter/lib/workspace/application/settings/appearance/appearance_cubit.dart35-306 frontend/appflowy_flutter/lib/startup/deps_resolver.dart92-94

构建和开发系统

该项目使用 cargo-make 进行任务编排,并支持多种开发工作流。

开发工具

工具目的用途
cargo-make任务编排跨平台构建
flutter pub get依赖管理包安装
easy_localization:generatei18n 代码生成翻译编译
Docker容器化自托管部署
GitHub ActionsCI/CD自动化测试和发布

来源: README.md155 frontend/scripts/code_generation/language_files/generate_language_files.sh57-78 frontend/scripts/code_generation/language_files/generate_language_files.cmd18-26

配置和许可

AppFlowy 在 AGPLv3 许可下发布,并包含用于开发和部署的全面配置

关键配置文件

.gitignore 配置排除了

  • Rust 构建产物 (/target/, **/*.rs.bk)
  • Flutter 构建输出 (package-lock.json, yarn.lock)
  • 生成的协议缓冲区 (**/resources/proto)
  • 开发产物 (.idea/, **/.DS_Store)

来源: .gitignore1-44 LICENSE1-588 project.inlang/settings.json1-49 doc/CONTRIBUTING.md1-8