The AppFlowy project is an attempt to build a high performance application. Here are the top-level requirements for our system.
- High Performance.
- Cross-platform.
- Reliability.
- Safety.
Here is the event flow:
- User clicks on a
Widget
(The user interface) that invokes theBloc
actions. Bloc
calls the repositories to perform additional operations to handle the actions.Repository
offers the functionalities by combining the event, defined in theFlowySDK
.Events
are be passed in theFlowySDK
through the FFI interface.Dispatcher
parses the event and generates the specific action scheduled in theFlowySDK
runtime.Dispatcher
finds the eventHandler
declared by theModules
.Handler
consumes the event and generates the response. The response will be returned to the widget through theFFI
.
The event flow will be discussed in two parts: the frontend implemented in flutter and the FlowySDK implemented in Rust.
The Frontend follows the DDD design pattern, you can recap from domain-driven-design.md