Skip to content

Overview

Modality is a Flutter/Rust library for building interactive educational content. It provides three modalities — Whiteboard, Worksheet, and Lesson Plan — each with template compilation, Loro CRDT sync, and AI-powered generation.

graph TD
A[modality_core] -->|pure traits + types| B[modality_session]
B -->|Session orchestrator| C[modality_ai]
B --> D[modality_export]
C --> E[Whiteboard]
C --> F[Worksheet]
C --> G[Lesson Plan]
D --> E
D --> F
D --> G
E --> H[modality_rust / API]
F --> H
G --> H
H --> I[Flutter / Dart]

Each modality (Whiteboard, Worksheet, LessonPlan) implements three core traits:

TraitConcern
ReducerState management via static reduce() + instance dispatch()
ComponentCompilation from state to rendered output
ModalityLayout orchestration, placements, snapshots
  • Element — leaf rendered primitive (things on the canvas/page)
  • Component — reusable templated layout that compiles to elements
  • Position — modality-specific spatial info (WhiteboardPosition, GridPosition, SlidePosition)
  • ComponentPlacement<P> — a placed component instance stored in synced state
  • Session<M, I> — single orchestrator that owns modality, persistence, cache, AI, and export
LayerTechnology
UIFlutter / Dart
BridgeFlutter Rust Bridge (FRB)
CoreRust (traits, state, compilation)
PersistenceLoro CRDT
AIrig-core (OpenAI compatible)
ExportPDF via modality_export
graph TD
CORE[modality_core] -->|pure traits + types| SESSION[modality_session]
SESSION -->|Session orchestrator| AI[modality_ai]
SESSION --> EXPORT[modality_export]
AI --> MOD[modality crates]
EXPORT --> MOD
MOD --> API[modality_rust / API]