🗺️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.
fontsimagestranslations
libcore:startup:This directory includes the initialized tasks when the application is launched.
user:This directory contains all the user-related components.
applicationDefines the tasks the
useris supposed to do. (Shouldn't find any UI code or network code)presentationConsists of Widgets that are used by the
userand also the state of the Widgets.
workspace:This directory includes the codebase that is used to describe the user workspace.
applicationDefines the tasks the
workspaceis supposed to do. (Shouldn't find any UI code or network code)presentationConsists of Widgets that are used by the
workspaceand also the state of the Widgets.
packagesappflowy_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-libThis 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-notifyThis crate defines how to send a notification from backend to frontend.
flowy-databaseThis crate contains the SQLite database definition.
flowy-folderThis 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-gridThis crate handles all the Grid operations, such as creating a grid or deleting a row in a grid.
flowy-documentThis crate help to save the text editor data to disk.
flowy-userThis crate handles all the user-related operations.
flowy-coreThis 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?

