Project Structure: CodeMap
This code map introduces the folder hierarchy of AppFlowy.
appflowy_flutter
: 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 is launched.
user
:This directory contains all the user-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
Last updated
Was this helpful?