This code map introduces the folder hierarchy of AppFlowy.
-
app_flowy
: The flutter working directory, includes all the Dart code of AppFlowy.-
assets
:The directory contains all the resources that AppFlowy uses.
fonts
images
translations
-
lib
-
core
: -
startup
:This directory includes the initialized tasks when the application launched.
-
user
:This directory contains all the use-related components.
-
application
Defines the tasks the
user
is supposed to do. (Shouldn't find any UI code or network code) -
presentation
Consists of Widgets that are used by the
user
and also the state of the Widgets.
-
-
workspace
:This directory includes the codebase that is used to describe the user workspace.
-
application
Defines the tasks the
workspace
is supposed to do. (Shouldn't find any UI code or network code) -
presentation
Consists of Widgets that are used by the
workspace
and also the state of the Widgets.
-
-
-
packages
-
appflowy_board
:This directory contains all the codes that are used to build the BoardView.
-
appflowy_editor
:This directory contains all the codes that are used to build the FlowyEditor.
-
flowy_infra
:This directory contains the shared Dart code that is used by AppFlowy. Such as the shared text-style configuration, and theme configuration. etc.
-
flowy_infra_ui
:This directory contains the shard Flutter widget that is used by AppFlowy. You can reuse the widgets here before designing to write a new widget.
-
appflowy_backend
:This directory contains the codes that are used to communicate with the backend. Such as the Dart protobuf class definitions, FFI interface, and the dispatch event definitions.
-
-
-
rust-lib
This directory is the backend code base that is written in Rust.
-
dart-ffi
:This crate defines the FFI interfaces that are used to communicate with the frontend.
-
dart-notify
This crate defines how to send a notification from backend to frontend.
-
flowy-database
This crate contains the SQLite database definition.
-
flowy-folder
This crate defines each workspace struct. A workspace contains a list of Apps, each App contains a list of Views, and each View can be a TextEditor, Grid, or Board.
-
flowy-grid
This crate handles all the Grid operations, such as creating a grid or deleting a row in a grid.
-
flowy-document
This crate help to save the text editor data to disk.
-
flowy-user
This crate handles all the user-related operations.
-
flowy-core
This crate is used to initial each crate including resolving their dependencies. It encapsulates all the abilities provided by the other crates.
-
-
scripts