Skip to content

Setup

  • Rust (stable)
  • Flutter SDK
  • flutter_rust_bridge_codegen CLI
Terminal window
# Dart / Flutter
flutter pub get # Install dependencies
flutter analyze # Static analysis
cd example && flutter run -d chrome # Run example app
# Rust
cargo test --workspace # Run all Rust tests
cargo check --workspace # Check all crates compile
# FRB Codegen (from packages/modality/)
flutter_rust_bridge_codegen generate # Regenerate Dart bindings
  • Directorycrates/
    • Directoryapi/ FRB API layer (rust_input entry)
    • Directorycore/ Core traits: Reducer, Component, Modality, Slot, Effects, StoreBackend
    • Directorysession/ Session, Doc, CompileCache, ReduceIntent, HasChildren
    • Directorysync/ Loro extensions, sync protocol
    • Directorydoc/ Documentation utilities
    • Directorymacros/ Derive macros (LoroMapWrite, etc.)
    • Directorymodality/
      • Directorywhiteboard/ Whiteboard modality
      • Directoryworksheet/ Worksheet modality
      • Directorylesson/ LessonPlan modality
      • Directoryassessment/ Assessment modality
    • Directoryplatform/
      • Directoryai/ AI bridge (chat context, tool dispatch)
      • Directoryexecutor/ Async executor
      • Directoryexport/ PDF export
      • Directoryremote/ ResourceClient (GraphQL), RemoteBackend
      • Directorystore/ LocalBackend (file-based persistence)
  • Directorypackages/
    • Directorymodality/ Dart package with FRB bindings
      • Directorylib/src/rust/ Generated FRB output
      • flutter_rust_bridge.yaml
    • Directorymodality_editor/ Editor UI (property editors, canvas, chat)
  • Directoryapps/
    • Directorystudio/ Studio app (main entry point)
CrateRole
modality_corePure traits + types. Zero platform deps.
modality_sessionSession<M,I>, Doc<S>, CompileCache. Depends on core + doc.
modality_aiAI bridge, chat context, tool dispatch. No Session knowledge.
modality_exportPDF export. No Session knowledge.
Modality cratesImplement Reducer + Component + Modality for each modality.
modality_rust / APIFRB entry point. Thin open/dispatch/close API.